Plugin Directory

Changeset 2779093


Ignore:
Timestamp:
09/02/2022 05:36:10 AM (3 years ago)
Author:
loymax
Message:

Правки метода получения детального баланса

Location:
loymaxapp/trunk
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • loymaxapp/trunk/loymax-app.php

    r2768816 r2779093  
    44 * Plugin Name: LoymaxWebApp
    55 * Description: Loymax loyalty program User Portal configuration.
    6  * Version: 3.3.7
     6 * Version: 3.3.8
    77 * Author URI:  https://loymax.ru/
    88 * Author: Loymax solutions
  • loymaxapp/trunk/public/app.min.js

    r2768816 r2779093  
    11/**
    2  * Loymax v2.2.20220810 (http://loymax.ru)
     2 * Loymax v2.2.20220902 (http://loymax.ru)
    33 * Copyright 2011-2022 Loymax, Inc.
    44 * License: MIT
     
    90519051"use strict";!function(e){e.module("lmxApp").directive("lmxAnonymousFeedback",["$window","configurationService","userAlertService","translateFilter",function(e,o,s,t){return{restrict:"E",replace:!0,scope:!0,templateUrl:"app/directives/anonymousFeedback/anonymousFeedback.html",link:function(n){var a=o.components.support.supportEmail||"[email protected]";n.messageModel={message:"",subject:""},n.sendMail=function(o){o.$submitted=!1,e.location.href="mailto:"+a+"?subject="+encodeURIComponent(n.messageModel.subject)+"&body="+encodeURIComponent(n.messageModel.message),s(t("anonymousFeedback.alerts.mailClient",{supportEmail:a}),"success")}}}}])}(angular);
    90529052"use strict";!function(e){e.module("lmxApp").directive("lmxAuthentication",["$log","$rootScope","$translate","$http","$window","authService","configurationService","resetPasswordService","routingService","shareAuthLoginToRegistration","notification","translateFilter","IDENTIFIERS","resendService",function(t,o,i,n,r,a,s,c,d,u,l,g,f,h){return{restrict:"E",replace:!0,scope:!0,templateUrl:"app/directives/authentication/authentication.html",link:function(t){function i(){t.loginForm.$submitted=!1}function n(){var o;return o=t.cvcRequired?t.model.cvcData:t.model.loginData,e.copy(o)}t.model={loginData:{login:"",password:""},cvcData:{password:""},identifier:s.identifiers.authentication[0]},t.cvcRequired=!1,t.identifiers={arr:s.identifiers.authentication},t.authWithPassword=s.common.authWithPassword,t.resendTimer=h.getTimer(h.requestEnums.sendConfirmCodeTwoFactor),t.IDENTIFIERS=f,t.registrationUrl=d.pages.registration;var r="login";a.setArea(r),t.resetFormModels=function(){t.model.loginData={login:"",password:""},t.model.cvcData.password="",i()},a.loggedIn()&&d.goToDefault(),t.authentication=a.authentication,t.login=function(){o.authInProcess=!0,t.authInProgress=!0;var e=n();a.login(e,t.cvcRequired,t.authWithPassword).then(function(){a.loggedIn()?d.goToDefault():s.components.registration.forceRegistrationStartOnLoginAttempt||(t.authInProgress=!1)},function(e){t.authInProgress=!1,"TwoFactorAuthenticationCodeRequired"===e.data.error&&(h.setTimer(h.requestEnums.sendConfirmCodeTwoFactor),i(),l.clearNotifications("login"),t.cvcRequired=!0,t.cvcMessage=e.data.error_description)})["finally"](function(){o.authInProcess=!1})},t.cancelCvcConfirmation=function(){t.resetFormModels(),t.cvcRequired=!1},t.resetPassword=function(){"phone"===t.model.identifier&&c.setResetPasswordConfirmationData({data:t.model.loginData.login,identifier:t.model.identifier}),d.goTo("reset-password")},t.resendCode=function(){t.authInProgress=!0,a.resendCode().then(function(){h.setTimer(h.requestEnums.sendConfirmCodeTwoFactor),l.addMessage(g("authentication.resendCodeCompleted"),r)})["finally"](function(){t.authInProgress=!1})},s.components.authentication.shareAuthLoginToRegistration&&(t.$watch("model.loginData.login",function(e,t){e!==t&&(u.loginAuth=e)}),t.$watch("model.identifier",function(e,t){e!==t&&u.setIdentifier(e)}),t.$on("$locationChangeStart",function(e,t){"registration"!==d.getApplicationURL(t)&&u.clearLogin()}))}}}])}(angular);
    9053 "use strict";!function(e){e.module("lmxApp").directive("lmxBalance",["numberFilter","translatePluralService","userService",function(e,n,c){return{restrict:"E",replace:!0,scope:!0,templateUrl:"app/directives/balance/balance.html",link:function(r){r.inProgress=!0,r.selectedAccount={},r.selectedCurrency=null,r.openedAccordion={},r.getCurrencyNameCase=function(e){switch(n.getTranslationKey(e)){case"one":return"nominative";case"few":return"genitive";default:return"plural"}},c.getDetailedBalance().then(function(n){r.balanceAccounts=n.items,r.balanceAccounts.forEach(function(n){n.id=n.currency.id,r.openedAccordion[n.currency.id]=!1,n.title=e(n.amount,2)+" "+n.currency.nameCases[r.getCurrencyNameCase(n.amount)],n.lifeTimesByPeriod=n.lifeTimesByPeriod.filter(function(e){return e.activationAmount||e.expirationAmount})})})["finally"](function(){r.inProgress=!1}),r.selectAccordion=function(e){r.selectedCurrency=e.currency,r.openedAccordion[e.currency.id]=!r.openedAccordion[e.currency.id]}}}}])}(angular);
     9053"use strict";!function(e){e.module("lmxApp").directive("lmxBalance",["numberFilter","translatePluralService","userService",function(e,n,c){return{restrict:"E",replace:!0,scope:!0,templateUrl:"app/directives/balance/balance.html",link:function(r){r.inProgress=!0,r.selectedAccount={},r.selectedCurrency=null,r.openedAccordion={},r.getCurrencyNameCase=function(e){switch(n.getTranslationKey(e)){case"one":return"nominative";case"few":return"genitive";default:return"plural"}},c.getDetailedBalance({state:"NonArchived"}).then(function(n){r.balanceAccounts=n.items,r.balanceAccounts.forEach(function(n){n.id=n.currency.id,r.openedAccordion[n.currency.id]=!1,n.title=e(n.amount,2)+" "+n.currency.nameCases[r.getCurrencyNameCase(n.amount)],n.lifeTimesByPeriod=n.lifeTimesByPeriod.filter(function(e){return e.activationAmount||e.expirationAmount})})})["finally"](function(){r.inProgress=!1}),r.selectAccordion=function(e){r.selectedCurrency=e.currency,r.openedAccordion[e.currency.id]=!r.openedAccordion[e.currency.id]}}}}])}(angular);
    90549054"use strict";!function(e){e.module("lmxApp").directive("balanceInfo",["userService",function(e){return{restrict:"E",replace:!0,scope:!0,templateUrl:"app/directives/balance/balanceInfo.html",link:function(t){function n(){var e=[],n=[];t.selectedAccount&&t.selectedAccount.lifeTimesByTime.length&&t.selectedAccount.lifeTimesByTime.forEach(function(t){return t.amount<0?e.push(t.amount):n.push(t.amount)}),e.length&&(t.weekWithdrawAmount=e.reduce(function(e,t){return e+t})),n.length&&(t.weekRewardAmount=n.reduce(function(e,t){return e+t}))}t.fromDate=new Date,t.toDate=(new Date).addDays(45),t.onPage=10,t.from=0,t.currentPage=1,t.operations={},t.weekRewardAmount=0,t.weekWithdrawAmount=0;var r=function(){t.fromDate=new Date,t.toDate=(new Date).addDays(45),t.from=0,t.currentPage=1,t.getCurrencyInfo(),n()};t.$watch("selectedAccount",function(e,t){t!==e&&r()}),t.getCurrencyInfo=function(){n(),t.inProgress=!0;var r=t.fromDate?new Date(t.fromDate.setHours(0,0,0,0)):null,o=t.toDate?new Date(t.toDate.setHours(23,59,59,999)).toUTCDate(!0):null;t.from=(t.currentPage-1)*t.onPage,e.getCurrencyDetailedBalance(t.selectedAccount.currency.id,r,o,t.activation,t.expiration,t.from,t.onPage).then(function(e){t.operations[t.selectedAccount.currency.id]=e})["finally"](function(){t.inProgress=!1})},t.getCurrencyInfo()}}}])}(angular);
    90559055"use strict";!function(e){e.module("lmxApp").directive("lmxBalanceChanges",["$q","balanceChangesService",function(e,t){return{restrict:"E",replace:!0,scope:{fromDate:"=",toDate:"=",cardId:"="},templateUrl:"app/directives/balanceChanges/balanceChanges.html",link:function(a){function r(){a.model.isEmpty=!(a.model.aggregateWithdrawRewardPurchase&&(a.model.aggregateWithdrawRewardPurchase.rewards.length||a.model.aggregateWithdrawRewardPurchase.purchaseAmount.length||a.model.aggregateWithdrawRewardPurchase.withdraws.length)||a.model.percentageOfBonuses&&a.model.percentageOfBonuses.length),a.$emit("balanceChangesIsEmpty",a.model.isEmpty)}function n(){if(!a.fromDate||void 0===a.toDate)return Promise.reject();var e=a.fromDate?new Date(a.fromDate.setHours(0,0,0,0)):null,r=a.toDate?new Date(a.toDate.setHours(23,59,59,999)):null;return t.getBalanceChangeHistory(e.toUTCDate(!0),r.toUTCDate(!0)).then(function(e){var t=e.attributeValueHistoryItems;if(t.length){var r=t[0],n=t[t.length-1],o=n.createDateTime.getFullYear(),i=a.fromDate.getFullYear();if(n.createDateTime<a.fromDate){var s=o!==i?i:o;n.createDateTime=new Date(a.fromDate.setFullYear(s)).toUTCDate(!0)}r.changeDateTime=a.toDate.toUTCDate(!0),a.model.percentageOfBonuses=e.attributeValueHistoryItems}a.model.percentageOfBonuses=e.attributeValueHistoryItems})}function o(){if(!a.fromDate||void 0===a.toDate)return Promise.reject();var e=a.fromDate?new Date(a.fromDate.setHours(0,0,0,0)):null,r=a.toDate?new Date(a.toDate.setHours(23,59,59,999)):null;return t.getAggregateWithdrawRewardPurchase(e.toUTCDate(!0),r.toUTCDate(!0),parseInt(a.cardId,10)||null).then(function(e){a.model.aggregateWithdrawRewardPurchase=e})}function i(){a.inProgress=!0;var t=n(),i=o();e.all([t,i])["finally"](function(){a.inProgress=!1,a.limit=1,r()})}a.inProgress=!1,a.model={percentageOfBonuses:[],aggregateWithdrawRewardPurchase:[],isEmpty:!0},a.limit=1,a.$watchGroup(["fromDate","toDate"],function(){i()}),a.$watch("cardId",function(){a.inProgress=!0,o()["finally"](function(){a.inProgress=!1,r()})}),a.changeLimit=function(){a.limit=1===a.limit?a.model.percentageOfBonuses.length:1},i()}}}])}(angular);
     
    92479247"use strict";!function(t){t.module("lmxApp").factory("stateService",function(){function t(t,e){n[t]=e}function e(t){return n[t]}var n={};return{setState:t,getState:e}})}(angular);
    92489248"use strict";!function(e){e.module("templateCache",[])}(angular);
    9249 "use strict";!function(t){t.module("lmxApp").service("userService",["$http","$q","$rootScope","configurationService","backendEnumsService","localStorageService",function(n,e,r,a,u,o){function i(){var t={userInfo:c(),userBalance:f()};return e.all(t).then(function(t){var n=t.userInfo;return n.balanceAccounts=t.userBalance,n.baseBalanceAccount=n.balanceAccounts[0],n})}function c(t){if(b)return e.when(b);var r={};return t&&(r.headers={Authorization:t.data.token_type+" "+t.data.access_token}),n.get(B,r).then(function(t){return t.data.state&&t.data.state===u.enums.userStatus.registered&&(b=t.data),t.data})}function s(){b=null}function f(){return n.get(A+"Balance").then(function(t){return t.data})}function l(){return n.get(B+"DetailedBalance").then(function(t){return t.data})}function p(t,e,r,a,u,i,c){var s=[];a&&s.push("BonusActivation"),u&&s.push("BonusExpiration");var f={"filter.fromDate":e?e.toUTCDate(!0):null,"filter.toDate":r?r.toUTCDate(!0):null,"filter.changeTypes":s};return 2021!==o.get("version").major&&2022!==o.get("version").major||1!==o.get("version").minor?(f["filter.from"]=i,f["filter.count"]=c):(f.from=i,f.count=c),n.get(B+"DetailedBalance/"+"".concat(t,"/Operations"),{params:f}).then(function(t){return t.data})}function g(){return n.get(B+"Attributes").then(function(n){var e={};return t.forEach(n.data,function(t){e[t.info.logicalName]=t}),e})}function d(t){return n.get(B+"Subscriptions",{params:{subscriptionExternalIds:t}}).then(function(t){return t.data})}function h(){return n.post(a.host+"/v1.2/User/Subscriptions/Reject",{}).then(function(t){return t.data})}function v(){return n.post(a.host+"/v1.2/User/Subscriptions/Confirm",{}).then(function(t){return t.data})}function S(t){return n.post(B+"Subscriptions",t).then(function(t){return t})}function m(){return n.get(B+"Status").then(function(t){return t.data})}var b,B=a.host+"api/User/",A=a.host+"v1.1/User/";return{getUserInfo:i,getDetailedBalance:l,getCurrencyDetailedBalance:p,getBalance:f,getAttributes:g,getSubscriptions:d,setSubscriptions:S,getUserStatus:m,getUser:c,removeUserData:s,rejectAllSubscriptions:h,confirmAllSubscription:v}}])}(angular);
     9249"use strict";!function(t){t.module("lmxApp").service("userService",["$http","$q","$rootScope","configurationService","backendEnumsService","localStorageService",function(e,n,r,a,u,o){function i(){var t={userInfo:c(),userBalance:f()};return n.all(t).then(function(t){var e=t.userInfo;return e.balanceAccounts=t.userBalance,e.baseBalanceAccount=e.balanceAccounts[0],e})}function c(t){if(b)return n.when(b);var r={};return t&&(r.headers={Authorization:t.data.token_type+" "+t.data.access_token}),e.get(B,r).then(function(t){return t.data.state&&t.data.state===u.enums.userStatus.registered&&(b=t.data),t.data})}function s(){b=null}function f(){return e.get(A+"Balance").then(function(t){return t.data})}function l(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{state:null};return e.get(B+"DetailedBalance",{params:{state:t.state}}).then(function(t){return t.data})}function p(t,n,r,a,u,i,c){var s=[];a&&s.push("BonusActivation"),u&&s.push("BonusExpiration");var f={"filter.fromDate":n?n.toUTCDate(!0):null,"filter.toDate":r?r.toUTCDate(!0):null,"filter.changeTypes":s};return 2021!==o.get("version").major&&2022!==o.get("version").major||1!==o.get("version").minor?(f["filter.from"]=i,f["filter.count"]=c):(f.from=i,f.count=c),e.get(B+"DetailedBalance/"+"".concat(t,"/Operations"),{params:f}).then(function(t){return t.data})}function g(){return e.get(B+"Attributes").then(function(e){var n={};return t.forEach(e.data,function(t){n[t.info.logicalName]=t}),n})}function d(t){return e.get(B+"Subscriptions",{params:{subscriptionExternalIds:t}}).then(function(t){return t.data})}function h(){return e.post(a.host+"/v1.2/User/Subscriptions/Reject",{}).then(function(t){return t.data})}function v(){return e.post(a.host+"/v1.2/User/Subscriptions/Confirm",{}).then(function(t){return t.data})}function m(t){return e.post(B+"Subscriptions",t).then(function(t){return t})}function S(){return e.get(B+"Status").then(function(t){return t.data})}var b,B=a.host+"api/User/",A=a.host+"v1.1/User/";return{getUserInfo:i,getDetailedBalance:l,getCurrencyDetailedBalance:p,getBalance:f,getAttributes:g,getSubscriptions:d,setSubscriptions:m,getUserStatus:S,getUser:c,removeUserData:s,rejectAllSubscriptions:h,confirmAllSubscription:v}}])}(angular);
    92509250angular.module("templateCache").run(["$templateCache",function(n){n.put("app/directives/announcement/modal/announcementModal.html",'<div>\r\n    <div class="modal-header">\r\n        <div class="lmx-modal-closer" ng-click="close()"></div>\r\n        <h2>{{:: announcement.attributes.OfferTitle.value}}</h2>\r\n    </div>\r\n\r\n    <div class="modal-content-wrapper">\r\n        <div class="modal-body">\r\n            <div class="lmx-image">\r\n                <img ng-src="{{:: getAnnouncementImagePath(announcement.attributes.OfferImage.value)}}" fallback-image="" fallback-title="{{\'imageNotFound\' | translate}}" alt="">\r\n            </div>\r\n            <div class="lmx-description">{{:: announcement.attributes.OfferDescription.value}}</div>\r\n        </div>\r\n        <div class="modal-footer lmx-btn-container">\r\n            <button type="button" ng-click="close()">{{\'buttons.close\' | translate}}</button>\r\n        </div>\r\n    </div>\r\n</div>\r\n'),n.put("app/directives/announcement/modal/authAnnouncementModal.html",'<div>\r\n    <div class="lmx-modal-closer" ng-click="close()"></div>\r\n    <div loader="inProgress">\r\n        <div ng-if="!inProgress" class="modal-content-wrapper">\r\n            <div class="modal-body">\r\n                <a href="#/offers">\r\n                    <div class="lmx-image">\r\n                        <img ng-src="{{:: getAnnouncementImagePath(announcement.attributesDictionary.OfferImage.value)}}" fallback-image="" fallback-title="{{\'imageNotFound\' | translate}}" alt="" ng-click="openOffer()">\r\n                    </div>\r\n                </a>\r\n            </div>\r\n            <div class="modal-footer lmx-btn-container">\r\n                <button type="button" ng-click="close()">{{\'buttons.close\' | translate}}</button>\r\n            </div>\r\n        </div>\r\n    </div>\r\n</div>\r\n'),n.put("app/directives/announcement/offerSpace.html",'<div class="lmx-container lmx-announcements">\r\n    <section>\r\n        <h2>{{\'announcement.title\' | translate}}</h2>\r\n        <div loader="isProgress" class="lmx-announcements-list">\r\n            <article ng-repeat="announcement in announcements track by announcement.id" ng-click="openAnnouncementModal(announcement)" class="lmx-announcement lmx-card">\r\n                <div class="lmx-card-image">\r\n                    <img ng-src="{{:: getAnnouncementImagePath(announcement.attributes.OfferImage.value)}}" fallback-image="" fallback-title="{{\'imageNotFound\' | translate}}" alt="">\r\n                </div>\r\n                <div class="lmx-card-content">\r\n                    <div class="lmx-card-title" title="{{:: announcement.attributes.OfferTitle.value}}">\r\n                        {{:: announcement.attributes.OfferTitle.value}}\r\n                    </div>\r\n                    <div class="lmx-card-description">\r\n                        {{:: announcement.attributes.OfferDescription.value}}\r\n                    </div>\r\n                </div>\r\n            </article>\r\n        </div>\r\n    </section>\r\n</div>\r\n'),n.put("app/directives/anonymousFeedback/anonymousFeedback.html",'<div class="lmx-container lmx-anonymous-feedback">\r\n    <section>\r\n        <h2>{{\'anonymousFeedback.title\' | translate}}:</h2>\r\n        <div class="lmx-hint">\r\n            <p ng-bind-html="\'anonymousFeedback.hint\' | translate"></p>\r\n        </div>\r\n        <form novalidate="" name="anonFeedbackForm" ng-submit="anonFeedbackForm.$valid && sendMail(anonFeedbackForm)">\r\n            <form-group label-text="{{\'anonymousFeedback.theme\' | translate}}">\r\n                <input type="text" id="lmx-subject" ng-model="messageModel.subject" name="subject" required="">\r\n            </form-group>\r\n            <form-group label-text="{{\'anonymousFeedback.message\' | translate}}">\r\n                <textarea id="lmx-msg-textarea" ng-model="messageModel.message" name="msg-textarea" ng-trim="false" required="">\r\n                </textarea>\r\n            </form-group>\r\n            <div class="lmx-btn-container">\r\n                <button type="submit" class="lmx-right">{{\'buttons.send\' | translate}}</button>\r\n            </div>\r\n        </form>\r\n    </section>\r\n</div>\r\n'),n.put("app/directives/authentication/authentication.html",'<div class="lmx-container lmx-auth">\r\n    <h2>{{\'authentication.title\' | translate}}</h2>\r\n    <lmx-notifications area="login"></lmx-notifications>\r\n\r\n    <identifiers ng-if=":: identifiers.arr !== undefined" ng-hide="cvcRequired" identifiers="identifiers.arr" ng-model="model.identifier" ng-change="resetFormModels()"></identifiers>\r\n\r\n    <form novalidate="" method="post" name="loginForm" ng-submit="loginForm.$valid && login()" id="lmx-loginForm">\r\n        <div ng-if="cvcRequired">\r\n            <p>{{cvcMessage}}</p>\r\n            <form-group label-text="{{\'authentication.code\' | translate}}">\r\n                <input type="text" ng-model="model.cvcData.password" id="lmx-cvc" name="cvc" ng-disabled="authInProgress" required="">\r\n            </form-group>\r\n            <div>\r\n                <a id="lmx-confirm-code-repeated" ng-click="!resendTimer.time && resendCode()" ng-hide="authInProgress" href="">\r\n                    {{\'resetPassword.resendCode\' | translate}}\r\n                    <span ng-if="resendTimer.time">({{resendTimer.time}})</span>\r\n                </a>\r\n            </div>\r\n        </div>\r\n        <div ng-if="!cvcRequired">\r\n            <form-group ng-if="model.identifier === IDENTIFIERS.phone" label-text="{{\'identifiers.\' + model.identifier | translate}}">\r\n                <phone-mask></phone-mask>\r\n                <phone-input ng-model="model.loginData.login" id="lmx-login_{{model.identifier}}" name="login" ng-disabled="authInProgress" required="" autofocus=""></phone-input>\r\n            </form-group>\r\n            <form-group ng-if="model.identifier === IDENTIFIERS.email" label-text="{{\'identifiers.\' + model.identifier | translate}}">\r\n                <input type="email" ng-model="model.loginData.login" id="lmx-login_{{model.identifier}}" name="login" placeholder="[email protected]" required="">\r\n            </form-group>\r\n            <form-group ng-if="model.identifier === IDENTIFIERS.card" label-text="{{\'identifiers.\' + model.identifier | translate}}">\r\n                <input type="text" ng-model="model.loginData.login" id="lmx-login_{{model.identifier}}" name="login" ng-disabled="authInProgress" placeholder="0000 0000 0000 0000" mask="9999 9999 9999 9999" clean="true" validate="false" restrict="reject" required="">\r\n            </form-group>\r\n            <form-group label-text="{{\'authentication.password\' | translate}}" ng-if="authWithPassword">\r\n                <input type="password" ng-model="model.loginData.password" id="lmx-password" name="password" ng-disabled="authInProgress" required="">\r\n            </form-group>\r\n            <div ng-if="!cvcRequired" class="lmx-auth-links lmx-row" ng-class="{\'lmx-invisible\': authInProgress}">\r\n                <div>\r\n                    <a ng-click="resetPassword()" href="">{{\'authentication.forgotPassword\' | translate}}</a>\r\n                </div>\r\n                <div>\r\n                    <a href="{{:: registrationUrl}}">{{\'authentication.register\' | translate}}</a>\r\n                </div>\r\n            </div>\r\n        </div>\r\n        <div class="lmx-btn-container">\r\n            <button type="reset" ng-hide="authInProgress" ng-if="cvcRequired" ng-click="cancelCvcConfirmation()">\r\n                {{\'buttons.cancel\' | translate}}\r\n            </button>\r\n            <button type="submit" ng-hide="authInProgress">\r\n                {{\'authentication.login\' | translate}}\r\n            </button>\r\n\r\n            <inline-loader line="">authInProgress</inline-loader>\r\n        </div>\r\n        <lmx-social ng-if="!cvcRequired" ng-hide="authInProgress"></lmx-social>\r\n    </form>\r\n</div>\r\n'),n.put("app/directives/balance/balance.html",'<div class="lmx-container lmx-balance">\r\n    <section>\r\n        <h2>{{\'balance.title\' | translate}}</h2>\r\n        <div loader="inProgress">\r\n            <div ng-if="!inProgress" ng-switch="!!balanceAccounts.length">\r\n                <div ng-switch-when="true" class="lmx-balance-block">\r\n                    <lmx-tabs list="balanceAccounts" ng-model="selectedAccount" view-field="title">\r\n                    </lmx-tabs>\r\n                    <balance-info ng-if="selectedAccount.currency"></balance-info>\r\n                    <div class="lmx-balance-accordion-wrap">\r\n                        <uib-accordion class="lmx-balance-accordion">\r\n                            <uib-accordion-group ng-repeat="selectedAccount in balanceAccounts" class="lmx-balance-accordion-group" ng-click="selectAccordion(selectedAccount)">\r\n                                <uib-accordion-heading class="lmx-balance-header">\r\n                                    <span>{{::selectedAccount.title}}</span>\r\n                                    <span class="glyphicon glyphicon-chevron-down"></span>\r\n                                    <span class="glyphicon glyphicon-chevron-up"></span>\r\n                                </uib-accordion-heading>\r\n                                <balance-info ng-if="selectedAccount.currency.id === selectedCurrency.id"></balance-info>\r\n                            </uib-accordion-group>\r\n                        </uib-accordion>\r\n                    </div>\r\n                </div>\r\n                <div ng-switch-when="false" class="lmx-no-balance-block">\r\n                    {{\'balance.infoNotFound\' | translate}}\r\n                </div>\r\n            </div>\r\n        </div>\r\n    </section>\r\n</div>\r\n'),n.put("app/directives/balance/balanceInfo.html",'<div class="lmx-balance-tab-content">\r\n    <h3>{{selectedAccount.currency.name}}</h3>\r\n    <div class="lmx-account-description">{{selectedAccount.currency.description}}</div>\r\n    <div class="lmx-account-details">\r\n        <div>\r\n            <b>{{\'balance.amount\' | translate}}</b>: {{selectedAccount.amount | number: 2}}\r\n            {{selectedAccount.currency.nameCases[getCurrencyNameCase(selectedAccount.amount)]}}\r\n        </div>\r\n        <div>\r\n            <b>{{\'balance.notActivatedAmount\' | translate}}</b>:\r\n            {{selectedAccount.notActivatedAmount | number: 2}}\r\n            {{selectedAccount.currency.nameCases[getCurrencyNameCase(selectedAccount.notActivatedAmount)]}}\r\n        </div>\r\n\r\n        <div ng-if="selectedAccount.lifeTimesByTime.length">\r\n            <b>\r\n                {{\'balance.lastWeekChanges\' | translate}}:\r\n            </b>\r\n            <div class="lmx-lifeTime-amount">\r\n                {{ \'history.gift.rewardData\' | translate }}&nbsp;-&nbsp;{{ weekRewardAmount |\r\n                number:2 }}\r\n                {{selectedAccount.currency.nameCases[getCurrencyNameCase(weekRewardAmount)]}}\r\n                <br>\r\n                {{ \'history.gift.withdrawData\' | translate }}&nbsp;-&nbsp;{{ (weekWithdrawAmount *\r\n                -1) | number:2 }}\r\n                {{selectedAccount.currency.nameCases[getCurrencyNameCase(weekWithdrawAmount)]}}\r\n            </div>\r\n        </div>\r\n\r\n        <div ng-if="selectedAccount.lifeTimesByPeriod.length">\r\n            <div ng-repeat="lifeTime in selectedAccount.lifeTimesByPeriod track by $index">\r\n                <b>\r\n                    {{ (\'balance.lifeTimePeriod.\' + (lifeTime.period | lowerCamelCase)) |\r\n                    translate}}:\r\n                </b>\r\n                <div class="lmx-lifeTime-amount">\r\n                    {{ \'history.gift.rewardData\' | translate }}&nbsp;-&nbsp;{{\r\n                    lifeTime.activationAmount | number: 2}}\r\n                    {{selectedAccount.currency.nameCases[getCurrencyNameCase(lifeTime.activationAmount)]}}\r\n                    <br>\r\n                    {{ \'history.gift.withdrawData\' | translate }}&nbsp;-&nbsp;{{\r\n                    (lifeTime.expirationAmount * -1) | number: 2 }} {{\r\n                    selectedAccount.currency.nameCases[getCurrencyNameCase(lifeTime.expirationAmount)]\r\n                    }}\r\n                </div>\r\n            </div>\r\n        </div>\r\n    </div>\r\n\r\n    <div class="lmx-currency-info" loader="inProgress">\r\n        <h3>{{ \'history.balanceChanges\' | translate }}</h3>\r\n        <div class="date-filters">\r\n            <div class="date-filter lmx-since-date-filter">\r\n                <span class="lmx-pretext">{{\'history.fromDate\' | translate}}</span>\r\n                <date-picker ng-model="fromDate" ng-change="getCurrencyInfo()"> </date-picker>\r\n            </div>\r\n            &nbsp;\r\n            <div class="date-filter lmx-to-date-filter">\r\n                <span class="lmx-pretext">{{\'history.toDate\' | translate}}</span>\r\n                <date-picker ng-model="toDate" ng-change="getCurrencyInfo()"> </date-picker>\r\n            </div>\r\n        </div>\r\n        <input type="checkbox" id="lmx-activation" name="activation" ng-model="activation" ng-click="getCurrencyInfo()">\r\n        <label for="lmx-activation">\r\n            {{:: \'history.gift.rewardData\' | translate }}\r\n        </label>\r\n\r\n        <input type="checkbox" id="lmx-expiration" name="expiration" ng-model="expiration" ng-click="getCurrencyInfo()">\r\n        <label for="lmx-expiration">\r\n            {{:: \'history.gift.withdrawData\' | translate }}\r\n        </label>\r\n\r\n        <uib-pagination ng-show="operations[selectedAccount.currency.id].$allCount > onPage" total-items="operations[selectedAccount.currency.id].$allCount" ng-model="currentPage" max-size="4" items-per-page="{{:: onPage}}" class="lmx-pagination" boundary-links="true" boundary-link-numbers="true" direction-links="false" force-ellipses="true" first-text="<<" last-text=">>" ng-change="getCurrencyInfo()"></uib-pagination>\r\n\r\n        <div class="lmx-history-not-found" ng-if="!operations[selectedAccount.currency.id].$allCount && !inProgress">\r\n            {{ \'history.notFound\' | translate}}\r\n        </div>\r\n\r\n        <table ng-if="operations[selectedAccount.currency.id].$allCount && !inProgress">\r\n            <tr>\r\n                <th>{{ \'history.operations\' | translate}}</th>\r\n                <th>{{ \'balanceChanges.amount\' | translate }}</th>\r\n                <th>{{ \'balance.date\' | translate }}</th>\r\n            </tr>\r\n            <tr ng-repeat="operation in operations[selectedAccount.currency.id] track by $index">\r\n                <td>\r\n                    {{ (operation.amount < 0 ? \'history.gift.withdrawData\' :\r\n                    \'history.gift.rewardData\' ) | translate }}\r\n                </td>\r\n                <td ng-class="{\'lmx-activation\': operation.amount > 0,\'lmx-expiration\': operation.amount < 0}">\r\n                    {{ operation.amount }}&nbsp;{{\r\n                    selectedAccount.currency.nameCases[getCurrencyNameCase(operation.amount)]}}\r\n                </td>\r\n                <td>\r\n                    {{ operation.date | toUTC | shortDateTime }}\r\n                </td>\r\n            </tr>\r\n        </table>\r\n    </div>\r\n</div>\r\n'),n.put("app/directives/balanceChanges/balanceChanges.html",'<div class="lmx-container lmx-balance-changes">\r\n    <div class="lmx-balance-changes-table">\r\n        <div class="lmx-balance-changes-operations-list lmx-margin-bottom" loader="inProgress">\r\n            <div>\r\n                <table>\r\n                    <tbody>\r\n                        <tr class="lmx-purchase-amount-row">\r\n                            <td class="lmx-identity">\r\n                                {{\'balanceChanges.purchaseAmount\' | translate}}:\r\n                            </td>\r\n                            <td class="lmx-amount" ng-switch="model.aggregateWithdrawRewardPurchase.purchaseAmount.length" colspan="2">\r\n                                <p class="lmx-amount-text" ng-switch-when="0">0</p>\r\n                                <p ng-repeat="item in model.aggregateWithdrawRewardPurchase.purchaseAmount" class="lmx-amount-text" ng-switch-default="">\r\n                                    {{:: item.amount.amount}} {{:: item.amount.currency}}\r\n                                </p>\r\n                            </td>\r\n                        </tr>\r\n                        <tr class="lmx-rewards-row">\r\n                            <td class="lmx-identity">{{\'balanceChanges.rewards\' | translate}}:</td>\r\n                            <td class="lmx-amount" ng-switch="model.aggregateWithdrawRewardPurchase.rewards.length" colspan="2">\r\n                                <p class="lmx-amount-text" ng-switch-when="0">0</p>\r\n                                <p ng-switch-default="" ng-repeat="reward in model.aggregateWithdrawRewardPurchase.rewards" class="lmx-amount-text">\r\n                                    {{:: reward.amount.amount}} {{:: reward.amount.currency}}\r\n                                </p>\r\n                            </td>\r\n                        </tr>\r\n                        <tr class="lmx-withdraws-row">\r\n                            <td class="lmx-identity">{{\'balanceChanges.withdraws\' | translate}}:</td>\r\n                            <td class="lmx-amount" colspan="2" ng-switch="model.aggregateWithdrawRewardPurchase.withdraws.length">\r\n                                <p class="lmx-amount-text" ng-switch-when="0">0</p>\r\n                                <p ng-repeat="withdraw in model.aggregateWithdrawRewardPurchase.withdraws" class="lmx-amount-text" ng-switch-default="">\r\n                                    {{:: withdraw.amount.amount}} {{:: withdraw.amount.currency}}\r\n                                </p>\r\n                            </td>\r\n                        </tr>\r\n                        <tr ng-if="model.percentageOfBonuses.length" class="lmx-operation-info" class-toggle-click="percent-opened" ng-class="::{\'lmx-only-one-element\': model.percentageOfBonuses.length === 1}" ng-click="changeLimit()">\r\n                            <td class="lmx-identity">{{\'balanceChanges.percent\' | translate}}:</td>\r\n                            <td class="date-range">\r\n                                <p class="lmx-amount-text lmx-percent-info" ng-repeat="item in model.percentageOfBonuses | limitTo: limit">\r\n                                    <span class="lmx-operation-info-date">\r\n                                        {{item.createDateTime | toUTC | dateRange:\r\n                                        (item.changeDateTime | toUTC):true | capitalize}}\r\n                                    </span>\r\n                                    <span class="lmx-operation-info-value">\r\n                                        {{item.attributeValue}}\r\n                                    </span>\r\n                                </p>\r\n                            </td>\r\n                            <td class="lmx-percent-info-expander"></td>\r\n                        </tr>\r\n                        <tr ng-if="!model.percentageOfBonuses.length" class="lmx-not-found-row">\r\n                            <td class="lmx-identity">{{\'balanceChanges.percent\' | translate}}:</td>\r\n                            <td class="lmx-amount" colspan="2">\r\n                                {{\'balanceChanges.notFound\' | translate}}\r\n                            </td>\r\n                        </tr>\r\n                    </tbody>\r\n                </table>\r\n            </div>\r\n        </div>\r\n    </div>\r\n</div>\r\n'),n.put("app/directives/birthdayPicker/birthdayPicker.html",'<div class="lmx-birthday-picker">\r\n    <div class="lmx-birthday-picker-wrapper lmx-day">\r\n        <div lmx-custom-select="" ng-model="date" repeat="dates" placeholder="{{\'datePicker.day\' | translate}}" options="d for d in dates track by d" is-disabled="disabled"></div>\r\n    </div>\r\n    <div class="lmx-birthday-picker-wrapper lmx-month">\r\n        <div lmx-custom-select="" ng-model="month" repeat="months" placeholder="{{\'datePicker.month\' | translate}}" options="m.value as m.name for m in months" is-disabled="disabled"></div>\r\n    </div>\r\n    <div class="lmx-birthday-picker-wrapper lmx-year">\r\n        <div lmx-custom-select="" ng-model="year" repeat="years" placeholder="{{\'datePicker.year\' | translate}}" options="y for y in years" is-disabled="disabled"></div>\r\n    </div>\r\n</div>\r\n'),n.put("app/directives/brand/brand.html",'<div class="lmx-container lmx-brand">\r\n    <section>\r\n        <h2>{{::brand.name}}</h2>\r\n        <p>{{::brand.description}}</p>\r\n        <div class="lmx-content">\r\n            <div class="lmx-image">\r\n                <img ng-src="{{:: brand.imgUrl}}" fallback-image="" fallback-title="{{\'imageNotFound\' | translate}}" alt="">\r\n            </div>\r\n            <a ng-href="{{::brand.url}}">{{\'brands.site\' | translate}}</a>\r\n            <div ng-if="merchants.length">\r\n                <p>{{\'brands.locations\' | translate}}:</p>\r\n                <div ng-repeat="merchant in merchants track by merchant.id">\r\n                    <span>{{::merchant.location.description}}</span>\r\n                </div>\r\n                <lmx-map class="lmx-map" data="merchants" options="{\r\n                                    markerImg: brand.markerUrl,\r\n                                    markerSize: [29, 32]\r\n                                   }">\r\n                </lmx-map>\r\n            </div>\r\n        </div>\r\n    </section>\r\n</div>\r\n'),n.put("app/directives/brands/brands.html",'<div>\r\n    <div class="lmx-container lmx-brands" ng-if="!appLocationParts[1]">\r\n        <section>\r\n            <h2>{{\'brands.title\' | translate}}</h2>\r\n            <div loader="inProgress">\r\n                <!-- TODO width: 400px; height: 400px; -->\r\n                <div class="lmx-card" style="width: 400px; height: 400px;" ng-repeat="brand in brands track by brand.id" ng-click="changeLocation(\'brands/\' + brand.id)">\r\n                    <div>\r\n                        <img ng-src="{{:: brand.imgUrl}}" fallback-image="" fallback-title="{{\'imageNotFound\' | translate}}" alt="" style="height: 250px; padding: 10px">\r\n                    </div>\r\n                    <div class="lmx-card-content">\r\n                        <span class="lmx-card-title">{{:: brand.name}}</span>\r\n                        <div class="lmx-description">{{::brand.description}}</div>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n        </section>\r\n    </div>\r\n    <brand ng-if="appLocationParts[1]" brand-id="appLocationParts[1]"></brand>\r\n</div>\r\n'),n.put("app/directives/brandsNames/brandsNames.html",'<div class="lmx-brands-names" ng-class="{\'lmx-one-brand\': brands.length === 1}">\r\n    <div ng-if="brands.length > 1">\r\n        <span ng-repeat="brand in brands track by brand.id">\r\n            {{::brand.name | nbspSpaces}}<span ng-show="!$last">, </span>\r\n        </span>\r\n    </div>\r\n    <div ng-if="brands.length === 1" ng-switch=":: !!brands[0].imgUrl && brands[0].imgUrl !== \'undefined\'">\r\n        <span ng-switch-when="false">{{:: brands[0].name | nbspSpaces}}</span>\r\n        <img ng-switch-when="true" class="lmx-brand-img" ng-src="{{:: brands[0].imgUrl}}" fallback-image="" alt="" title="{{:: brands[0].name}}">\r\n    </div>\r\n</div>\r\n'),n.put("app/directives/cards/card/card.html",'<div>\r\n    <div class="lmx-card-item__image" ng-class="{\'lmx-blocked\': card.block}">\r\n        <img ng-src="{{ card.imageUrl}}" fallback-image="" fallback-title="{{\'imageNotFound\' | translate}}" alt="">\r\n    </div>\r\n    <div class="lmx-card-item__info" ng-switch=":: !!cardNumberGraphicalCodes.length && !card.isInGroup">\r\n        <div ng-switch-when="true">\r\n            <!-- Пробел после :: в {{::cardNumberGraphicalCodes.join(\' \')}} сводит префиксер с ума -->\r\n            <div class="lmx-card-number lmx-card-code lmx-{{::cardNumberGraphicalCodes.join(\' lmx-\')}}" ng-click="displayCodes(card)">\r\n                <a class="lmx-pseudolink">{{:: card.number | charsDivide: 4}}</a>\r\n            </div>\r\n        </div>\r\n        <div ng-switch-when="false" class="lmx-card-number">{{:: card.number | charsDivide: 4}}</div>\r\n\r\n        <div class="lmx-card-category" ng-hide="::card.cardCategory.title.toLowerCase() === \'стандартная\'">\r\n            {{:: card.cardCategory.title}}\r\n        </div>\r\n        <div class="lmx-card-blocked-state-info" ng-if="::card.block">\r\n            {{\'cards.info.blocked\' | translate}}\r\n        </div>\r\n\r\n        <dl class="lmx-card-owner" ng-if="::card.cardOwnerInfo.firstName || card.cardOwnerInfo.lastName || card.patronymicName">\r\n            <dt>{{\'cards.info.owner\' | translate}}:</dt>\r\n            <dd>\r\n                <span>{{:: card.cardOwnerInfo.lastName}}</span>\r\n                <span>{{:: card.cardOwnerInfo.firstName}}</span>\r\n                <span>{{:: card.cardOwnerInfo.patronymicName}}</span>\r\n            </dd>\r\n        </dl>\r\n        <dl class="lmx-card-paid">\r\n            <dt>{{\'cards.info.paid\' | translate}}:</dt>\r\n            <dd>\r\n                <span>{{:: card.paid.amount | number: 2}}</span>\r\n                <span>{{:: card.paid.currencyInfo.nameCases.abbreviation}}</span>\r\n            </dd>\r\n        </dl>\r\n        <div ng-if=":: !card.isInGroup" class="lmx-card-actions">\r\n            <button ng-class="card.block ? \'lmx-card-action__unblock\' : \'lmx-card-action__block\'" class="lmx-block-btn" ng-if="card.cardActionAccessInfo.canBlock" ng-click="blockStateChange(card)" type="button">\r\n                {{card.block ? \'cards.actions.unblock\' : \'cards.actions.block\' | translate}}\r\n            </button>\r\n            <button ng-if="card.cardActionAccessInfo.canReplace" ng-click="replaceCard(card)" type="button" class="lmx-replace-btn">\r\n                {{\'cards.actions.replace\' | translate}}\r\n            </button>\r\n            <a ng-if="card.walletUrl && !card.block && platfotm.currentPlatform" ng-href="{{::card.walletUrl}}" target="_blank" class="lmx-wallet-btn lmx-{{::platfotm.currentPlatform}}-wallet-btn"></a>\r\n        </div>\r\n    </div>\r\n</div>\r\n'),n.put("app/directives/cards/cards.html",'<div class="lmx-container lmx-cards">\r\n    <section>\r\n        <h2>{{\'cards.title\' | translate}}</h2>\r\n        <div loader="inProgress">\r\n            <div ng-if="!inProgress">\r\n                <lmx-tabs ng-if="isAttachCardAvailable" list="tabs" ng-model="selectedTab.value" view-field="name">\r\n                </lmx-tabs>\r\n                <div ng-show="selectedTab.value === tabs.personalCards" ng-class="::{\'lmx-no-add-card-button\': !maxCountOfMainCardsForUserNotReached}" class="lmx-personal-cards">\r\n                    <p ng-bind-html="\'cards.replaceHint\' | translate"></p>\r\n\r\n                    <div class="lmx-card-item-wrap" ng-repeat="card in cards.personal track by card.id">\r\n                        <card card="card" class="lmx-card-item"></card>\r\n                    </div>\r\n                    <div class="lmx-add-card-buttons" ng-if="maxCountOfMainCardsForUserNotReached">\r\n                        <button ng-click="setCard()" type="button" class="lmx-set-card-btn">\r\n                            {{\'cards.actions.set\' | translate}}\r\n                        </button>\r\n                    </div>\r\n                </div>\r\n\r\n                <div ng-show="selectedTab.value === tabs.accountCards" class="lmx-account-cards">\r\n                    <div ng-repeat="card in cards.group track by card.id">\r\n                        <card card="card" class="lmx-card-item" in-group=""></card>\r\n                    </div>\r\n                    <div class="lmx-add-card-buttons">\r\n                        <button ng-click="attachCard()" type="button" class="lmx-attach-btn">\r\n                            {{\'cards.actions.attach\' | translate}}\r\n                        </button>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n        </div>\r\n    </section>\r\n</div>\r\n'),n.put("app/directives/cards/modal/modalAttachCard.html",'<div class="lmx-attach-card-modal">\r\n    <div class="modal-header">\r\n        <h2>{{\'cards.attachCardModal.title\' | translate}}</h2>\r\n    </div>\r\n\r\n    <lmx-notifications area="cardModal"></lmx-notifications>\r\n    <div loader="confirmForm === undefined">\r\n        <div ng-hide="confirmForm === undefined" class="lmx-hint lmx-modal-description lmx-row">\r\n            <div>{{\'cards.attachCardModal.separationImpossible\' | translate}}</div>\r\n            <div ng-if="confirmForm" ng-bind-html="\'cards.attachCardModal.confirmCode\' | translate"></div>\r\n        </div>\r\n        <form novalidate="" ng-if="confirmForm === false" name="attachCardForm" ng-submit="attachCardForm.$valid && startAttachCard()">\r\n            <div class="modal-content-wrapper">\r\n                <div class="modal-body">\r\n                    <form-group label-text="{{\'cards.attachCardModal.cardNumber\' | translate}}">\r\n                        <input type="text" ng-model="model.cardNumber" ng-disabled="inProgress" id="lmx-cardnumber" name="cardnumber" required="" autofocus="">\r\n                    </form-group>\r\n                    <form-group label-text="{{\'cards.attachCardModal.password\' | translate}}">\r\n                        <input type="password" ng-model="model.password" ng-disabled="inProgress" id="lmx-password" name="password" autocomplete="off" required="">\r\n                    </form-group>\r\n                </div>\r\n                <div class="modal-footer lmx-btn-container">\r\n                    <div ng-hide="inProgress">\r\n                        <button class="lmx-btn-cancel" type="button" ng-click="cancel()">\r\n                            {{\'buttons.cancel\' | translate}}\r\n                        </button>\r\n                        <button type="submit">{{\'buttons.next\' | translate}}</button>\r\n                    </div>\r\n                    <inline-loader>inProgress</inline-loader>\r\n                </div>\r\n            </div>\r\n        </form>\r\n\r\n        <form novalidate="" ng-if="confirmForm" name="attachCardConfirmForm" ng-submit="attachCardConfirmForm.$valid && confirm()">\r\n            <div class="modal-content-wrapper">\r\n                <div class="modal-body">\r\n                    <form-group label-text="{{\'cards.attachCardModal.code\' | translate}}">\r\n                        <input type="text" ng-model="model.confirmCode" ng-disabled="inProgress" id="lmx-confirmCode" name="confirmCode" required="" autofocus="">\r\n                    </form-group>\r\n                    <div ng-hide="inProgress">\r\n                        <a ng-click="!resendTimer.time && sendConfirmCode()" href="">\r\n                            {{\'cards.attachCardModal.resendConfirmCode\' | translate}}\r\n                            <span ng-if="resendTimer.time">({{resendTimer.time}})</span>\r\n                        </a>\r\n                    </div>\r\n                </div>\r\n                <div class="modal-footer lmx-btn-container">\r\n                    <div ng-hide="inProgress">\r\n                        <button class="lmx-btn-cancel" ng-click="cancelAttachCard()" type="button">\r\n                            {{\'buttons.cancel\' | translate}}\r\n                        </button>\r\n                        <button type="submit">{{\'cards.actions.attach\' | translate}}</button>\r\n                    </div>\r\n                    <inline-loader>inProgress</inline-loader>\r\n                </div>\r\n            </div>\r\n        </form>\r\n    </div>\r\n</div>\r\n'),
    92519251n.put("app/directives/cards/modal/modalBlockStateChange.html",'<div class="lmx-block-state-change-modal">\r\n    <div class="modal-header">\r\n        <h2>\r\n            {{\'cards.blockCardModal.\' + (isBlocked ? \'unblockTitle\' : \'blockTitle\') | translate}}\r\n        </h2>\r\n    </div>\r\n    <lmx-notifications area="cardModal"></lmx-notifications>\r\n    <form novalidate="" name="blockCardForm" ng-submit="blockCardForm.$valid && blockStateChange()">\r\n        <div class="modal-content-wrapper">\r\n            <div class="modal-body">\r\n                <form-group label-text="{{\'cards.blockCardModal.password\' | translate}}">\r\n                    <input type="password" ng-model="model.password" ng-disabled="inProgress" id="lmx-userPassword" name="userPassword" autocomplete="off" required="" autofocus="">\r\n                </form-group>\r\n            </div>\r\n            <div class="modal-footer lmx-btn-container">\r\n                <div ng-hide="inProgress">\r\n                    <button class="lmx-btn-cancel" ng-click="cancel()" type="button">\r\n                        {{\'buttons.cancel\' | translate}}\r\n                    </button>\r\n                    <button type="submit">\r\n                        {{isBlocked ? \'cards.actions.unblock\' : \'cards.actions.block\' | translate}}\r\n                    </button>\r\n                </div>\r\n                <inline-loader>inProgress</inline-loader>\r\n            </div>\r\n        </div>\r\n    </form>\r\n</div>\r\n'),n.put("app/directives/cards/modal/modalGraphicalCodes.html",'<div class="lmx-card-codes-modal">\r\n    <div class="modal-body">\r\n        <section ng-if=":: displayBarCode" class="lmx-bar-code lmx-margin-bottom">\r\n            <h2>{{\'cards.graphicalCodesModal.barCode\' | translate}}</h2>\r\n            <angular-barcode ng-model="card.barCode" bc-type="svg"></angular-barcode>\r\n        </section>\r\n\r\n        <section ng-if=":: displayQrCode" class="lmx-qr-code">\r\n            <h2>{{\'cards.graphicalCodesModal.qrCode\' | translate}}</h2>\r\n            <qrcode data="{{:: card.number}}" size="222"></qrcode>\r\n        </section>\r\n    </div>\r\n\r\n    <div class="modal-footer lmx-btn-container">\r\n        <button type="button" ng-click="close()">{{\'buttons.close\' | translate}}</button>\r\n    </div>\r\n</div>\r\n'),n.put("app/directives/cards/modal/modalReplaceCard.html",'<div class="lmx-replace-card-modal">\r\n    <div class="modal-header">\r\n        <h2>{{\'cards.replaceCardModal.title\' | translate}}</h2>\r\n    </div>\r\n    <lmx-notifications area="cardModal"></lmx-notifications>\r\n    <form novalidate="" name="replaceCardForm" ng-submit="replaceCardForm.$valid && replaceCard()">\r\n        <div class="modal-content-wrapper">\r\n            <div class="modal-body">\r\n                <form-group label-text="{{\'cards.replaceCardModal.cardNumber\' | translate}}">\r\n                    <input type="text" ng-model="model.cardNumber" ng-disabled="inProgress" id="lmx-cardNumber" name="cardNumber" required="" autofocus="">\r\n                </form-group>\r\n                <form-group ng-if="cvcCodeCardsRegistration" label-text="{{\'cards.replaceCardModal.cvcCode\' | translate}}">\r\n                    <input type="number" ng-model="model.cvcCode" ng-disabled="inProgress" id="lmx-cvcCode" name="cvcCode">\r\n                </form-group>\r\n                <form-group label-text="{{\'cards.replaceCardModal.password\' | translate}}">\r\n                    <input type="password" ng-model="model.password" ng-disabled="inProgress" id="lmx-password" name="password" autocomplete="off" required="">\r\n                </form-group>\r\n            </div>\r\n            <div class="modal-footer lmx-btn-container">\r\n                <div ng-hide="inProgress">\r\n                    <button class="lmx-btn-cancel" ng-click="cancel()" type="button">\r\n                        {{\'buttons.cancel\' | translate}}\r\n                    </button>\r\n                    <button type="submit">\r\n                        {{\'cards.actions.replace\' | translate}}\r\n                    </button>\r\n                </div>\r\n                <inline-loader>inProgress</inline-loader>\r\n            </div>\r\n        </div>\r\n    </form>\r\n</div>\r\n'),n.put("app/directives/cards/modal/modalSetCard.html",'<div class="lmx-set-card-modal">\r\n    <div class="modal-header">\r\n        <h2>{{\'cards.setCardModal.title\' | translate}}</h2>\r\n    </div>\r\n\r\n    <lmx-notifications area="cardModal"></lmx-notifications>\r\n\r\n    <form novalidate="" name="setCardForm" ng-submit="setCardForm.$valid && setCard()">\r\n        <div class="modal-content-wrapper">\r\n            <div class="modal-body">\r\n                <form-group label-text="{{\'cards.setCardModal.cardNumber\' | translate}}">\r\n                    <input type="text" ng-model="model.cardNumber" ng-disabled="inProgress" id="lmx-cardNumber" name="cardNumber" required="" autofocus="">\r\n                </form-group>\r\n                <form-group ng-if="cvcCodeCardsRegistration" label-text="{{\'registration.cardStep.cvcCode\' | translate}}">\r\n                    <input type="number" ng-model="model.cvcCode" ng-disabled="inProgress" id="lmx-cvcCode" name="cvcCode">\r\n                </form-group>\r\n            </div>\r\n            <div class="modal-footer lmx-btn-container">\r\n                <div ng-hide="inProgress">\r\n                    <button class="lmx-btn-cancel" ng-click="cancel()" type="button">\r\n                        {{\'buttons.cancel\' | translate}}\r\n                    </button>\r\n                    <button type="submit">\r\n                        {{\'cards.actions.set\' | translate}}\r\n                    </button>\r\n                </div>\r\n                <inline-loader>inProgress</inline-loader>\r\n            </div>\r\n        </div>\r\n    </form>\r\n</div>\r\n'),n.put("app/directives/coupon/coupon.html",'<div class="lmx-card" style="width: 400px; height: 400px;">\r\n    <div class="lmx-card-image">\r\n        <img ng-src="{{::coupon.imageUri || \'undefined\'}}" fallback-image="" fallback-title="{{\'coupons.imageNotFound\' | translate}}" alt="" style="height: 250px; padding: 10px">\r\n    </div>\r\n    <div class="lmx-card-content">\r\n        <span class="lmx-card-title">{{coupon.name}}</span>\r\n        <span><b>{{\'coupons.price\' | translate}}:</b> {{coupon.price}} RUB</span>\r\n    </div>\r\n    <div class="lmx-card-reveal">\r\n        <span class="lmx-card-title"><span class="glyphicon glyphicon-remove"></span>{{coupon.name}}</span>\r\n        <p>\r\n            <span><b>{{\'coupons.description\' | translate}}:</b>{{:: couponInfo.description ||\r\n                (\'coupons.noDescription\' | translate)}}</span>\r\n        </p>\r\n        <button ng-if=":: loggedIn" type="button" ng-click="openBuyCouponModal(coupon)">\r\n            <div>\r\n                {{\'coupons.buy\' | translate}}\r\n                <span class="lmx-price">{{ coupon.price | zeroFill: 2 }}</span>\r\n            </div>\r\n        </button>\r\n        <button ng-if=":: !loggedIn" type="button" ng-click="goToLogin()">\r\n            <div>{{\'coupons.login\' | translate}}</div>\r\n        </button>\r\n    </div>\r\n</div>\r\n'),n.put("app/directives/coupons/coupons.html",'<div class="lmx-container lmx-coupons">\r\n    <h2>{{\'coupons.title\' | translate}}</h2>\r\n    <div loader="inProgress">\r\n        <div class="lmx-coupon lmx-card" ng-repeat="coupon in coupons track by coupon.id" ng-click="openCouponInfo(coupon)">\r\n            <div class="lmx-card-code">\r\n                <div class="lmx-image-block">\r\n                    <img ng-src="data:{{::coupon.imageFile.mimeType}};charset=utf-8;base64, {{::coupon.imageFile.content}}" fallback-image="" fallback-title="{{\'imageNotFound\' | translate}}" alt="" style="height: 100px; padding: 10px">\r\n                </div>\r\n            </div>\r\n            <div class="lmx-card-content">\r\n                <div class="lmx-coupon-details">\r\n                    <div class="lmx-coupon-title">\r\n                        <h2>{{ coupon.emissionTitle }}</h2>\r\n                    </div>\r\n                    <div class="lmx-coupon-description">{{ coupon.shortDescription}}</div>\r\n                    <div class="lmx-coupon-content">\r\n                        <div class="lmx-coupon-code">\r\n                            <qrcode data="{{:: coupon.code }}" size="100"></qrcode>\r\n                        </div>\r\n                        <div class="lmx-coupon-period">\r\n                            <span>Номер купона: {{ coupon.code }}</span>\r\n\r\n                            <div ng-if="coupon.expiryDate && offerProceed(coupon.activationDate) && !lessThanWeek(coupon.expiryDate)" class="lmx-rating-container">\r\n                                <span ng-if="offerStartedToday(coupon.activationDate)">\r\n                                    {{ \'coupons.expirationDate\' | translate}}: {{:: coupon.expiryDate | toUTC | shortDate }}\r\n                                </span>\r\n                                <span ng-if="!offerStartedToday(coupon.activationDate)">\r\n                                    {{ \'coupons.offerStartFrom\' | translate }} {{:: coupon.activationDate | toUTC | shortDateTime }}\r\n                                    {{ \'dateRange.to\' | translate }}\r\n                                    {{:: coupon.expiryDate | toUTC | shortDate }}\r\n                                </span>\r\n                            </div>\r\n\r\n                            <div ng-if="coupon.expiryDate && lessThanWeek(coupon.expiryDate) && offerProceed(coupon.activationDate)">\r\n                                {{ \'coupons.offerPeriod.left\' | translate }}:\r\n                                {{ leftDays }} {{\'coupons.offerPeriod.leftDays\' | translate }}\r\n                                {{ leftHours }} {{\'coupons.offerPeriod.leftHours\' | translate }}\r\n                            </div>\r\n\r\n                            <div ng-if="coupon.expiryDate && !offerProceed(coupon.activationDate)">\r\n                                {{ \'coupons.offerStartFrom\' | translate }}\r\n                                {{ coupon.activationDate | toUTC | shortDate }}\r\n                                {{ \'dateRange.to\' | translate }}\r\n                                {{ coupon.expiryDate | toUTC | shortDate }}\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n        </div>\r\n    </div>\r\n</div>\r\n'),n.put("app/directives/coupons/modal/couponViewModal.html",'<div class="lmx-coupon-modal">\r\n    <div class="modal-header">\r\n        <div class="lmx-modal-closer" ng-click="cancel()"></div>\r\n        <h2>{{:: coupon.emissionTitle }}</h2>\r\n    </div>\r\n\r\n    <div class="modal-content-wrapper">\r\n        <div class="lmx-coupon-modal">\r\n            <div class="modal-body">\r\n                <qrcode data="{{:: coupon.code }}" href="{{ coupon.qrContent }}" size="200"></qrcode>\r\n\r\n                <div ng-if="coupon.expiryDate && offerProceed(coupon.activationDate) && !lessThanWeek(coupon.expiryDate)" class="lmx-rating-container">\r\n                    <span ng-if="offerStartedToday(coupon.activationDate)">\r\n                        {{ \'coupons.expirationDate\' | translate}}: {{:: coupon.expiryDate | toUTC | shortDate }}\r\n                    </span>\r\n                    <span ng-if="!offerStartedToday(coupon.activationDate)">\r\n                        {{ \'coupons.offerStartFrom\' | translate }} {{:: coupon.activationDate | toUTC | shortDateTime }}\r\n                        {{ \'dateRange.to\' | translate }}\r\n                        {{:: coupon.expiryDate | toUTC | shortDate }}\r\n                    </span>\r\n                </div>\r\n\r\n                <div ng-if="coupon.expiryDate && lessThanWeek(coupon.expiryDate) && offerProceed(coupon.activationDate)">\r\n                    {{ \'coupons.offerPeriod.left\' | translate }}:\r\n                    {{ leftDays }} {{\'coupons.offerPeriod.leftDays\' | translate}}\r\n                    {{ leftHours }} {{\'coupons.offerPeriod.leftHours\' | translate}}\r\n                    <div class="lmx-bar">\r\n                        <span class="lmx-left-time" ng-style="{ width: expiryTimePercent + \'%\'}"></span>\r\n                    </div>\r\n                </div>\r\n\r\n                <div ng-if="coupon.expiryDate && !offerProceed(coupon.activationDate)">\r\n                    {{ \'coupons.offerStartFrom\' | translate }}\r\n                    {{ coupon.activationDate | toUTC | shortDate }}\r\n                    {{ \'dateRange.to\' | translate }}\r\n                    {{ coupon.expiryDate | toUTC | shortDate }}\r\n                </div>\r\n\r\n                <div class="lmx-coupon-description">\r\n                    {{ coupon.description }}\r\n                </div>\r\n\r\n                <div class="lmx-coupon-hint">\r\n                    {{ \'coupons.hint\' | translate }}\r\n                </div>\r\n            </div>\r\n            <div class="modal-footer lmx-btn-container">\r\n                <button type="button" ng-click="cancel()">{{\'buttons.close\' | translate}}</button>\r\n            </div>\r\n        </div>\r\n    </div>\r\n</div>\r\n'),n.put("app/directives/datePicker/datePickerView.html",'<span class="date-picker-wrap" outside-click="toggleCalendar($event, false)">\r\n    <div class="toggler" ng-click="toggleCalendar($event)">\r\n        <span class="glyphicon glyphicon-calendar"></span>\r\n    </div>\r\n\r\n    <input type="text" ng-class="\'lmx-\'+inputClass" datetime-picker="{{dateFormat}}" ng-model="model" ng-keyup="validateModel($event)" ng-model-options="modelOptions" datepicker-options="options" button-bar="{show:false}" is-open="isOpen" enable-time="false">\r\n</span>\r\n'),n.put("app/directives/dateTimePicker/datetimePickerView.html",'<span class="date-picker-wrap" outside-click="toggleCalendar($event, false)">\r\n    <div class="toggler glyphicon glyphicon-calendar" ng-click="toggleCalendar($event)"></div>\r\n\r\n    <input type="text" ng-if=":: timepickerOptions" ng-class="\'lmx-\'+inputClass" datetime-picker="{{dateFormat}}" ng-model="model" ng-keyup="checkModel($event)" ng-model-options="modelOptions" button-bar="buttonsOptions" initial-picker="date" re-open-default="date" datepicker-options="{showWeeks:false}" timepicker-options="timepickerOptions" is-open="isOpen">\r\n</span>\r\n'),n.put("app/directives/favoriteGoods/favoriteGood/favoriteGood.html",'<div class="lmx-favorite-goods-item">\r\n    <div class="lmx-favorite-goods-item__image">\r\n        <img ng-src="{{:: favoriteGoodsImagesUrl}}{{:: favoriteGood.good ? favoriteGood.good.codeGood : \'undefined\'}}.png" fallback-image="" fallback-title="Изображение отсутствует" alt="">\r\n    </div>\r\n    <p ng-if=":: !favoriteGood.good || favoriteGood.good.id === 0">\r\n        {{\'favoriteGoods.noFavoriteGood\' | translate}}\r\n    </p>\r\n    <p ng-if=":: favoriteGood.good && favoriteGood.good.id !== 0">{{:: favoriteGood.good.name}}</p>\r\n    <button class="lmx-btn lmx-change-favorite-good-btn" ng-click="changeGood(favoriteGood)" ng-if=":: favoriteGood.allowChange" type="button">\r\n        {{\'favoriteGoods.actions.edit\' | translate}}\r\n    </button>\r\n    <small>\r\n        <p class="lmx-favorite-goods-already-changed" ng-if=":: !favoriteGood.allowChange">\r\n            {{\'favoriteGoods.alreadyChanged\' | translate}}\r\n        </p>\r\n    </small>\r\n</div>\r\n'),n.put("app/directives/favoriteGoods/favoriteGoods.html",'<div class="lmx-container lmx-favorite-goods" ng-class="{\'lmx-empty\': !inProgress && !favoriteGoods}">\r\n    <section>\r\n        <h2>{{\'favoriteGoods.title\' | translate}}</h2>\r\n        <div loader="inProgress">\r\n            <div ng-if="!inProgress">\r\n                <div>\r\n                    <p>{{\'favoriteGoods.info.description\' | translate}}.</p>\r\n                    <p>\r\n                        {{\'favoriteGoods.info.limitation.part1\' | translate}}\r\n                        <a href="#offers">{{\'favoriteGoods.info.limitation.part2\' | translate}}</a>.\r\n                    </p>\r\n                </div>\r\n                <div class="lmx-favorite-goods-list">\r\n                    <p ng-if="!(favoriteGoods && favoriteGoods.goods && favoriteGoods.goods.length)">\r\n                        {{\'favoriteGoods.favoriteGoodsEmpty\' | translate}}\r\n                    </p>\r\n                    <favorite-good favorite-good="favoriteGoodsItem" change-good="changeGood" ng-repeat="favoriteGoodsItem in favoriteGoods.goods" loader="goodsInProgres_{{:: favoriteGoodsItem.position}}"></favorite-good>\r\n                </div>\r\n            </div>\r\n        </div>\r\n    </section>\r\n</div>\r\n'),n.put("app/directives/favoriteGoods/modal/goodsOrCategory/goodsOrCategory.html",'<ul class="lmx-goods-or-category-item">\r\n    <li ng-if=":: isCategory" class="lmx-category-item-li">\r\n        <div>\r\n            <div class="lmx-category-item">\r\n                <p class="material-icons">folder</p>\r\n                <p class="lmx-category-item-name" ng-click="changeVisibilityCategoryList()">\r\n                    {{:: goodsOrCategory.name}}\r\n                </p>\r\n            </div>\r\n            <div ng-if=":: !inProgress">\r\n                <goods-or-category ng-show="isShow" goods-group-id="goodsGroupId" goods-or-category="item" ng-repeat="item in nodeItems track by item.id"></goods-or-category>\r\n            </div>\r\n            <inline-loader>inProgress</inline-loader>\r\n        </div>\r\n    </li>\r\n    <li ng-if=":: !isCategory" class="lmx-good-item-li">\r\n        <p ng-click="selectNewFavoriteGood()" class="lmx-good-item">\r\n            {{:: goodsOrCategory.name}}\r\n        </p>\r\n    </li>\r\n</ul>\r\n'),n.put("app/directives/favoriteGoods/modal/modalSelectNewFavoriteGood.html",'<div class="modal-content-favorite-goods">\r\n    <div class="lmx-modal-closer" ng-click="cancel()"></div>\r\n    <div loader="inProgress" class="lmx-modal-favorite-goods-container">\r\n        <div ng-if="!inProgress" class="lmx-modal-favorite-goods-content">\r\n            <div class="modal-header">\r\n                <h2>{{\'favoriteGoods.modal.selectGood\' | translate}}</h2>\r\n            </div>\r\n            <div class="lmx-content lmx-select-new-favorite-good">\r\n                <div class="lmx-categories-list">\r\n                    <goods-or-category goods-group-id="goodsGroupId" goods-or-category="goodsOrCategory" ng-repeat="goodsOrCategory in categories track by goodsOrCategory.id"></goods-or-category>\r\n                </div>\r\n                <button class="lmx-btn lmx-close-modal-btn" ng-click="cancel()" type="button">\r\n                    {{\'favoriteGoods.modal.close\' | translate}}\r\n                </button>\r\n            </div>\r\n        </div>\r\n    </div>\r\n</div>\r\n'),n.put("app/directives/feedback/feedback.html",'<div class="lmx-container lmx-feedback">\r\n    <section>\r\n        <h2>{{\'feedback.title\' | translate}}</h2>\r\n        <lmx-notifications area="feedback"></lmx-notifications>\r\n\r\n        <div loader="inProgress && messages === undefined">\r\n            <div ng-show="!inProgress || messages !== undefined">\r\n                <div class="lmx-hint">\r\n                    <p>{{\'feedback.askQuestion\' | translate}}:</p>\r\n                </div>\r\n\r\n                <form novalidate="" name="feedbackForm" ng-submit="feedbackForm.$valid && send(feedbackForm)">\r\n                    <form-group>\r\n                        <textarea ng-disabled="sendInProgress" id="lmx-msgTextarea" name="msgTextarea" ng-model="messageModel.text" placeholder="{{\'feedback.typeText\' | translate}}" required="">\r\n                        </textarea>\r\n                    </form-group>\r\n\r\n                    <inline-loader line="">sendInProgress</inline-loader>\r\n\r\n                    <div class="lmx-file-input-and-submitter lmx-clearfix lmx-margin-bottom" ng-if="!sendInProgress">\r\n                        <file-input ng-model="messageModel.attachment" class="lmx-left"></file-input>\r\n                        <button type="submit" class="lmx-right lmx-row">\r\n                            {{\'buttons.send\' | translate}}\r\n                        </button>\r\n                    </div>\r\n                </form>\r\n\r\n                <div class="lmx-message-history" loader="sendInProgress || inProgress">\r\n                    <lmx-scroller>\r\n                        <div class="lmx-chat-message-line lmx-clearfix" ng-repeat="item in messages track by item.message.id">\r\n                            <div ng-class="{\'lmx-outcoming\': item.isUserMessage}" class="lmx-chat-message">\r\n                                <div class="lmx-from">\r\n                                    {{\'feedback.\' + (item.isUserMessage ? \'you\' : \'operator\') |\r\n                                    translate}}\r\n                                </div>\r\n                                <div class="lmx-text">{{::item.message.message}}</div>\r\n                                <div class="lmx-file-name" ng-if="item.message.fileName">\r\n                                    {{\'feedback.file\' | translate}}: {{::item.message.fileName}}\r\n                                </div>\r\n                                <div class="date">\r\n                                    {{::item.message.dateTime | toUTC | shortDateTime}}\r\n                                </div>\r\n                            </div>\r\n                        </div>\r\n                    </lmx-scroller>\r\n                </div>\r\n            </div>\r\n        </div>\r\n    </section>\r\n</div>\r\n'),n.put("app/directives/fileInput/fileInput.html",'<div class="lmx-file-input">\r\n    <form-group>\r\n        <inline-loader>loader</inline-loader>\r\n        <input type="file" ng-model="attachment.fileInfo" id="lmx-file-input" ng-attr-name="{{inputName}}" base-sixty-four-input="" maxsize="5120" do-not-parse-if-oversize="" onloadstart="onFileLoadStart" onerror="onFileLoadError" onload="onFileLoadSuccess">\r\n        <label for="lmx-file-input" ng-switch="loadError.value" ng-hide="loader" ng-click="clearAttachment(); loadError.value = false;">\r\n            <a>{{\'buttons.attachFile\' | translate}}</a>\r\n            <span class="lmx-file-input-span"></span>\r\n            <span ng-switch-when="false" ng-if="attachment.fileInfo" class="lmx-attachment">\r\n                <span class="lmx-attachment-name" ng-attr-title="{{attachment.fileInfo.filename}}">{{attachment.fileInfo.filename}}</span>\r\n                <span ng-click="clearAttachment($event)" class="lmx-attachment-remove glyphicon glyphicon-remove"></span>\r\n            </span>\r\n            <span ng-switch-when="true" class="lmx-attachment-error">{{loadError.text || (\'file.error\' | translate)}}</span>\r\n        </label>\r\n    </form-group>\r\n</div>\r\n'),n.put("app/directives/formGroup/formGroupTemplate.html",'<div class="lmx-form-group lmx-clearfix lmx-row" ng-class="{\'lmx-has-error\': form.$submitted && model.$invalid}">\r\n    <div ng-if="labelText !== undefined" class="lmx-label-container">\r\n        <label class="lmx-form-group-label lmx-{{:: lmx-labelAlign+\'align\'}}" for="{{itemId}}">{{labelText}}</label>\r\n    </div>\r\n    <div class="lmx-input-container">\r\n        <div><ng-transclude></ng-transclude></div>\r\n        <div class="lmx-help-block" ng-if="form.$submitted">\r\n            <div class="lmx-help-block__error" ng-if="model.$error.validationErrors" ng-repeat="error in model.$error.validationErrors">\r\n                <div>{{error}}</div>\r\n            </div>\r\n            <div class="lmx-help-block__error" ng-if="!model.$error.validationErrors" ng-repeat="(error, value) in model.$error">\r\n                <div>{{errorMessage(error, model.$viewValue)}}</div>\r\n            </div>\r\n        </div>\r\n    </div>\r\n</div>\r\n'),n.put("app/directives/history/history.html",'<div class="lmx-container lmx-history">\r\n    <section>\r\n        <h2 ng-if=":: !isPreview">{{\'history.title\' | translate}}</h2>\r\n        <div loader="history === undefined">\r\n            <div ng-show=":: history">\r\n                <div ng-show=":: !isPreview" class="lmx-history-filters lmx-clearfix lmx-margin-bottom">\r\n                    <div class="date-filters">\r\n                        <div class="date-filter lmx-since-date-filter">\r\n                            <span class="lmx-pretext">{{\'history.fromDate\' | translate}}</span>\r\n                            <date-picker ng-model="fromDate" ng-change="reloadHistory()">\r\n                            </date-picker>\r\n                        </div>\r\n                        <div class="date-filter lmx-to-date-filter">\r\n                            <span class="lmx-pretext">{{\'history.toDate\' | translate}}</span>\r\n                            <date-picker ng-model="toDate" ng-change="reloadHistory()">\r\n                            </date-picker>\r\n                        </div>\r\n                    </div>\r\n                    <div class="lmx-card-filter">\r\n                        <inline-loader>cardsInProgress</inline-loader>\r\n                        <div ng-hide="cardsInProgress">\r\n                            <select ng-model="selectedCard" ng-change="reloadHistory()" id="lmx-cardFilter" name="cardFilter">\r\n                                <option ng-value="0">{{\'history.allCards\' | translate}}</option>\r\n                                <option ng-repeat="card in cards" ng-value="card.id">{{:: card.number | charsDivide: 4}}</option>\r\n                            </select>\r\n                        </div>\r\n                    </div>\r\n                    <div class="lmx-reset-filters">\r\n                        <a ng-click="resetFilters()" class="lmx-pseudolink" href="">{{\'history.resetFilters\' | translate}}</a>\r\n                    </div>\r\n                </div>\r\n                <lmx-tabs ng-if="balanceChangeHistory" list="tabs" ng-model="selectedTab.value" view-field="name">\r\n                </lmx-tabs>\r\n                <div ng-show="!balanceChangeHistory || selectedTab.value === tabs.operations">\r\n                    <div class="lmx-history-table" ng-show="history.allCount || inProgress">\r\n                        <div class="lmx-operations-list lmx-margin-bottom" loader="inProgress && (isPaginated || isReload)">\r\n                            <div ng-class="{\'lmx-loading\': inProgress}" ng-hide="inProgress && isReload">\r\n                                <table ng-if="history.rows.length">\r\n                                    <thead>\r\n                                        <tr>\r\n                                            <th>{{\'history.date\' | translate}}</th>\r\n                                            <th>{{\'history.cardNumber\' | translate}}</th>\r\n                                            <th>{{\'history.description\' | translate}}</th>\r\n                                            <th>{{\'history.operation\' | translate}}</th>\r\n                                            <th>{{\'history.amount\' | translate}}</th>\r\n                                            <th></th>\r\n                                        </tr>\r\n                                    </thead>\r\n                                    <tbody ng-repeat="item in history.rows track by item.id" class-toggle-click="cheque-opened" ng-class="::{\'lmx-empty-cheque\': !item.data.chequeItems.length && !item.data.chequeAdditionalAttributes.length}">\r\n                                        <tr class="lmx-operation-info">\r\n                                            <td class="date-time" ng-attr-title="{{:: item.dateTime | toUTCTemporarySolution | shortDateTime}}">\r\n                                                {{:: item.dateTime | toUTCTemporarySolution |\r\n                                                shortDateTime}}\r\n                                            </td>\r\n                                            <td class="lmx-identity" ng-attr-title="{{:: item.identity ? (\'**** \' + (item.identity | lastCount: 4)) : undefined}}">\r\n                                                <span ng-if="::item.identity">****\r\n                                                    <b>{{:: item.identity | lastCount: 4 }}</b></span>\r\n                                            </td>\r\n                                            <td class="lmx-description" ng-attr-title="{{:: item.description}}">\r\n                                                <img ng-if=":: item.logoSquareUrl" ng-src="{{:: item.logoSquareUrl}}" class="lmx-logo-square" fallback-image="" fallback-title="{{\'imageNotFound\' | translate}}" alt="">\r\n                                                <span class="lmx-description-text">{{:: item.description}}</span>\r\n                                            </td>\r\n                                            <td class="lmx-withdraws lmx-text">\r\n                                                <div ng-if=":: item.data.withdraws.length" ng-repeat="wdrw in item.data.withdraws" ng-attr-title="{{\'history.gift\' + (item.data.isRefund ? \'Refund\' : \'\' ) + \'.withdraw\' | translate}}" class="lmx-text-overflow-ellipsis">\r\n                                                    {{\'history.gift\' + (item.data.isRefund ?\r\n                                                    \'Refund\' : \'\' ) + \'.withdraw\' | translate}}\r\n                                                </div>\r\n                                                <div ng-if=":: item.data.rewards.length" ng-repeat="(type, values) in item.rewardsResult">\r\n                                                    <div ng-repeat="(currency, value) in values" ng-attr-title="{{\'history.gift\' + (item.data.isRefund ? \'Refund.\' : \'.\') + (type | lowerCamelCase) | translate}}" class="lmx-text-overflow-ellipsis">\r\n                                                        {{\'history.gift\' + (item.data.isRefund ?\r\n                                                        \'Refund.\' : \'.\') + (type | lowerCamelCase) |\r\n                                                        translate}}\r\n                                                    </div>\r\n                                                </div>\r\n                                                <div ng-if=":: item.type == \'RewardData\'" ng-attr-title="{{\'history.rewardData.\' + (item.data.rewardType | lowerCamelCase) | translate}}" class="lmx-text-overflow-ellipsis">\r\n                                                    {{\'history.rewardData.\' + (item.data.rewardType\r\n                                                    | lowerCamelCase) | translate}}\r\n                                                </div>\r\n                                                <div ng-if=":: item.type == \'WithdrawData\'" ng-attr-title="{{\'history.withdrawData.\' + (item.data.withdrawType | lowerCamelCase) | translate}}" class="lmx-text-overflow-ellipsis">\r\n                                                    {{\'history.withdrawData.\' +\r\n                                                    (item.data.withdrawType | lowerCamelCase) |\r\n                                                    translate}}\r\n                                                </div>\r\n                                            </td>\r\n                                            <td class="lmx-withdraws lmx-amount">\r\n                                                <div ng-if=":: item.data.withdraws.length" ng-repeat="wdrw in item.data.withdraws" ng-attr-title="{{:: (item.data.isRefund ? wdrw.amount.amount * -1 : wdrw.amount.amount) | number: 2}} {{:: wdrw.amount.currency }}" class="lmx-text-overflow-ellipsis">\r\n                                                    {{:: (item.data.isRefund ? wdrw.amount.amount *\r\n                                                    -1 : wdrw.amount.amount) | number: 2}} {{::\r\n                                                    wdrw.amount.currency }}\r\n                                                </div>\r\n                                                <div ng-if=":: item.data.rewards.length" ng-repeat="(type, values) in item.rewardsResult">\r\n                                                    <div ng-repeat="(currency, value) in values" ng-attr-title="{{:: (item.data.isRefund ? value * -1 : value) | number: 2}} {{:: currency }}" class="lmx-text-overflow-ellipsis">\r\n                                                        {{:: (item.data.isRefund ? value * -1 :\r\n                                                        value) | number: 2}} {{:: currency }}\r\n                                                    </div>\r\n                                                </div>\r\n                                                <div ng-if=":: item.type == \'RewardData\' || item.type == \'WithdrawData\'" ng-attr-title="{{:: (item.data.isRefund ? item.data.amount.amount * -1 : item.data.amount.amount) | number: 2}} {{:: item.data.amount.currency }}" class="lmx-text-overflow-ellipsis">\r\n                                                    {{:: (item.data.isRefund ?\r\n                                                    item.data.amount.amount * -1 :\r\n                                                    item.data.amount.amount) | number: 2}} {{::\r\n                                                    item.data.amount.currency }}\r\n                                                </div>\r\n                                            </td>\r\n                                            <td class="lmx-cheque-expander"></td>\r\n                                        </tr>\r\n                                        <tr class="lmx-cheque-info" ng-if="item.data.chequeItems.length">\r\n                                            <td colspan="6">\r\n                                                <div class="lmx-cheque-content">\r\n                                                    <div class="lmx-cheque-line" ng-repeat="chequeItem in item.data.chequeItems">\r\n                                                        <span class="lmx-cheque-item">{{::chequeItem.description |\r\n                                                            nbspSpaces}}</span>\r\n                                                        <span class="lmx-cheque-count">{{::chequeItem.count}}\r\n                                                            <span ng-if=":: chequeItem.unit" class="lmx-cheque-unit">{{:: chequeItem.unit}}</span></span>\r\n                                                    </div>\r\n                                                    <div class="lmx-cheque-total">\r\n                                                        {{::item.data.amount.amount | number: 2}}\r\n                                                        {{:: item.data.amount.currency }}\r\n                                                    </div>\r\n                                                </div>\r\n                                            </td>\r\n                                        </tr>\r\n                                        <tr class="lmx-cheque-info" ng-if="item.data.chequeAdditionalAttributes && item.data.chequeAdditionalAttributes.length">\r\n                                            <td colspan="6" class="lmx-cheque-content">\r\n                                                <h4>{{ \'history.eCheque\' | translate }}:</h4>\r\n                                                <div ng-repeat="attribute in item.data.chequeAdditionalAttributes">\r\n                                                    <a ng-href="{{ attribute.value }}" target="_blank">\r\n                                                        {{ attribute.stringValue}}\r\n                                                    </a>\r\n                                                </div>\r\n                                            </td>\r\n                                        </tr>\r\n                                    </tbody>\r\n                                </table>\r\n                            </div>\r\n                        </div>\r\n                        <div ng-show=":: !isPreview" ng-switch=":: !!isPaginated">\r\n                            <uib-pagination ng-switch-when="true" ng-show="!isReload && history.allCount > onPage" total-items="history.allCount" ng-model="$parent.currentPage" max-size="4" items-per-page="{{:: onPage}}" class="lmx-pagination" boundary-links="true" boundary-link-numbers="true" direction-links="false" force-ellipses="true" first-text="<<" last-text=">>" ng-change="paginationChange()"></uib-pagination>\r\n                            <div ng-switch-when="false">\r\n                                <a class="lmx-pseudolink lmx-right" ng-if="!inProgress && (from + onPage < history.allCount)" ng-click="increaseFrom()" href="">{{\'history.showMore\' | translate}}</a>\r\n                                <inline-loader line="">inProgress && !isReload</inline-loader>\r\n                            </div>\r\n                        </div>\r\n                        <a ng-if=":: isPreview" href="{{:: historyUrl}}" class="lmx-pseudolink">{{\'history.goToFullHistory\' | translate}}</a>\r\n                    </div>\r\n                    <div class="lmx-history-not-found" ng-if="!history.allCount && !inProgress">\r\n                        {{\'history.notFound\' | translate}}\r\n                    </div>\r\n                    <a ng-if="balanceChangeHistory && !history.allCount && !inProgress && !balanceChangesIsEmpty" href="" ng-click="changeTab(tabs.balanceChanges)">{{\'history.showBalanceChange\' | translate}}</a>\r\n                </div>\r\n                <div ng-if="balanceChangeHistory" ng-show="selectedTab.value === tabs.balanceChanges">\r\n                    <lmx-balance-changes from-date="fromDate" to-date="toDate" card-id="selectedCard"></lmx-balance-changes>\r\n                    <a ng-if="balanceChangeHistory && history.allCount && !inProgress && balanceChangesIsEmpty" href="" ng-click="changeTab(tabs.operations)">{{\'history.showOperations\' | translate}}</a>\r\n                </div>\r\n            </div>\r\n        </div>\r\n    </section>\r\n</div>\r\n'),
  • loymaxapp/trunk/public/css/style.min.css

    r2768816 r2779093  
    11/**
    2  * Loymax v2.2.20220810 (http://loymax.ru)
     2 * Loymax v2.2.20220902 (http://loymax.ru)
    33 * Copyright 2011-2022 Loymax, Inc.
    44 * License: MIT
     
    4646.loymax-container ul.lmx-tabs-container{border-bottom:1px solid #ccc;margin-top:15px}.loymax-container ul.lmx-tabs-container~div{background-color:#fff;padding:15px;border:1px solid #ccc;border-top:none;overflow:auto}.loymax-container ul.lmx-tabs-container li{display:inline-block;min-width:120px;height:50px;border:1px solid #ccc;border-bottom:none;text-align:center;line-height:50px;cursor:pointer;background-color:#f0f0f0;border-top-right-radius:2px;border-top-left-radius:2px;padding:0 10px}.loymax-container ul.lmx-tabs-container li:not(:last-of-type){margin-right:5px!important}.loymax-container ul.lmx-tabs-container li.active{box-shadow:0 2px 0 -1px #fff;background-color:#fff}
    4747.loymax-container .lmx-locale-switcher>div{display:inline}.loymax-container .lmx-locale-switcher>div:not(:last-child):after{content:" / "}.loymax-container .lmx-locale-switcher>div.active span{cursor:default}.loymax-container .lmx-locale-switcher>div:not(.active) span{text-decoration:underline;cursor:pointer}
    48 @font-face{font-family:Material Icons;font-style:normal;font-weight:400;src:url(https://fonts.gstatic.com/s/materialicons/v135/flUhRq6tzZclQEJ-Vdg-IuiaDsNZ.ttf) format("truetype")}.material-icons{font-family:Material Icons;font-weight:400;font-style:normal;font-size:24px;line-height:1;letter-spacing:normal;text-transform:none;display:inline-block;white-space:nowrap;word-wrap:normal;direction:ltr}body.lmx-authorised .lmx-hide-when-authed,body .lmx-hidden,body.lmx-unauthorised .lmx-show-when-authed{display:none!important}body:not(.lmx-bootstrapped).modal-open{overflow:hidden}body:not(.lmx-bootstrapped) .loymax-modal{overflow:hidden;position:fixed;top:0;left:0;height:100%;width:100%;background-color:hsla(0,0%,55%,.6);text-align:center;z-index:100;max-height:none}body:not(.lmx-bootstrapped) .loymax-modal.lmx-wide .modal-content{width:710px;padding:24px}body:not(.lmx-bootstrapped) .loymax-modal.lmx-localeError-modal{background-color:#8c8c8c}body:not(.lmx-bootstrapped) .loymax-modal.lmx-userAlert-modal.lmx-centered-modal .modal-content{top:50%;transform:translateY(-50%);width:430px}body:not(.lmx-bootstrapped) .loymax-modal.lmx-modal-sm .modal-content{margin-left:-150px;width:300px}body:not(.lmx-bootstrapped) .loymax-modal.lmx-modal-lg .modal-content{margin-left:-400px;width:800px;max-height:90%;overflow-y:auto;overflow-x:hidden}body:not(.lmx-bootstrapped) .loymax-modal .lmx-modal-closer{position:absolute;top:16px;right:16px;cursor:pointer;width:16px;height:16px;background:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBmaWxsPSJub25lIiBkPSJNMCAwaDI0djI0SDBWMHoiLz48cGF0aCBkPSJNMTkgNi40MUwxNy41OSA1IDEyIDEwLjU5IDYuNDEgNSA1IDYuNDEgMTAuNTkgMTIgNSAxNy41OSA2LjQxIDE5IDEyIDEzLjQxIDE3LjU5IDE5IDE5IDE3LjU5IDEzLjQxIDEyIDE5IDYuNDF6Ii8+PC9zdmc+) no-repeat 50% transparent}body:not(.lmx-bootstrapped) .loymax-modal .modal-content{left:50%;margin-left:-250px;position:absolute;width:500px;padding:24px;text-align:left;top:5%;background-color:#fff;overflow-y:auto;max-height:90%}body:not(.lmx-bootstrapped) .loymax-modal .modal-content .modal-footer,body:not(.lmx-bootstrapped) .loymax-modal .modal-content .modal-header{text-align:center}body:not(.lmx-bootstrapped) .loymax-modal .modal-content .modal-body{margin-bottom:20px}.lmx-embedded-menu,.lmx-embedded-user-info{display:none}.loymax-modal .lmx-form-group input{width:100%}.loymax-container{box-sizing:border-box;margin:0}.loymax-container *,.loymax-container :after,.loymax-container :before{box-sizing:border-box!important}.loymax-container *{outline:0!important}.loymax-container ul{list-style:none!important;padding:0!important;margin:0!important}.loymax-container ul li{margin:0!important}.loymax-container table{border-collapse:collapse;border-spacing:0;width:100%}.loymax-container pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.43;overflow-wrap:break-word;word-wrap:break-word;color:#333;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}.loymax-container .lmx-row{margin:20px 0}.loymax-container input[type=number]{-moz-appearance:textfield}.loymax-container input[type=number]::-webkit-inner-spin-button,.loymax-container input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.loymax-container .lmx-relative{position:relative}.loymax-container .lmx-left{float:left}.loymax-container .lmx-right{float:right}.loymax-container .lmx-hidden{display:none}.loymax-container .lmx-invisible{visibility:hidden}.loymax-container ul.lmx-topbar{text-align:right}.loymax-container ul.lmx-topbar li{display:inline-block;margin-left:15px}.loymax-container .menu-item{display:inline-block}.loymax-container .menu-item.current-menu-item a,.loymax-container .menu-item:not(.current-menu-item) span{display:none!important}.loymax-container .lmx-alert-message{padding-top:10px;padding-bottom:10px;font-size:18px;text-align:center}.loymax-container .lmx-loader-container{min-height:50px;min-width:50px}.loymax-container .lmx-loading{opacity:.2;cursor:default!important;pointer-events:none!important}.loymax-container .lmx-body-loader,.loymax-container .lmx-loader{position:absolute;top:0;left:0;right:0;bottom:0;min-height:50px}.loymax-container .lmx-body-loader:after,.loymax-container .lmx-loader:after{background:no-repeat 50%;content:"";position:absolute;top:50%;left:50%;background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+DQo8c3ZnIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHZlcnNpb249IjEuMCIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEyOCAxMjgiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KICAgIDxnPg0KICAgICAgPHBhdGggZD0iTTk3LjYzIDguMjNhNy4zOCA3LjM4IDAgMCAxIDIuNyAxMC4wN0w4OS4yIDM3LjU3YTcuMzggNy4zOCAwIDEgMS0xMi43Ny03LjM3bDExLjEyLTE5LjI3YTcuMzggNy4zOCAwIDAgMSAxMC4wOC0yLjd6IiBmaWxsPSIjNzU3NTc1IiBmaWxsLW9wYWNpdHk9IjEiLz4NCiAgICAgIDxwYXRoIGQ9Ik05Ny42MyA4LjIzYTcuMzggNy4zOCAwIDAgMSAyLjcgMTAuMDdMODkuMiAzNy41N2E3LjM4IDcuMzggMCAxIDEtMTIuNzctNy4zN2wxMS4xMi0xOS4yN2E3LjM4IDcuMzggMCAwIDEgMTAuMDgtMi43eiIgZmlsbD0iIzc1NzU3NSIgZmlsbC1vcGFjaXR5PSIwLjEiIHRyYW5zZm9ybT0icm90YXRlKDMwIDY0IDY0KSIvPg0KICAgICAgPHBhdGggZD0iTTk3LjYzIDguMjNhNy4zOCA3LjM4IDAgMCAxIDIuNyAxMC4wN0w4OS4yIDM3LjU3YTcuMzggNy4zOCAwIDEgMS0xMi43Ny03LjM3bDExLjEyLTE5LjI3YTcuMzggNy4zOCAwIDAgMSAxMC4wOC0yLjd6IiBmaWxsPSIjNzU3NTc1IiBmaWxsLW9wYWNpdHk9IjAuMSIgdHJhbnNmb3JtPSJyb3RhdGUoNjAgNjQgNjQpIi8+DQogICAgICA8cGF0aCBkPSJNOTcuNjMgOC4yM2E3LjM4IDcuMzggMCAwIDEgMi43IDEwLjA3TDg5LjIgMzcuNTdhNy4zOCA3LjM4IDAgMSAxLTEyLjc3LTcuMzdsMTEuMTItMTkuMjdhNy4zOCA3LjM4IDAgMCAxIDEwLjA4LTIuN3oiIGZpbGw9IiM3NTc1NzUiIGZpbGwtb3BhY2l0eT0iMC4xIiB0cmFuc2Zvcm09InJvdGF0ZSg5MCA2NCA2NCkiLz4NCiAgICAgIDxwYXRoIGQ9Ik05Ny42MyA4LjIzYTcuMzggNy4zOCAwIDAgMSAyLjcgMTAuMDdMODkuMiAzNy41N2E3LjM4IDcuMzggMCAxIDEtMTIuNzctNy4zN2wxMS4xMi0xOS4yN2E3LjM4IDcuMzggMCAwIDEgMTAuMDgtMi43eiIgZmlsbD0iIzc1NzU3NSIgZmlsbC1vcGFjaXR5PSIwLjE5IiB0cmFuc2Zvcm09InJvdGF0ZSgxMjAgNjQgNjQpIi8+DQogICAgICA8cGF0aCBkPSJNOTcuNjMgOC4yM2E3LjM4IDcuMzggMCAwIDEgMi43IDEwLjA3TDg5LjIgMzcuNTdhNy4zOCA3LjM4IDAgMSAxLTEyLjc3LTcuMzdsMTEuMTItMTkuMjdhNy4zOCA3LjM4IDAgMCAxIDEwLjA4LTIuN3oiIGZpbGw9IiM3NTc1NzUiIGZpbGwtb3BhY2l0eT0iMC4yOCIgdHJhbnNmb3JtPSJyb3RhdGUoMTUwIDY0IDY0KSIvPg0KICAgICAgPHBhdGggZD0iTTk3LjYzIDguMjNhNy4zOCA3LjM4IDAgMCAxIDIuNyAxMC4wN0w4OS4yIDM3LjU3YTcuMzggNy4zOCAwIDEgMS0xMi43Ny03LjM3bDExLjEyLTE5LjI3YTcuMzggNy4zOCAwIDAgMSAxMC4wOC0yLjd6IiBmaWxsPSIjNzU3NTc1IiBmaWxsLW9wYWNpdHk9IjAuMzgiIHRyYW5zZm9ybT0icm90YXRlKDE4MCA2NCA2NCkiLz4NCiAgICAgIDxwYXRoIGQ9Ik05Ny42MyA4LjIzYTcuMzggNy4zOCAwIDAgMSAyLjcgMTAuMDdMODkuMiAzNy41N2E3LjM4IDcuMzggMCAxIDEtMTIuNzctNy4zN2wxMS4xMi0xOS4yN2E3LjM4IDcuMzggMCAwIDEgMTAuMDgtMi43eiIgZmlsbD0iIzc1NzU3NSIgZmlsbC1vcGFjaXR5PSIwLjQ2IiB0cmFuc2Zvcm09InJvdGF0ZSgyMTAgNjQgNjQpIi8+DQogICAgICA8cGF0aCBkPSJNOTcuNjMgOC4yM2E3LjM4IDcuMzggMCAwIDEgMi43IDEwLjA3TDg5LjIgMzcuNTdhNy4zOCA3LjM4IDAgMSAxLTEyLjc3LTcuMzdsMTEuMTItMTkuMjdhNy4zOCA3LjM4IDAgMCAxIDEwLjA4LTIuN3oiIGZpbGw9IiM3NTc1NzUiIGZpbGwtb3BhY2l0eT0iMC41NSIgdHJhbnNmb3JtPSJyb3RhdGUoMjQwIDY0IDY0KSIvPg0KICAgICAgPHBhdGggZD0iTTk3LjYzIDguMjNhNy4zOCA3LjM4IDAgMCAxIDIuNyAxMC4wN0w4OS4yIDM3LjU3YTcuMzggNy4zOCAwIDEgMS0xMi43Ny03LjM3bDExLjEyLTE5LjI3YTcuMzggNy4zOCAwIDAgMSAxMC4wOC0yLjd6IiBmaWxsPSIjNzU3NTc1IiBmaWxsLW9wYWNpdHk9IjAuNjQiIHRyYW5zZm9ybT0icm90YXRlKDI3MCA2NCA2NCkiLz4NCiAgICAgIDxwYXRoIGQ9Ik05Ny42MyA4LjIzYTcuMzggNy4zOCAwIDAgMSAyLjcgMTAuMDdMODkuMiAzNy41N2E3LjM4IDcuMzggMCAxIDEtMTIuNzctNy4zN2wxMS4xMi0xOS4yN2E3LjM4IDcuMzggMCAwIDEgMTAuMDgtMi43eiIgZmlsbD0iIzc1NzU3NSIgZmlsbC1vcGFjaXR5PSIwLjczIiB0cmFuc2Zvcm09InJvdGF0ZSgzMDAgNjQgNjQpIi8+DQogICAgICA8cGF0aCBkPSJNOTcuNjMgOC4yM2E3LjM4IDcuMzggMCAwIDEgMi43IDEwLjA3TDg5LjIgMzcuNTdhNy4zOCA3LjM4IDAgMSAxLTEyLjc3LTcuMzdsMTEuMTItMTkuMjdhNy4zOCA3LjM4IDAgMCAxIDEwLjA4LTIuN3oiIGZpbGw9IiM3NTc1NzUiIGZpbGwtb3BhY2l0eT0iMC44MiIgdHJhbnNmb3JtPSJyb3RhdGUoMzMwIDY0IDY0KSIvPg0KICAgIDwvZz4NCjwvc3ZnPg0K);animation-name:lmx-rotation;animation-duration:.84s;animation-timing-function:steps(12);animation-iteration-count:infinite;transform-origin:center}.loymax-container .lmx-loader{z-index:100}.loymax-container .lmx-loader:after{width:50px;height:50px;background-color:transparent;background-size:50px}.loymax-container .lmx-body-loader{background-color:#fff;z-index:999}.loymax-container .lmx-body-loader:after{width:100px;height:100px}.loymax-container .lmx-inline-loader{position:relative;display:inline-block;width:30px;height:30px}.loymax-container .lmx-inline-loader:after{width:24px;height:24px;background:transparent no-repeat 50%/contain;content:"";position:absolute;top:50%;left:50%;background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+DQo8c3ZnIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHZlcnNpb249IjEuMCIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEyOCAxMjgiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KICAgIDxnPg0KICAgICAgPHBhdGggZD0iTTk3LjYzIDguMjNhNy4zOCA3LjM4IDAgMCAxIDIuNyAxMC4wN0w4OS4yIDM3LjU3YTcuMzggNy4zOCAwIDEgMS0xMi43Ny03LjM3bDExLjEyLTE5LjI3YTcuMzggNy4zOCAwIDAgMSAxMC4wOC0yLjd6IiBmaWxsPSIjNzU3NTc1IiBmaWxsLW9wYWNpdHk9IjEiLz4NCiAgICAgIDxwYXRoIGQ9Ik05Ny42MyA4LjIzYTcuMzggNy4zOCAwIDAgMSAyLjcgMTAuMDdMODkuMiAzNy41N2E3LjM4IDcuMzggMCAxIDEtMTIuNzctNy4zN2wxMS4xMi0xOS4yN2E3LjM4IDcuMzggMCAwIDEgMTAuMDgtMi43eiIgZmlsbD0iIzc1NzU3NSIgZmlsbC1vcGFjaXR5PSIwLjEiIHRyYW5zZm9ybT0icm90YXRlKDMwIDY0IDY0KSIvPg0KICAgICAgPHBhdGggZD0iTTk3LjYzIDguMjNhNy4zOCA3LjM4IDAgMCAxIDIuNyAxMC4wN0w4OS4yIDM3LjU3YTcuMzggNy4zOCAwIDEgMS0xMi43Ny03LjM3bDExLjEyLTE5LjI3YTcuMzggNy4zOCAwIDAgMSAxMC4wOC0yLjd6IiBmaWxsPSIjNzU3NTc1IiBmaWxsLW9wYWNpdHk9IjAuMSIgdHJhbnNmb3JtPSJyb3RhdGUoNjAgNjQgNjQpIi8+DQogICAgICA8cGF0aCBkPSJNOTcuNjMgOC4yM2E3LjM4IDcuMzggMCAwIDEgMi43IDEwLjA3TDg5LjIgMzcuNTdhNy4zOCA3LjM4IDAgMSAxLTEyLjc3LTcuMzdsMTEuMTItMTkuMjdhNy4zOCA3LjM4IDAgMCAxIDEwLjA4LTIuN3oiIGZpbGw9IiM3NTc1NzUiIGZpbGwtb3BhY2l0eT0iMC4xIiB0cmFuc2Zvcm09InJvdGF0ZSg5MCA2NCA2NCkiLz4NCiAgICAgIDxwYXRoIGQ9Ik05Ny42MyA4LjIzYTcuMzggNy4zOCAwIDAgMSAyLjcgMTAuMDdMODkuMiAzNy41N2E3LjM4IDcuMzggMCAxIDEtMTIuNzctNy4zN2wxMS4xMi0xOS4yN2E3LjM4IDcuMzggMCAwIDEgMTAuMDgtMi43eiIgZmlsbD0iIzc1NzU3NSIgZmlsbC1vcGFjaXR5PSIwLjE5IiB0cmFuc2Zvcm09InJvdGF0ZSgxMjAgNjQgNjQpIi8+DQogICAgICA8cGF0aCBkPSJNOTcuNjMgOC4yM2E3LjM4IDcuMzggMCAwIDEgMi43IDEwLjA3TDg5LjIgMzcuNTdhNy4zOCA3LjM4IDAgMSAxLTEyLjc3LTcuMzdsMTEuMTItMTkuMjdhNy4zOCA3LjM4IDAgMCAxIDEwLjA4LTIuN3oiIGZpbGw9IiM3NTc1NzUiIGZpbGwtb3BhY2l0eT0iMC4yOCIgdHJhbnNmb3JtPSJyb3RhdGUoMTUwIDY0IDY0KSIvPg0KICAgICAgPHBhdGggZD0iTTk3LjYzIDguMjNhNy4zOCA3LjM4IDAgMCAxIDIuNyAxMC4wN0w4OS4yIDM3LjU3YTcuMzggNy4zOCAwIDEgMS0xMi43Ny03LjM3bDExLjEyLTE5LjI3YTcuMzggNy4zOCAwIDAgMSAxMC4wOC0yLjd6IiBmaWxsPSIjNzU3NTc1IiBmaWxsLW9wYWNpdHk9IjAuMzgiIHRyYW5zZm9ybT0icm90YXRlKDE4MCA2NCA2NCkiLz4NCiAgICAgIDxwYXRoIGQ9Ik05Ny42MyA4LjIzYTcuMzggNy4zOCAwIDAgMSAyLjcgMTAuMDdMODkuMiAzNy41N2E3LjM4IDcuMzggMCAxIDEtMTIuNzctNy4zN2wxMS4xMi0xOS4yN2E3LjM4IDcuMzggMCAwIDEgMTAuMDgtMi43eiIgZmlsbD0iIzc1NzU3NSIgZmlsbC1vcGFjaXR5PSIwLjQ2IiB0cmFuc2Zvcm09InJvdGF0ZSgyMTAgNjQgNjQpIi8+DQogICAgICA8cGF0aCBkPSJNOTcuNjMgOC4yM2E3LjM4IDcuMzggMCAwIDEgMi43IDEwLjA3TDg5LjIgMzcuNTdhNy4zOCA3LjM4IDAgMSAxLTEyLjc3LTcuMzdsMTEuMTItMTkuMjdhNy4zOCA3LjM4IDAgMCAxIDEwLjA4LTIuN3oiIGZpbGw9IiM3NTc1NzUiIGZpbGwtb3BhY2l0eT0iMC41NSIgdHJhbnNmb3JtPSJyb3RhdGUoMjQwIDY0IDY0KSIvPg0KICAgICAgPHBhdGggZD0iTTk3LjYzIDguMjNhNy4zOCA3LjM4IDAgMCAxIDIuNyAxMC4wN0w4OS4yIDM3LjU3YTcuMzggNy4zOCAwIDEgMS0xMi43Ny03LjM3bDExLjEyLTE5LjI3YTcuMzggNy4zOCAwIDAgMSAxMC4wOC0yLjd6IiBmaWxsPSIjNzU3NTc1IiBmaWxsLW9wYWNpdHk9IjAuNjQiIHRyYW5zZm9ybT0icm90YXRlKDI3MCA2NCA2NCkiLz4NCiAgICAgIDxwYXRoIGQ9Ik05Ny42MyA4LjIzYTcuMzggNy4zOCAwIDAgMSAyLjcgMTAuMDdMODkuMiAzNy41N2E3LjM4IDcuMzggMCAxIDEtMTIuNzctNy4zN2wxMS4xMi0xOS4yN2E3LjM4IDcuMzggMCAwIDEgMTAuMDgtMi43eiIgZmlsbD0iIzc1NzU3NSIgZmlsbC1vcGFjaXR5PSIwLjczIiB0cmFuc2Zvcm09InJvdGF0ZSgzMDAgNjQgNjQpIi8+DQogICAgICA8cGF0aCBkPSJNOTcuNjMgOC4yM2E3LjM4IDcuMzggMCAwIDEgMi43IDEwLjA3TDg5LjIgMzcuNTdhNy4zOCA3LjM4IDAgMSAxLTEyLjc3LTcuMzdsMTEuMTItMTkuMjdhNy4zOCA3LjM4IDAgMCAxIDEwLjA4LTIuN3oiIGZpbGw9IiM3NTc1NzUiIGZpbGwtb3BhY2l0eT0iMC44MiIgdHJhbnNmb3JtPSJyb3RhdGUoMzMwIDY0IDY0KSIvPg0KICAgIDwvZz4NCjwvc3ZnPg0K);animation-name:lmx-rotation;animation-duration:.84s;animation-timing-function:steps(12);animation-iteration-count:infinite;transform-origin:center}.loymax-container .lmx-inline-loader.lmx-line{width:100%}.loymax-container .lmx-grecaptcha-badge{z-index:1}.loymax-container .lmx-settings .lmx-menu>*{margin-right:10px}.loymax-container .lmx-accounts,.loymax-container .lmx-contacts,.loymax-container .lmx-personal{max-width:400px}.loymax-container .lmx-accounts .lmx-social ul{display:flex;flex-direction:column}@keyframes lmx-rotation{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@media (max-width:960px){.lmx-base-menu{width:300px;position:fixed;background-color:#fff;z-index:100;padding:10px;box-shadow:3px 3px 5px #ccc}}.lmx-loymax-menu-item.current-menu-item a{font-weight:700!important}
     48@font-face{font-family:Material Icons;font-style:normal;font-weight:400;src:url(https://fonts.gstatic.com/s/materialicons/v139/flUhRq6tzZclQEJ-Vdg-IuiaDsNZ.ttf) format("truetype")}.material-icons{font-family:Material Icons;font-weight:400;font-style:normal;font-size:24px;line-height:1;letter-spacing:normal;text-transform:none;display:inline-block;white-space:nowrap;word-wrap:normal;direction:ltr}body.lmx-authorised .lmx-hide-when-authed,body .lmx-hidden,body.lmx-unauthorised .lmx-show-when-authed{display:none!important}body:not(.lmx-bootstrapped).modal-open{overflow:hidden}body:not(.lmx-bootstrapped) .loymax-modal{overflow:hidden;position:fixed;top:0;left:0;height:100%;width:100%;background-color:hsla(0,0%,55%,.6);text-align:center;z-index:100;max-height:none}body:not(.lmx-bootstrapped) .loymax-modal.lmx-wide .modal-content{width:710px;padding:24px}body:not(.lmx-bootstrapped) .loymax-modal.lmx-localeError-modal{background-color:#8c8c8c}body:not(.lmx-bootstrapped) .loymax-modal.lmx-userAlert-modal.lmx-centered-modal .modal-content{top:50%;transform:translateY(-50%);width:430px}body:not(.lmx-bootstrapped) .loymax-modal.lmx-modal-sm .modal-content{margin-left:-150px;width:300px}body:not(.lmx-bootstrapped) .loymax-modal.lmx-modal-lg .modal-content{margin-left:-400px;width:800px;max-height:90%;overflow-y:auto;overflow-x:hidden}body:not(.lmx-bootstrapped) .loymax-modal .lmx-modal-closer{position:absolute;top:16px;right:16px;cursor:pointer;width:16px;height:16px;background:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBmaWxsPSJub25lIiBkPSJNMCAwaDI0djI0SDBWMHoiLz48cGF0aCBkPSJNMTkgNi40MUwxNy41OSA1IDEyIDEwLjU5IDYuNDEgNSA1IDYuNDEgMTAuNTkgMTIgNSAxNy41OSA2LjQxIDE5IDEyIDEzLjQxIDE3LjU5IDE5IDE5IDE3LjU5IDEzLjQxIDEyIDE5IDYuNDF6Ii8+PC9zdmc+) no-repeat 50% transparent}body:not(.lmx-bootstrapped) .loymax-modal .modal-content{left:50%;margin-left:-250px;position:absolute;width:500px;padding:24px;text-align:left;top:5%;background-color:#fff;overflow-y:auto;max-height:90%}body:not(.lmx-bootstrapped) .loymax-modal .modal-content .modal-footer,body:not(.lmx-bootstrapped) .loymax-modal .modal-content .modal-header{text-align:center}body:not(.lmx-bootstrapped) .loymax-modal .modal-content .modal-body{margin-bottom:20px}.lmx-embedded-menu,.lmx-embedded-user-info{display:none}.loymax-modal .lmx-form-group input{width:100%}.loymax-container{box-sizing:border-box;margin:0}.loymax-container *,.loymax-container :after,.loymax-container :before{box-sizing:border-box!important}.loymax-container *{outline:0!important}.loymax-container ul{list-style:none!important;padding:0!important;margin:0!important}.loymax-container ul li{margin:0!important}.loymax-container table{border-collapse:collapse;border-spacing:0;width:100%}.loymax-container pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.43;overflow-wrap:break-word;word-wrap:break-word;color:#333;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}.loymax-container .lmx-row{margin:20px 0}.loymax-container input[type=number]{-moz-appearance:textfield}.loymax-container input[type=number]::-webkit-inner-spin-button,.loymax-container input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.loymax-container .lmx-relative{position:relative}.loymax-container .lmx-left{float:left}.loymax-container .lmx-right{float:right}.loymax-container .lmx-hidden{display:none}.loymax-container .lmx-invisible{visibility:hidden}.loymax-container ul.lmx-topbar{text-align:right}.loymax-container ul.lmx-topbar li{display:inline-block;margin-left:15px}.loymax-container .menu-item{display:inline-block}.loymax-container .menu-item.current-menu-item a,.loymax-container .menu-item:not(.current-menu-item) span{display:none!important}.loymax-container .lmx-alert-message{padding-top:10px;padding-bottom:10px;font-size:18px;text-align:center}.loymax-container .lmx-loader-container{min-height:50px;min-width:50px}.loymax-container .lmx-loading{opacity:.2;cursor:default!important;pointer-events:none!important}.loymax-container .lmx-body-loader,.loymax-container .lmx-loader{position:absolute;top:0;left:0;right:0;bottom:0;min-height:50px}.loymax-container .lmx-body-loader:after,.loymax-container .lmx-loader:after{background:no-repeat 50%;content:"";position:absolute;top:50%;left:50%;background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+DQo8c3ZnIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHZlcnNpb249IjEuMCIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEyOCAxMjgiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KICAgIDxnPg0KICAgICAgPHBhdGggZD0iTTk3LjYzIDguMjNhNy4zOCA3LjM4IDAgMCAxIDIuNyAxMC4wN0w4OS4yIDM3LjU3YTcuMzggNy4zOCAwIDEgMS0xMi43Ny03LjM3bDExLjEyLTE5LjI3YTcuMzggNy4zOCAwIDAgMSAxMC4wOC0yLjd6IiBmaWxsPSIjNzU3NTc1IiBmaWxsLW9wYWNpdHk9IjEiLz4NCiAgICAgIDxwYXRoIGQ9Ik05Ny42MyA4LjIzYTcuMzggNy4zOCAwIDAgMSAyLjcgMTAuMDdMODkuMiAzNy41N2E3LjM4IDcuMzggMCAxIDEtMTIuNzctNy4zN2wxMS4xMi0xOS4yN2E3LjM4IDcuMzggMCAwIDEgMTAuMDgtMi43eiIgZmlsbD0iIzc1NzU3NSIgZmlsbC1vcGFjaXR5PSIwLjEiIHRyYW5zZm9ybT0icm90YXRlKDMwIDY0IDY0KSIvPg0KICAgICAgPHBhdGggZD0iTTk3LjYzIDguMjNhNy4zOCA3LjM4IDAgMCAxIDIuNyAxMC4wN0w4OS4yIDM3LjU3YTcuMzggNy4zOCAwIDEgMS0xMi43Ny03LjM3bDExLjEyLTE5LjI3YTcuMzggNy4zOCAwIDAgMSAxMC4wOC0yLjd6IiBmaWxsPSIjNzU3NTc1IiBmaWxsLW9wYWNpdHk9IjAuMSIgdHJhbnNmb3JtPSJyb3RhdGUoNjAgNjQgNjQpIi8+DQogICAgICA8cGF0aCBkPSJNOTcuNjMgOC4yM2E3LjM4IDcuMzggMCAwIDEgMi43IDEwLjA3TDg5LjIgMzcuNTdhNy4zOCA3LjM4IDAgMSAxLTEyLjc3LTcuMzdsMTEuMTItMTkuMjdhNy4zOCA3LjM4IDAgMCAxIDEwLjA4LTIuN3oiIGZpbGw9IiM3NTc1NzUiIGZpbGwtb3BhY2l0eT0iMC4xIiB0cmFuc2Zvcm09InJvdGF0ZSg5MCA2NCA2NCkiLz4NCiAgICAgIDxwYXRoIGQ9Ik05Ny42MyA4LjIzYTcuMzggNy4zOCAwIDAgMSAyLjcgMTAuMDdMODkuMiAzNy41N2E3LjM4IDcuMzggMCAxIDEtMTIuNzctNy4zN2wxMS4xMi0xOS4yN2E3LjM4IDcuMzggMCAwIDEgMTAuMDgtMi43eiIgZmlsbD0iIzc1NzU3NSIgZmlsbC1vcGFjaXR5PSIwLjE5IiB0cmFuc2Zvcm09InJvdGF0ZSgxMjAgNjQgNjQpIi8+DQogICAgICA8cGF0aCBkPSJNOTcuNjMgOC4yM2E3LjM4IDcuMzggMCAwIDEgMi43IDEwLjA3TDg5LjIgMzcuNTdhNy4zOCA3LjM4IDAgMSAxLTEyLjc3LTcuMzdsMTEuMTItMTkuMjdhNy4zOCA3LjM4IDAgMCAxIDEwLjA4LTIuN3oiIGZpbGw9IiM3NTc1NzUiIGZpbGwtb3BhY2l0eT0iMC4yOCIgdHJhbnNmb3JtPSJyb3RhdGUoMTUwIDY0IDY0KSIvPg0KICAgICAgPHBhdGggZD0iTTk3LjYzIDguMjNhNy4zOCA3LjM4IDAgMCAxIDIuNyAxMC4wN0w4OS4yIDM3LjU3YTcuMzggNy4zOCAwIDEgMS0xMi43Ny03LjM3bDExLjEyLTE5LjI3YTcuMzggNy4zOCAwIDAgMSAxMC4wOC0yLjd6IiBmaWxsPSIjNzU3NTc1IiBmaWxsLW9wYWNpdHk9IjAuMzgiIHRyYW5zZm9ybT0icm90YXRlKDE4MCA2NCA2NCkiLz4NCiAgICAgIDxwYXRoIGQ9Ik05Ny42MyA4LjIzYTcuMzggNy4zOCAwIDAgMSAyLjcgMTAuMDdMODkuMiAzNy41N2E3LjM4IDcuMzggMCAxIDEtMTIuNzctNy4zN2wxMS4xMi0xOS4yN2E3LjM4IDcuMzggMCAwIDEgMTAuMDgtMi43eiIgZmlsbD0iIzc1NzU3NSIgZmlsbC1vcGFjaXR5PSIwLjQ2IiB0cmFuc2Zvcm09InJvdGF0ZSgyMTAgNjQgNjQpIi8+DQogICAgICA8cGF0aCBkPSJNOTcuNjMgOC4yM2E3LjM4IDcuMzggMCAwIDEgMi43IDEwLjA3TDg5LjIgMzcuNTdhNy4zOCA3LjM4IDAgMSAxLTEyLjc3LTcuMzdsMTEuMTItMTkuMjdhNy4zOCA3LjM4IDAgMCAxIDEwLjA4LTIuN3oiIGZpbGw9IiM3NTc1NzUiIGZpbGwtb3BhY2l0eT0iMC41NSIgdHJhbnNmb3JtPSJyb3RhdGUoMjQwIDY0IDY0KSIvPg0KICAgICAgPHBhdGggZD0iTTk3LjYzIDguMjNhNy4zOCA3LjM4IDAgMCAxIDIuNyAxMC4wN0w4OS4yIDM3LjU3YTcuMzggNy4zOCAwIDEgMS0xMi43Ny03LjM3bDExLjEyLTE5LjI3YTcuMzggNy4zOCAwIDAgMSAxMC4wOC0yLjd6IiBmaWxsPSIjNzU3NTc1IiBmaWxsLW9wYWNpdHk9IjAuNjQiIHRyYW5zZm9ybT0icm90YXRlKDI3MCA2NCA2NCkiLz4NCiAgICAgIDxwYXRoIGQ9Ik05Ny42MyA4LjIzYTcuMzggNy4zOCAwIDAgMSAyLjcgMTAuMDdMODkuMiAzNy41N2E3LjM4IDcuMzggMCAxIDEtMTIuNzctNy4zN2wxMS4xMi0xOS4yN2E3LjM4IDcuMzggMCAwIDEgMTAuMDgtMi43eiIgZmlsbD0iIzc1NzU3NSIgZmlsbC1vcGFjaXR5PSIwLjczIiB0cmFuc2Zvcm09InJvdGF0ZSgzMDAgNjQgNjQpIi8+DQogICAgICA8cGF0aCBkPSJNOTcuNjMgOC4yM2E3LjM4IDcuMzggMCAwIDEgMi43IDEwLjA3TDg5LjIgMzcuNTdhNy4zOCA3LjM4IDAgMSAxLTEyLjc3LTcuMzdsMTEuMTItMTkuMjdhNy4zOCA3LjM4IDAgMCAxIDEwLjA4LTIuN3oiIGZpbGw9IiM3NTc1NzUiIGZpbGwtb3BhY2l0eT0iMC44MiIgdHJhbnNmb3JtPSJyb3RhdGUoMzMwIDY0IDY0KSIvPg0KICAgIDwvZz4NCjwvc3ZnPg0K);animation-name:lmx-rotation;animation-duration:.84s;animation-timing-function:steps(12);animation-iteration-count:infinite;transform-origin:center}.loymax-container .lmx-loader{z-index:100}.loymax-container .lmx-loader:after{width:50px;height:50px;background-color:transparent;background-size:50px}.loymax-container .lmx-body-loader{background-color:#fff;z-index:999}.loymax-container .lmx-body-loader:after{width:100px;height:100px}.loymax-container .lmx-inline-loader{position:relative;display:inline-block;width:30px;height:30px}.loymax-container .lmx-inline-loader:after{width:24px;height:24px;background:transparent no-repeat 50%/contain;content:"";position:absolute;top:50%;left:50%;background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+DQo8c3ZnIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHZlcnNpb249IjEuMCIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEyOCAxMjgiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KICAgIDxnPg0KICAgICAgPHBhdGggZD0iTTk3LjYzIDguMjNhNy4zOCA3LjM4IDAgMCAxIDIuNyAxMC4wN0w4OS4yIDM3LjU3YTcuMzggNy4zOCAwIDEgMS0xMi43Ny03LjM3bDExLjEyLTE5LjI3YTcuMzggNy4zOCAwIDAgMSAxMC4wOC0yLjd6IiBmaWxsPSIjNzU3NTc1IiBmaWxsLW9wYWNpdHk9IjEiLz4NCiAgICAgIDxwYXRoIGQ9Ik05Ny42MyA4LjIzYTcuMzggNy4zOCAwIDAgMSAyLjcgMTAuMDdMODkuMiAzNy41N2E3LjM4IDcuMzggMCAxIDEtMTIuNzctNy4zN2wxMS4xMi0xOS4yN2E3LjM4IDcuMzggMCAwIDEgMTAuMDgtMi43eiIgZmlsbD0iIzc1NzU3NSIgZmlsbC1vcGFjaXR5PSIwLjEiIHRyYW5zZm9ybT0icm90YXRlKDMwIDY0IDY0KSIvPg0KICAgICAgPHBhdGggZD0iTTk3LjYzIDguMjNhNy4zOCA3LjM4IDAgMCAxIDIuNyAxMC4wN0w4OS4yIDM3LjU3YTcuMzggNy4zOCAwIDEgMS0xMi43Ny03LjM3bDExLjEyLTE5LjI3YTcuMzggNy4zOCAwIDAgMSAxMC4wOC0yLjd6IiBmaWxsPSIjNzU3NTc1IiBmaWxsLW9wYWNpdHk9IjAuMSIgdHJhbnNmb3JtPSJyb3RhdGUoNjAgNjQgNjQpIi8+DQogICAgICA8cGF0aCBkPSJNOTcuNjMgOC4yM2E3LjM4IDcuMzggMCAwIDEgMi43IDEwLjA3TDg5LjIgMzcuNTdhNy4zOCA3LjM4IDAgMSAxLTEyLjc3LTcuMzdsMTEuMTItMTkuMjdhNy4zOCA3LjM4IDAgMCAxIDEwLjA4LTIuN3oiIGZpbGw9IiM3NTc1NzUiIGZpbGwtb3BhY2l0eT0iMC4xIiB0cmFuc2Zvcm09InJvdGF0ZSg5MCA2NCA2NCkiLz4NCiAgICAgIDxwYXRoIGQ9Ik05Ny42MyA4LjIzYTcuMzggNy4zOCAwIDAgMSAyLjcgMTAuMDdMODkuMiAzNy41N2E3LjM4IDcuMzggMCAxIDEtMTIuNzctNy4zN2wxMS4xMi0xOS4yN2E3LjM4IDcuMzggMCAwIDEgMTAuMDgtMi43eiIgZmlsbD0iIzc1NzU3NSIgZmlsbC1vcGFjaXR5PSIwLjE5IiB0cmFuc2Zvcm09InJvdGF0ZSgxMjAgNjQgNjQpIi8+DQogICAgICA8cGF0aCBkPSJNOTcuNjMgOC4yM2E3LjM4IDcuMzggMCAwIDEgMi43IDEwLjA3TDg5LjIgMzcuNTdhNy4zOCA3LjM4IDAgMSAxLTEyLjc3LTcuMzdsMTEuMTItMTkuMjdhNy4zOCA3LjM4IDAgMCAxIDEwLjA4LTIuN3oiIGZpbGw9IiM3NTc1NzUiIGZpbGwtb3BhY2l0eT0iMC4yOCIgdHJhbnNmb3JtPSJyb3RhdGUoMTUwIDY0IDY0KSIvPg0KICAgICAgPHBhdGggZD0iTTk3LjYzIDguMjNhNy4zOCA3LjM4IDAgMCAxIDIuNyAxMC4wN0w4OS4yIDM3LjU3YTcuMzggNy4zOCAwIDEgMS0xMi43Ny03LjM3bDExLjEyLTE5LjI3YTcuMzggNy4zOCAwIDAgMSAxMC4wOC0yLjd6IiBmaWxsPSIjNzU3NTc1IiBmaWxsLW9wYWNpdHk9IjAuMzgiIHRyYW5zZm9ybT0icm90YXRlKDE4MCA2NCA2NCkiLz4NCiAgICAgIDxwYXRoIGQ9Ik05Ny42MyA4LjIzYTcuMzggNy4zOCAwIDAgMSAyLjcgMTAuMDdMODkuMiAzNy41N2E3LjM4IDcuMzggMCAxIDEtMTIuNzctNy4zN2wxMS4xMi0xOS4yN2E3LjM4IDcuMzggMCAwIDEgMTAuMDgtMi43eiIgZmlsbD0iIzc1NzU3NSIgZmlsbC1vcGFjaXR5PSIwLjQ2IiB0cmFuc2Zvcm09InJvdGF0ZSgyMTAgNjQgNjQpIi8+DQogICAgICA8cGF0aCBkPSJNOTcuNjMgOC4yM2E3LjM4IDcuMzggMCAwIDEgMi43IDEwLjA3TDg5LjIgMzcuNTdhNy4zOCA3LjM4IDAgMSAxLTEyLjc3LTcuMzdsMTEuMTItMTkuMjdhNy4zOCA3LjM4IDAgMCAxIDEwLjA4LTIuN3oiIGZpbGw9IiM3NTc1NzUiIGZpbGwtb3BhY2l0eT0iMC41NSIgdHJhbnNmb3JtPSJyb3RhdGUoMjQwIDY0IDY0KSIvPg0KICAgICAgPHBhdGggZD0iTTk3LjYzIDguMjNhNy4zOCA3LjM4IDAgMCAxIDIuNyAxMC4wN0w4OS4yIDM3LjU3YTcuMzggNy4zOCAwIDEgMS0xMi43Ny03LjM3bDExLjEyLTE5LjI3YTcuMzggNy4zOCAwIDAgMSAxMC4wOC0yLjd6IiBmaWxsPSIjNzU3NTc1IiBmaWxsLW9wYWNpdHk9IjAuNjQiIHRyYW5zZm9ybT0icm90YXRlKDI3MCA2NCA2NCkiLz4NCiAgICAgIDxwYXRoIGQ9Ik05Ny42MyA4LjIzYTcuMzggNy4zOCAwIDAgMSAyLjcgMTAuMDdMODkuMiAzNy41N2E3LjM4IDcuMzggMCAxIDEtMTIuNzctNy4zN2wxMS4xMi0xOS4yN2E3LjM4IDcuMzggMCAwIDEgMTAuMDgtMi43eiIgZmlsbD0iIzc1NzU3NSIgZmlsbC1vcGFjaXR5PSIwLjczIiB0cmFuc2Zvcm09InJvdGF0ZSgzMDAgNjQgNjQpIi8+DQogICAgICA8cGF0aCBkPSJNOTcuNjMgOC4yM2E3LjM4IDcuMzggMCAwIDEgMi43IDEwLjA3TDg5LjIgMzcuNTdhNy4zOCA3LjM4IDAgMSAxLTEyLjc3LTcuMzdsMTEuMTItMTkuMjdhNy4zOCA3LjM4IDAgMCAxIDEwLjA4LTIuN3oiIGZpbGw9IiM3NTc1NzUiIGZpbGwtb3BhY2l0eT0iMC44MiIgdHJhbnNmb3JtPSJyb3RhdGUoMzMwIDY0IDY0KSIvPg0KICAgIDwvZz4NCjwvc3ZnPg0K);animation-name:lmx-rotation;animation-duration:.84s;animation-timing-function:steps(12);animation-iteration-count:infinite;transform-origin:center}.loymax-container .lmx-inline-loader.lmx-line{width:100%}.loymax-container .lmx-grecaptcha-badge{z-index:1}.loymax-container .lmx-settings .lmx-menu>*{margin-right:10px}.loymax-container .lmx-accounts,.loymax-container .lmx-contacts,.loymax-container .lmx-personal{max-width:400px}.loymax-container .lmx-accounts .lmx-social ul{display:flex;flex-direction:column}@keyframes lmx-rotation{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@media (max-width:960px){.lmx-base-menu{width:300px;position:fixed;background-color:#fff;z-index:100;padding:10px;box-shadow:3px 3px 5px #ccc}}.lmx-loymax-menu-item.current-menu-item a{font-weight:700!important}
    4949.loymax-container .lmx-map{height:450px;overflow:hidden}.loymax-container .lmx-map .lmx-balloon{background-color:#fafad2;width:250px;position:relative}.loymax-container .lmx-map .lmx-title{color:red;font-size:20px;margin:0}.loymax-container .lmx-map .lmx-close{position:absolute;right:5px;top:5px;width:16px;height:16px;cursor:pointer}.loymax-container .lmx-map .lmx-map-balloon-wrapper{width:200px}.loymax-container .lmx-map .lmx-map-balloon-wrapper .lmx-map-balloon-brand-logo-container{height:200px;position:relative;width:200px}.loymax-container .lmx-map .lmx-map-balloon-wrapper .lmx-map-balloon-brand-logo-container img{display:block;position:relative;height:auto;width:auto;padding:0;max-width:100%;max-height:100%;margin:0 auto;top:50%;transform:translateY(-50%)}.loymax-container .lmx-map .lmx-map-balloon-wrapper .lmx-map-balloon-merchant-title{-webkit-margin-before:0;margin-block-start:0;-webkit-margin-after:0;margin-block-end:0;padding:3px 0}.loymax-container .lmx-map .lmx-map-balloon-wrapper .lmx-map-balloon-merchant-schedule .lmx-map-balloon-schedule{position:relative}.loymax-container .lmx-map .lmx-map-balloon-wrapper .lmx-map-balloon-merchant-schedule .lmx-map-balloon-schedule:before{content:"";display:inline-block;position:relative;width:.6em;height:.6em;border-radius:50%;vertical-align:baseline;margin-right:5px}.loymax-container .lmx-map .lmx-map-balloon-wrapper .lmx-map-balloon-merchant-schedule .lmx-map-balloon-schedule._open:before{background:green}.loymax-container .lmx-map .lmx-map-balloon-wrapper .lmx-map-balloon-merchant-schedule .lmx-map-balloon-schedule._close:before{background:red}
    5050.loymax-container .lmx-merchants-map-row{display:flex}.loymax-container .lmx-merchants-map-row .lmx-tabs-container{display:none}.loymax-container .lmx-merchants-map-row .lmx-tabs-container li{width:49%}.loymax-container .lmx-merchants-map-row .lmx-tabs-container li:first-child{margin-right:2%!important}.loymax-container .lmx-merchants-map-row .lmx-tabs-container~div{border:0}.loymax-container .lmx-merchants-map-row .lmx-map,.loymax-container .lmx-merchants-map-row .lmx-merchant-list{padding:0}.loymax-container .lmx-merchants-map-row .lmx-merchant-list{width:30%;max-width:30%;margin-right:40px;position:relative;z-index:1}.loymax-container .lmx-merchants-map-row .lmx-merchant-list ul>li{overflow-wrap:break-word;word-wrap:break-word;word-break:break-word;-webkit-hyphens:auto;-ms-hyphens:auto;hyphens:auto;cursor:pointer;padding-right:15px}.loymax-container .lmx-merchants-map-row .lmx-merchant-list ul>li.lmx-unclickable{cursor:default}.loymax-container .lmx-merchants-map-row .lmx-merchant-list ul>li:first-of-type p{margin-top:0}.loymax-container .lmx-merchants-map-row .lmx-merchant-list .scroller-wrapper{height:450px;max-height:450px}.loymax-container .lmx-merchants-map-row .lmx-map{flex-grow:1}.loymax-container .lmx-merchant-filter{display:flex;flex-wrap:wrap;justify-content:space-between;width:calc(70% - 40px);margin-left:auto}.loymax-container .lmx-merchant-filter button{flex-shrink:0}.loymax-container .lmx-merchant-filter .customSelect{flex-shrink:0;width:48%;margin-bottom:5px;min-height:inherit}.loymax-container .lmx-merchant-filter .customSelect>.lmx-loader{background-size:contain;min-height:inherit;background-color:hsla(0,0%,100%,.6)}.loymax-container .lmx-merchant-filter .customSelect-item{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;padding:0 10px;text-align:left}
  • loymaxapp/trunk/readme.txt

    r2768816 r2779093  
    3737
    3838== Changelog ==
     39= 3.3.8 =
     40* Правки метода загрузки детального баланса
    3941= 3.3.7 =
    4042* Авторизация с паролем или по идентификатору с одноразовым паролем
Note: See TracChangeset for help on using the changeset viewer.