fmode-ng 0.0.205 → 0.0.206
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/user/modal-user-login/modal-user-login.component.mjs +3 -3
- package/fesm2022/fmode-ng.mjs +2 -2
- package/fesm2022/fmode-ng.mjs.map +1 -1
- package/lib/aigc/story/fm-story-list/story-preview.d.ts +1 -1
- package/lib/person/edit-upload/edit-upload.component.d.ts +1 -1
- package/package.json +1 -1
|
@@ -285,13 +285,13 @@ export class ModalUserLoginComponent {
|
|
|
285
285
|
return "rgb(" + r + "," + g + "," + b + ")";
|
|
286
286
|
}
|
|
287
287
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModalUserLoginComponent, deps: [{ token: i1.AuthService }, { token: i2.Router }, { token: i2.ActivatedRoute }, { token: i3.HttpClient }, { token: i4.ToastController }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
288
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModalUserLoginComponent, isStandalone: true, selector: "fm-modal-user-login", outputs: { loginSuccess: "loginSuccess" }, host: { listeners: { "document:keydown.escape": "handleEscapeKey($event)" } }, viewQueries: [{ propertyName: "canvasDom", first: true, predicate: ["canvasDom"], descendants: true }, { propertyName: "smsCodeInput", first: true, predicate: ["smsCodeInput"], descendants: true }], ngImport: i0, template: "<!--\u767B\u5F55\u5F39\u51FA\u6846\u8BBE\u7F6E-->\r\n<!--\u80CC\u666F\u7070\u8272\u8499\u7248-->\r\n<div\r\n class=\"popup\"\r\n [style.display]=\"authServ.isModalShow ? 'block' : 'none'\"\r\n (click)=\"close()\"\r\n>\r\n <div class=\"popup-content\" [class.fullscreen]=\"authServ.modalType=='fullscreen'\" [class.sheet]=\"authServ.modalType=='sheet'\"\r\n (click)=\"$event.stopPropagation()\">\r\n <div class=\"popup-box\">\r\n <!--\u5F39\u6846\u5185\u8BBE\u7F6Eposition:absolute,\u89C4\u8303\u6392\u7248\uFF0C\u540E\u7EED\u53EA\u9700position:relative\u589E\u51CF\u5185\u5BB9-->\r\n <div class=\"popup-box-content\">\r\n <div class=\"logo-img-login\">\r\n <img\r\n [src]=\"authServ.logoUrl\"\r\n alt=\"fmode\"\r\n />\r\n </div>\r\n\r\n <!--\u5173\u95ED\u56FE\u6807\u6309\u94AE-->\r\n <div class=\"close-icon-box\">\r\n <div class=\"iconfont icon-shanchu2\" (click)=\"close()\"></div>\r\n </div>\r\n <!--\u6309\u94AE\u5207\u6362\u767B\u5F55\u65B9\u5F0F-->\r\n <div class=\"button-box\" *ngIf=\"authServ?.loginTypeCount>1\">\r\n <div class=\"button-group\">\r\n <button *ngIf=\"authServ?.loginOptions?.userpwd\"\r\n class=\"login-select-button\"\r\n [class.active]=\"authServ.activeButton === '\u8D26\u53F7\u5BC6\u7801'\"\r\n (click)=\"setActiveButton('\u8D26\u53F7\u5BC6\u7801')\"\r\n >\r\n \u8D26\u53F7\u5BC6\u7801\r\n </button>\r\n <button *ngIf=\"authServ?.loginOptions?.mobilecode\"\r\n class=\"login-select-button\"\r\n [class.active]=\"authServ.activeButton === '\u77ED\u4FE1\u9A8C\u8BC1'\"\r\n (click)=\"setActiveButton('\u77ED\u4FE1\u9A8C\u8BC1')\"\r\n >\r\n \u77ED\u4FE1\u9A8C\u8BC1\r\n </button>\r\n <button *ngIf=\"authServ?.loginOptions?.wechat\"\r\n class=\"login-select-button\"\r\n [class.active]=\"authServ.activeButton === '\u5FAE\u4FE1\u626B\u7801'\"\r\n (click)=\"setActiveButton('\u5FAE\u4FE1\u626B\u7801')\"\r\n >\r\n \u5FAE\u4FE1\u626B\u7801\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <!--\u624B\u673A\u9A8C\u8BC1\u7801-->\r\n <form class=\"message-form\" [class.active]=\"authServ.activeButton === '\u77ED\u4FE1\u9A8C\u8BC1'\" *ngIf=\"authServ?.loginOptions?.mobilecode\">\r\n <div class=\"login-input-box\">\r\n <div class=\"popup-input-frontnumber\">+86</div>\r\n <input\r\n class=\"popup-input-itemone\"\r\n type=\"text\"\r\n required=\"required\"\r\n [(ngModel)]=\"loginInfo.mobile\"\r\n [ngModelOptions]=\"{ standalone: true }\"\r\n maxlength=\"12\"\r\n placeholder=\"\u8BF7\u8F93\u5165\u624B\u673A\u53F7\"\r\n />\r\n </div>\r\n <div *ngIf=\"authServ?.enabledLocalCode\"\r\n class=\"login-input-box local-code\" #canvasDom>\r\n <input\r\n class=\"popup-input-itemtwo\"\r\n type=\"text\"\r\n required=\"required\"\r\n [(ngModel)]=\"localCodeNum\"\r\n [ngModelOptions]=\"{ standalone: true }\"\r\n maxlength=\"4\"\r\n placeholder=\"\u8BF7\u8F93\u5165\u6821\u9A8C\u7801\"\r\n />\r\n <!-- <canvas\r\n #canvas\r\n width=\"100\"\r\n height=\"44\"\r\n (click)=\"updateDrawCode()\"\r\n class=\"canvas\"\r\n ></canvas> -->\r\n </div>\r\n <div class=\"login-input-box\">\r\n <input #smsCodeInput\r\n class=\"popup-input-itemtwo\"\r\n type=\"text\"\r\n required=\"required\"\r\n placeholder=\"\u8BF7\u8F93\u5165\u77ED\u4FE1\u9A8C\u8BC1\u7801\"\r\n [(ngModel)]=\"loginInfo.code\"\r\n (change)=\"smsAutoLogin()\"\r\n [ngModelOptions]=\"{ standalone: true }\"\r\n maxlength=\"6\"\r\n />\r\n <button\r\n class=\"checknumber-button\"\r\n type=\"submit\"\r\n [value]=\"buttonText\"\r\n [disabled]=\"isCountingdown\"\r\n (click)=\"startCountdown()\"\r\n [class.active]=\"isCountingdown\"\r\n >\r\n {{buttonText}}\r\n </button>\r\n </div>\r\n\r\n <!-- \u7528\u6237\u534F\u8BAE -->\r\n <div class=\"rule-box\">\r\n <span>\u672A\u6CE8\u518C\u7684\u624B\u673A\u53F7\uFF0C\u5C06\u81EA\u52A8\u521B\u5EFA\u5E10\u53F7\u5E76\u767B\u5F55\u3002</span>\r\n </div>\r\n\r\n <div class=\"login-submit-box\">\r\n <button class=\"login-submit-button\" type=\"submit\" (click)=\"login()\">\r\n \u767B\u5F55\r\n </button>\r\n </div>\r\n </form>\r\n\r\n <!--\u8D26\u53F7\u5BC6\u7801\u767B\u5F55-->\r\n <form class=\"mobile-form\" [class.active]=\"authServ.activeButton === '\u8D26\u53F7\u5BC6\u7801'\" *ngIf=\"authServ?.loginOptions?.userpwd\">\r\n <div class=\"login-input-box\">\r\n <input\r\n maxlength=\"12\"\r\n [(ngModel)]=\"mobile\"\r\n [ngModelOptions]=\"{ standalone: true }\"\r\n class=\"popup-input-itemnomal\"\r\n type=\"text\"\r\n required=\"required\"\r\n placeholder=\"\u8BF7\u8F93\u5165\u624B\u673A\u53F7\"\r\n />\r\n </div>\r\n\r\n <div class=\"login-input-box\">\r\n <input\r\n [(ngModel)]=\"password\"\r\n [ngModelOptions]=\"{ standalone: true }\"\r\n class=\"popup-input-itemnomal\"\r\n type=\"password\"\r\n required=\"required\"\r\n placeholder=\"\u8BF7\u8F93\u5165\u5BC6\u7801\"\r\n />\r\n </div>\r\n\r\n <!-- \u8BB0\u4F4F\u5BC6\u7801 -->\r\n <div class=\"passwprd-box\">\r\n <div class=\"remember-password-box\">\r\n <input type=\"checkbox\" id=\"remember-password\" />\r\n \u8BB0\u4F4F\u5BC6\u7801\r\n </div>\r\n\r\n <!-- \u5FD8\u8BB0\u5BC6\u7801 -->\r\n <div class=\"password-forget\" (click)=\"setActiveButton('\u6CE8\u518C\u5E10\u53F7')\">\r\n \u6CE8\u518C\u5E10\u53F7\r\n </div>\r\n </div>\r\n\r\n <!-- \u7528\u6237\u534F\u8BAE -->\r\n <div class=\"rule-box\">\r\n <span>\r\n <input type=\"checkbox\" [(ngModel)]=\"isUserRuleChecked\" [ngModelOptions]=\"{ standalone: true }\" style=\"margin-right:5px\"/>\r\n <span (click)=\"isUserRuleChecked=true\">\u540C\u610F</span></span>\r\n <span (click)=\"isUserRuleChecked=true\">\u300A\u7528\u6237\u534F\u8BAE\u53CA\u9690\u79C1\u6761\u6B3E\u300B</span>\r\n </div>\r\n\r\n\r\n <!-- \u5FD8\u8BB0\u5BC6\u7801 -->\r\n <!-- <div class=\"password-forget\">\u5FD8\u8BB0\u5BC6\u7801?</div>\r\n </div> -->\r\n\r\n <div class=\"login-submit-box\">\r\n <button\r\n class=\"login-submit-button\"\r\n type=\"submit\"\r\n (click)=\"loginMobilePassword()\"\r\n >\r\n \u767B\u5F55\r\n </button>\r\n </div>\r\n </form>\r\n\r\n <!-- \u5E10\u53F7\u5BC6\u7801\u6CE8\u518C -->\r\n <form class=\"mobile-form\" [class.active]=\"authServ.activeButton === '\u6CE8\u518C\u5E10\u53F7'\">\r\n <div class=\"login-input-box\">\r\n <input\r\n [(ngModel)]=\"mobile\"\r\n [ngModelOptions]=\"{ standalone: true }\"\r\n class=\"popup-input-itemnomal\"\r\n type=\"text\"\r\n required=\"required\"\r\n placeholder=\"\u8BF7\u8F93\u5165\u624B\u673A\u53F7\"\r\n />\r\n </div>\r\n\r\n <div class=\"login-input-box\">\r\n <input\r\n [(ngModel)]=\"password\"\r\n [ngModelOptions]=\"{ standalone: true }\"\r\n class=\"popup-input-itemnomal\"\r\n type=\"password\"\r\n required=\"required\"\r\n placeholder=\"\u8BF7\u8F93\u5165\u5BC6\u7801\"\r\n />\r\n </div>\r\n\r\n <div class=\"login-input-box\">\r\n <input\r\n [(ngModel)]=\"password2\"\r\n [ngModelOptions]=\"{ standalone: true }\"\r\n class=\"popup-input-itemnomal\"\r\n type=\"password\"\r\n required=\"required\"\r\n placeholder=\"\u8BF7\u518D\u6B21\u8F93\u5165\u5BC6\u7801\"\r\n />\r\n </div>\r\n\r\n <div class=\"login-submit-box\">\r\n <button\r\n class=\"login-submit-button\"\r\n type=\"submit\"\r\n (click)=\"signMobilePassword()\"\r\n >\r\n \u6CE8\u518C\r\n </button>\r\n </div>\r\n </form>\r\n\r\n <!--\u5FAE\u4FE1\u626B\u7801\u767B\u9646-->\r\n <form class=\"wechat-form\" [class.active]=\"authServ.activeButton === '\u5FAE\u4FE1\u626B\u7801'\" *ngIf=\"authServ?.loginOptions?.wechat\">\r\n <div class=\"wechat-login-box\">\r\n <img\r\n class=\"login-erweima-img\"\r\n [src]=\"authServ.wechatUrl\"\r\n alt=\"\u5FAE\u4FE1\u626B\u7801\u767B\u9646\u4E8C\u7EF4\u7801\"\r\n />\r\n </div>\r\n <div class=\"wechat-explain\">\u4F7F\u7528\u5FAE\u4FE1\u626B\u4E00\u626B,\u626B\u7801\u767B\u5F55 \"\u98DE\u7801AI\"</div>\r\n </form>\r\n\r\n <!--\u8FD4\u56DE\u9996\u9875-->\r\n <div class=\"back-home-box\" *ngIf=\"authServ.showBackHome\">\r\n <button class=\"back-homepage-button\" (click)=\"goHome()\">\r\n \u8FD4\u56DE\u9996\u9875\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";:host{--fmode-background-primary: #FFF;--login-color-primary: var(--fmode-color-primary,#0199f9);--login-bgcolor-primary: var(--fmode-login-bgcolor-primary,dodgerblue);--login-bgcolor-secondary: var(--fmode-login-bgcolor-secondary,#00dbde);--login-bgcolor-third: var(--fmode-login-bgcolor-third,#f902ff)}:host-context(body.dark) .popup{--login-color-primary: #7974ff;--fmode-background-primary: #000000}:host-context(body.dark) .popup .remember-password-box{color:#fff}.popup{display:flex;position:fixed;left:0;top:0;width:100%;height:100%;background-color:#0006;z-index:1000}@media screen and (max-width: 800px){.popup-content.fullscreen .popup-box{position:fixed!important;left:0!important;top:0!important;height:100vh!important;width:100vw!important;border-radius:0!important}.popup-content.fullscreen .popup-box .popup-box-content{padding-top:35%;border-radius:50px!important}.popup{background:#00000080}.popup-content.sheet{background:transparent!important}.popup-content.sheet .popup-box{position:fixed!important;left:0!important;top:calc(100vh - 480px);height:530px;width:100vw!important;border-radius:50px!important}.popup-content.sheet .popup-box .popup-box-content{border-radius:50px!important}}.popup-content{margin:7% auto;display:flex;width:500px;height:600px;border-radius:50px 5px;background-color:var(--fmode-background-primary)}.popup-content .popup-box{width:500px;height:600px;position:relative;border-radius:50px 5px;background-color:var(--login-bgcolor-primary);overflow:hidden}.popup-content .popup-box .popup-box-content{position:absolute;border-radius:50px 5px;inset:4px;background-color:var(--fmode-background-primary);z-index:1}.popup-content .popup-box .popup-box-content .logo-img-login{margin-top:35px;position:relative;width:100%;display:flex;justify-content:center;z-index:2}.popup-content .popup-box .popup-box-content .logo-img-login img{height:auto;max-width:150px}.popup-content .popup-box .popup-box-content .close-icon-box{position:relative;top:20px;right:20px;float:right;font-size:20px;cursor:pointer;z-index:2}.popup-content .popup-box .popup-box-content .button-box{display:flex;justify-content:center;margin:auto;padding:10px 10%;border-radius:10px}.popup-content .popup-box .popup-box-content .button-box .button-group{position:relative;display:flex;width:100%;line-height:40px;border-radius:10px;background-color:plum;z-index:2}.popup-content .popup-box .popup-box-content .button-box .login-select-button{flex:1;outline:none;border:none;border-radius:10px;font-size:16px;cursor:pointer;color:#fff;background-color:inherit;transition:background-color .3s;padding:1rem 0}.popup-content .popup-box .popup-box-content .button-box .login-select-button:hover{flex:1;outline:none;border:none;border-radius:10px;font-size:16px;cursor:pointer;color:#000;background-color:inherit;transition:background-color .3s}.popup-content .popup-box .popup-box-content .button-box .login-select-button.active{background-color:var(--login-color-primary);border-radius:10px}.popup-content .popup-box .popup-box-content input{color:#000}.popup-content .popup-box .popup-box-content .message-form,.popup-content .popup-box .popup-box-content .mobile-form,.popup-content .popup-box .popup-box-content .wechat-form{display:none}.popup-content .popup-box .popup-box-content .message-form.active,.popup-content .popup-box .popup-box-content .mobile-form.active,.popup-content .popup-box .popup-box-content .wechat-form.active{display:block}.popup-content .popup-box:before{content:\"\";position:absolute;top:-50%;left:-50%;width:500px;height:600px;background:linear-gradient(0deg,transparent,var(--login-bgcolor-third),var(--login-bgcolor-third));transform-origin:bottom right;animation:animate 6s linear infinite}.popup-content .popup-box:after{content:\"\";position:absolute;top:-50%;left:-50%;width:500px;height:600px;background:linear-gradient(0deg,transparent,var(--login-bgcolor-secondary),var(--login-bgcolor-secondary));transform-origin:bottom right;animation:animate 6s linear infinite;animation-delay:-3s}@keyframes animate{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.popup-content .login-submit-box{position:relative}.popup-content .login-submit-button{margin-top:15px;padding:6px;width:100%;line-height:40px;border-radius:10px;border:0;position:relative;box-shadow:0 2px 10px #00000029,0 3px 6px #0000001a;text-decoration:none;font-size:18px;font-weight:700;letter-spacing:2px;text-align:center;color:#fff;background-color:var(--login-color-primary);transition:.3s ease all;cursor:pointer;z-index:1}.popup-content .login-submit-button:before{transition:.5s all ease;position:absolute;inset:0 50%;opacity:0;content:\"\";background-color:var(--fmode-background-primary);z-index:-1}.popup-content .login-submit-button:hover{color:var(--login-color-primary)}.popup-content .login-submit-button:hover:before{border-radius:10px;border:3px solid var(--login-color-primary);box-sizing:border-box;transition:.5s all ease;left:0;right:0;opacity:1}.popup-content .login-submit-button:active{transform:scale(.9)}.popup-content .message-form{padding:6px 55px;display:flex;position:relative;border-radius:50px 5px;background-color:var(--fmode-background-primary)}.popup-content .message-form .login-input-box{display:flex;align-items:center;padding-top:10px}.popup-content .message-form .login-input-box .popup-input-frontnumber{padding:6px 12px;position:relative;border-radius:10px 0 0 10px;line-height:40px;font-size:18px;color:#4d4d4d;background-color:#ededed}.popup-content .message-form .popup-input-itemone{padding:6px 12px;position:relative;line-height:40px;border-radius:0 10px 10px 0;border:0;width:93%;outline:none;box-shadow:none;font-size:18px;letter-spacing:.03em;background-color:#ededed;transition:.5s}.popup-content .message-form .popup-input-itemtwo{padding:6px 12px 6px 16px;position:relative;line-height:40px;border-radius:10px;border:0;width:55%;outline:none;box-shadow:none;font-size:18px;letter-spacing:.03em;background-color:#ededed;transition:.5s}.popup-content .message-form .checknumber-button{margin-left:46px;padding:6px;border-radius:10px;line-height:40px;font-size:18px;width:124px;border:none;outline:none;cursor:pointer;color:#fff;background:var(--login-color-primary)}.popup-content .message-form .checknumber-button:hover{margin-left:46px;padding:6px;border-radius:10px;line-height:40px;font-size:18px;width:124px;border:none;outline:none;cursor:pointer;background:#4bace9}.popup-content .message-form .checknumber-button.active{background:#c7c7c7}.popup-content .rule-box{display:flex;padding-top:4px;padding-left:15px;padding-right:10px;justify-content:space-between;font-size:15px}.popup-content .rule-box span,.popup-content .rule-box ion-checkbox{font-size:15px;color:var(--login-color-primary)}.popup-content .mobile-form{padding:6px 55px;display:flex;position:relative;border-radius:50px 5px;background-color:var(--fmode-background-primary)}.popup-content .mobile-form .login-input-box{padding-top:10px}.popup-content .mobile-form .login-input-box .popup-input-itemnomal{margin-top:20px;padding:6px 12px 6px 14px;position:relative;line-height:40px;border-radius:10px;border:0;width:100%;outline:none;box-shadow:none;font-size:18px;letter-spacing:.03em;background-color:#ededed;transition:.5s}.popup-content .mobile-form .passwprd-box{display:flex;padding-top:4px;justify-content:space-between}.popup-content .mobile-form .passwprd-box .remember-password-box{margin:10px 0 0 15px;font-size:15px}.popup-content .mobile-form .passwprd-box .password-forget{margin-top:10px;margin-right:15px;font-size:15px;color:gray;cursor:pointer}.popup-content .mobile-form .passwprd-box .password-forget:hover{margin-top:10px;margin-right:15px;font-size:15px;color:#000;cursor:pointer}.popup-content .wechat-form{padding:6px 55px;display:flex;position:relative;border-radius:50px 5px;background-color:var(--fmode-background-primary)}.popup-content .wechat-form .wechat-login-box{display:flex;justify-content:center}.popup-content .wechat-form .wechat-login-box .login-erweima-img{margin-top:30px;width:210px}.popup-content .wechat-form .wechat-explain{padding-top:20px;font-size:16px;text-align:center}.popup-content .back-home-box{display:flex;justify-content:center;padding:6px 55px}.popup-content .back-homepage-button{margin-top:15px;padding:6px;width:100%;line-height:40px;border-radius:10px;border:0;position:relative;box-shadow:0 2px 10px #00000029,0 3px 6px #0000001a;text-decoration:none;font-size:18px;font-weight:700;letter-spacing:2px;text-align:center;color:#fff;background-color:var(--login-color-primary);transition:.3s ease all;cursor:pointer;x:1}.popup-content .back-homepage-button:before{transition:.5s all ease;position:absolute;inset:0 50%;opacity:0;content:\"\";background-color:var(--fmode-background-primary);z-index:-1}.popup-content .back-homepage-button:hover{color:var(--login-color-primary)}.popup-content .back-homepage-button:hover:before{border-radius:10px;border:3px solid var(--login-color-primary);box-sizing:border-box;transition:.5s all ease;left:0;right:0;opacity:1}.popup-content .local-code{justify-content:space-between}.popup-content .local-code .canvas{border:1px solid #c2def5;border-radius:5px;width:100px;height:44px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i6.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i6.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i6.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i6.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i6.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i6.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: ReactiveFormsModule }] }); }
|
|
288
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModalUserLoginComponent, isStandalone: true, selector: "fm-modal-user-login", outputs: { loginSuccess: "loginSuccess" }, host: { listeners: { "document:keydown.escape": "handleEscapeKey($event)" } }, viewQueries: [{ propertyName: "canvasDom", first: true, predicate: ["canvasDom"], descendants: true }, { propertyName: "smsCodeInput", first: true, predicate: ["smsCodeInput"], descendants: true }], ngImport: i0, template: "<!--\u767B\u5F55\u5F39\u51FA\u6846\u8BBE\u7F6E-->\r\n<!--\u80CC\u666F\u7070\u8272\u8499\u7248-->\r\n<div\r\n class=\"popup\"\r\n [style.display]=\"authServ.isModalShow ? 'block' : 'none'\"\r\n (click)=\"close()\"\r\n>\r\n <div class=\"popup-content\" [class.fullscreen]=\"authServ.modalType=='fullscreen'\" [class.sheet]=\"authServ.modalType=='sheet'\"\r\n (click)=\"$event.stopPropagation()\">\r\n <div class=\"popup-box\">\r\n <!--\u5F39\u6846\u5185\u8BBE\u7F6Eposition:absolute,\u89C4\u8303\u6392\u7248\uFF0C\u540E\u7EED\u53EA\u9700position:relative\u589E\u51CF\u5185\u5BB9-->\r\n <div class=\"popup-box-content\">\r\n <div class=\"logo-img-login\">\r\n <img\r\n [src]=\"authServ.logoUrl\"\r\n alt=\"fmode\"\r\n />\r\n </div>\r\n\r\n <!--\u5173\u95ED\u56FE\u6807\u6309\u94AE-->\r\n <div class=\"close-icon-box\">\r\n <div class=\"iconfont icon-shanchu2\" (click)=\"close()\"></div>\r\n </div>\r\n <!--\u6309\u94AE\u5207\u6362\u767B\u5F55\u65B9\u5F0F-->\r\n <div class=\"button-box\" *ngIf=\"authServ?.loginTypeCount>1\">\r\n <div class=\"button-group\">\r\n <button *ngIf=\"authServ?.loginOptions?.userpwd\"\r\n class=\"login-select-button\"\r\n [class.active]=\"authServ.activeButton === '\u8D26\u53F7\u5BC6\u7801'\"\r\n (click)=\"setActiveButton('\u8D26\u53F7\u5BC6\u7801')\"\r\n >\r\n \u8D26\u53F7\u5BC6\u7801\r\n </button>\r\n <button *ngIf=\"authServ?.loginOptions?.mobilecode\"\r\n class=\"login-select-button\"\r\n [class.active]=\"authServ.activeButton === '\u77ED\u4FE1\u9A8C\u8BC1'\"\r\n (click)=\"setActiveButton('\u77ED\u4FE1\u9A8C\u8BC1')\"\r\n >\r\n \u77ED\u4FE1\u9A8C\u8BC1\r\n </button>\r\n <button *ngIf=\"authServ?.loginOptions?.wechat\"\r\n class=\"login-select-button\"\r\n [class.active]=\"authServ.activeButton === '\u5FAE\u4FE1\u626B\u7801'\"\r\n (click)=\"setActiveButton('\u5FAE\u4FE1\u626B\u7801')\"\r\n >\r\n \u5FAE\u4FE1\u626B\u7801\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <!--\u624B\u673A\u9A8C\u8BC1\u7801-->\r\n <form class=\"message-form\" [class.active]=\"authServ.activeButton === '\u77ED\u4FE1\u9A8C\u8BC1'\" *ngIf=\"authServ?.loginOptions?.mobilecode\">\r\n <div class=\"login-input-box\">\r\n <div class=\"popup-input-frontnumber\">+86</div>\r\n <input\r\n class=\"popup-input-itemone\"\r\n type=\"text\"\r\n required=\"required\"\r\n [(ngModel)]=\"loginInfo.mobile\"\r\n [ngModelOptions]=\"{ standalone: true }\"\r\n maxlength=\"12\"\r\n placeholder=\"\u8BF7\u8F93\u5165\u624B\u673A\u53F7\"\r\n />\r\n </div>\r\n <div *ngIf=\"authServ?.enabledLocalCode\"\r\n class=\"login-input-box local-code\" #canvasDom>\r\n <input\r\n class=\"popup-input-itemtwo\"\r\n type=\"text\"\r\n required=\"required\"\r\n [(ngModel)]=\"localCodeNum\"\r\n [ngModelOptions]=\"{ standalone: true }\"\r\n maxlength=\"4\"\r\n placeholder=\"\u8BF7\u8F93\u5165\u6821\u9A8C\u7801\"\r\n />\r\n <!-- <canvas\r\n #canvas\r\n width=\"100\"\r\n height=\"44\"\r\n (click)=\"updateDrawCode()\"\r\n class=\"canvas\"\r\n ></canvas> -->\r\n </div>\r\n <div class=\"login-input-box\">\r\n <input #smsCodeInput\r\n class=\"popup-input-itemtwo\"\r\n type=\"text\"\r\n required=\"required\"\r\n placeholder=\"\u8BF7\u8F93\u5165\u77ED\u4FE1\u9A8C\u8BC1\u7801\"\r\n [(ngModel)]=\"loginInfo.code\"\r\n (change)=\"smsAutoLogin()\"\r\n [ngModelOptions]=\"{ standalone: true }\"\r\n maxlength=\"6\"\r\n />\r\n <button\r\n class=\"checknumber-button\"\r\n type=\"submit\"\r\n [value]=\"buttonText\"\r\n [disabled]=\"isCountingdown\"\r\n (click)=\"startCountdown()\"\r\n [class.active]=\"isCountingdown\"\r\n >\r\n {{buttonText}}\r\n </button>\r\n </div>\r\n\r\n <!-- \u7528\u6237\u534F\u8BAE -->\r\n <div class=\"rule-box\">\r\n <span>\u672A\u6CE8\u518C\u7684\u624B\u673A\u53F7\uFF0C\u5C06\u81EA\u52A8\u521B\u5EFA\u5E10\u53F7\u5E76\u767B\u5F55\u3002</span>\r\n </div>\r\n\r\n <div class=\"login-submit-box\">\r\n <button class=\"login-submit-button\" type=\"submit\" (click)=\"login()\">\r\n \u767B\u5F55\r\n </button>\r\n </div>\r\n </form>\r\n\r\n <!--\u8D26\u53F7\u5BC6\u7801\u767B\u5F55-->\r\n <form class=\"mobile-form\" [class.active]=\"authServ.activeButton === '\u8D26\u53F7\u5BC6\u7801'\" *ngIf=\"authServ?.loginOptions?.userpwd\">\r\n <div class=\"login-input-box\">\r\n <input\r\n maxlength=\"12\"\r\n [(ngModel)]=\"mobile\"\r\n [ngModelOptions]=\"{ standalone: true }\"\r\n class=\"popup-input-itemnomal\"\r\n type=\"text\"\r\n required=\"required\"\r\n placeholder=\"\u8BF7\u8F93\u5165\u624B\u673A\u53F7\"\r\n />\r\n </div>\r\n\r\n <div class=\"login-input-box\">\r\n <input\r\n [(ngModel)]=\"password\"\r\n [ngModelOptions]=\"{ standalone: true }\"\r\n class=\"popup-input-itemnomal\"\r\n type=\"password\"\r\n required=\"required\"\r\n placeholder=\"\u8BF7\u8F93\u5165\u5BC6\u7801\"\r\n />\r\n </div>\r\n\r\n <!-- \u8BB0\u4F4F\u5BC6\u7801 -->\r\n <div class=\"passwprd-box\">\r\n <div class=\"remember-password-box\">\r\n <input type=\"checkbox\" id=\"remember-password\" />\r\n \u8BB0\u4F4F\u5BC6\u7801\r\n </div>\r\n\r\n <!-- \u5FD8\u8BB0\u5BC6\u7801 -->\r\n <div class=\"password-forget\" (click)=\"setActiveButton('\u6CE8\u518C\u5E10\u53F7')\">\r\n \u6CE8\u518C\u5E10\u53F7\r\n </div>\r\n </div>\r\n\r\n <!-- \u7528\u6237\u534F\u8BAE -->\r\n <div class=\"rule-box\">\r\n <span>\r\n <input type=\"checkbox\" [(ngModel)]=\"isUserRuleChecked\" [ngModelOptions]=\"{ standalone: true }\" style=\"margin-right:5px\"/>\r\n <span (click)=\"isUserRuleChecked=true\">\u540C\u610F</span></span>\r\n <span (click)=\"isUserRuleChecked=true\">\u300A\u7528\u6237\u534F\u8BAE\u53CA\u9690\u79C1\u6761\u6B3E\u300B</span>\r\n </div>\r\n\r\n\r\n <!-- \u5FD8\u8BB0\u5BC6\u7801 -->\r\n <!-- <div class=\"password-forget\">\u5FD8\u8BB0\u5BC6\u7801?</div>\r\n </div> -->\r\n\r\n <div class=\"login-submit-box\">\r\n <button\r\n class=\"login-submit-button\"\r\n type=\"submit\"\r\n (click)=\"loginMobilePassword()\"\r\n >\r\n \u767B\u5F55\r\n </button>\r\n </div>\r\n </form>\r\n\r\n <!-- \u5E10\u53F7\u5BC6\u7801\u6CE8\u518C -->\r\n <form class=\"mobile-form\" [class.active]=\"authServ.activeButton === '\u6CE8\u518C\u5E10\u53F7'\">\r\n <div class=\"login-input-box\">\r\n <input\r\n [(ngModel)]=\"mobile\"\r\n [ngModelOptions]=\"{ standalone: true }\"\r\n class=\"popup-input-itemnomal\"\r\n type=\"text\"\r\n required=\"required\"\r\n placeholder=\"\u8BF7\u8F93\u5165\u624B\u673A\u53F7\"\r\n />\r\n </div>\r\n\r\n <div class=\"login-input-box\">\r\n <input\r\n [(ngModel)]=\"password\"\r\n [ngModelOptions]=\"{ standalone: true }\"\r\n class=\"popup-input-itemnomal\"\r\n type=\"password\"\r\n required=\"required\"\r\n placeholder=\"\u8BF7\u8F93\u5165\u5BC6\u7801\"\r\n />\r\n </div>\r\n\r\n <div class=\"login-input-box\">\r\n <input\r\n [(ngModel)]=\"password2\"\r\n [ngModelOptions]=\"{ standalone: true }\"\r\n class=\"popup-input-itemnomal\"\r\n type=\"password\"\r\n required=\"required\"\r\n placeholder=\"\u8BF7\u518D\u6B21\u8F93\u5165\u5BC6\u7801\"\r\n />\r\n </div>\r\n\r\n <div class=\"login-submit-box\">\r\n <button\r\n class=\"login-submit-button\"\r\n type=\"submit\"\r\n (click)=\"signMobilePassword()\"\r\n >\r\n \u6CE8\u518C\r\n </button>\r\n </div>\r\n </form>\r\n\r\n <!--\u5FAE\u4FE1\u626B\u7801\u767B\u9646-->\r\n <form class=\"wechat-form\" [class.active]=\"authServ.activeButton === '\u5FAE\u4FE1\u626B\u7801'\" *ngIf=\"authServ?.loginOptions?.wechat\">\r\n <div class=\"wechat-login-box\">\r\n <img\r\n class=\"login-erweima-img\"\r\n [src]=\"authServ.wechatUrl\"\r\n alt=\"\u5FAE\u4FE1\u626B\u7801\u767B\u9646\u4E8C\u7EF4\u7801\"\r\n />\r\n </div>\r\n <div class=\"wechat-explain\">\u4F7F\u7528\u5FAE\u4FE1\u626B\u4E00\u626B,\u626B\u7801\u767B\u5F55 \"\u98DE\u7801AI\"</div>\r\n </form>\r\n\r\n <!--\u8FD4\u56DE\u9996\u9875-->\r\n <div class=\"back-home-box\" *ngIf=\"authServ.showBackHome\">\r\n <button class=\"back-homepage-button\" (click)=\"goHome()\">\r\n \u8FD4\u56DE\u9996\u9875\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";:host{--fmode-background-primary: #FFF;--login-color-primary: var(--fmode-color-primary,#0199f9);--login-bgcolor-primary: var(--fmode-login-bgcolor-primary,dodgerblue);--login-bgcolor-secondary: var(--fmode-login-bgcolor-secondary,#00dbde);--login-bgcolor-third: var(--fmode-login-bgcolor-third,#f902ff)}:host-context(body.dark) .popup{--login-color-primary: #7974ff;--fmode-background-primary: #000000}:host-context(body.dark) .popup .remember-password-box{color:#fff}.popup{display:flex;position:fixed;left:0;top:0;width:100%;height:100%;background-color:#0006;z-index:1000}@media screen and (max-width: 800px){.popup-content.fullscreen .popup-box{position:fixed!important;left:0!important;top:0!important;height:100vh!important;width:100vw!important;border-radius:0!important}.popup-content.fullscreen .popup-box .popup-box-content{padding-top:35%;border-radius:50px!important}.popup{background:#00000080}.popup-content.sheet{background:transparent!important}.popup-content.sheet .popup-box{position:fixed!important;left:0!important;top:calc(100vh - 480px);height:530px;width:100vw!important;border-radius:50px!important}.popup-content.sheet .popup-box .popup-box-content{border-radius:50px!important}}.popup-content{margin:7% auto;display:flex;width:500px;height:600px;border-radius:50px 5px;background-color:var(--fmode-background-primary)}.popup-content .popup-box{width:500px;height:600px;position:relative;border-radius:50px 5px;background-color:var(--login-bgcolor-primary);overflow:hidden}.popup-content .popup-box .popup-box-content{position:absolute;border-radius:50px 5px;inset:4px;background-color:var(--fmode-background-primary);z-index:1}.popup-content .popup-box .popup-box-content .logo-img-login{margin-top:35px;position:relative;width:100%;display:flex;justify-content:center;z-index:2}.popup-content .popup-box .popup-box-content .logo-img-login img{max-height:60px;max-width:150px}.popup-content .popup-box .popup-box-content .close-icon-box{position:relative;top:20px;right:20px;float:right;font-size:20px;cursor:pointer;z-index:2}.popup-content .popup-box .popup-box-content .button-box{display:flex;justify-content:center;margin:auto;padding:10px 10%;border-radius:10px}.popup-content .popup-box .popup-box-content .button-box .button-group{position:relative;display:flex;width:100%;line-height:40px;border-radius:10px;background-color:plum;z-index:2}.popup-content .popup-box .popup-box-content .button-box .login-select-button{flex:1;outline:none;border:none;border-radius:10px;font-size:16px;cursor:pointer;color:#fff;background-color:inherit;transition:background-color .3s;padding:16px 0}.popup-content .popup-box .popup-box-content .button-box .login-select-button:hover{flex:1;outline:none;border:none;border-radius:10px;font-size:16px;cursor:pointer;color:#000;background-color:inherit;transition:background-color .3s}.popup-content .popup-box .popup-box-content .button-box .login-select-button.active{background-color:var(--login-color-primary);border-radius:10px}.popup-content .popup-box .popup-box-content input{color:#000}.popup-content .popup-box .popup-box-content .message-form,.popup-content .popup-box .popup-box-content .mobile-form,.popup-content .popup-box .popup-box-content .wechat-form{display:none}.popup-content .popup-box .popup-box-content .message-form.active,.popup-content .popup-box .popup-box-content .mobile-form.active,.popup-content .popup-box .popup-box-content .wechat-form.active{display:block}.popup-content .popup-box:before{content:\"\";position:absolute;top:-50%;left:-50%;width:500px;height:600px;background:linear-gradient(0deg,transparent,var(--login-bgcolor-third),var(--login-bgcolor-third));transform-origin:bottom right;animation:animate 6s linear infinite}.popup-content .popup-box:after{content:\"\";position:absolute;top:-50%;left:-50%;width:500px;height:600px;background:linear-gradient(0deg,transparent,var(--login-bgcolor-secondary),var(--login-bgcolor-secondary));transform-origin:bottom right;animation:animate 6s linear infinite;animation-delay:-3s}@keyframes animate{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.popup-content .login-submit-box{position:relative}.popup-content .login-submit-button{margin-top:15px;padding:6px;width:100%;line-height:40px;border-radius:10px;border:0;position:relative;box-shadow:0 2px 10px #00000029,0 3px 6px #0000001a;text-decoration:none;font-size:18px;font-weight:700;letter-spacing:2px;text-align:center;color:#fff;background-color:var(--login-color-primary);transition:.3s ease all;cursor:pointer;z-index:1}.popup-content .login-submit-button:before{transition:.5s all ease;position:absolute;inset:0 50%;opacity:0;content:\"\";background-color:var(--fmode-background-primary);z-index:-1}.popup-content .login-submit-button:hover{color:var(--login-color-primary)}.popup-content .login-submit-button:hover:before{border-radius:10px;border:3px solid var(--login-color-primary);box-sizing:border-box;transition:.5s all ease;left:0;right:0;opacity:1}.popup-content .login-submit-button:active{transform:scale(.9)}.popup-content .message-form{padding:6px 55px;display:flex;position:relative;border-radius:50px 5px;background-color:var(--fmode-background-primary)}.popup-content .message-form .login-input-box{display:flex;align-items:center;padding-top:10px}.popup-content .message-form .login-input-box .popup-input-frontnumber{padding:6px 12px;position:relative;border-radius:10px 0 0 10px;line-height:40px;font-size:18px;color:#4d4d4d;background-color:#ededed}.popup-content .message-form .popup-input-itemone{padding:6px 12px;position:relative;line-height:40px;border-radius:0 10px 10px 0;border:0;width:93%;outline:none;box-shadow:none;font-size:18px;letter-spacing:.03em;background-color:#ededed;transition:.5s}.popup-content .message-form .popup-input-itemtwo{padding:6px 12px 6px 16px;position:relative;line-height:40px;border-radius:10px;border:0;width:55%;outline:none;box-shadow:none;font-size:18px;letter-spacing:.03em;background-color:#ededed;transition:.5s}.popup-content .message-form .checknumber-button{margin-left:42px;padding:6px;border-radius:10px;line-height:40px;font-size:16px;width:124px;border:none;outline:none;cursor:pointer;color:#fff;background:var(--login-color-primary)}.popup-content .message-form .checknumber-button:hover{margin-left:46px;padding:6px;border-radius:10px;line-height:40px;font-size:18px;width:124px;border:none;outline:none;cursor:pointer;background:#4bace9}.popup-content .message-form .checknumber-button.active{background:#c7c7c7}.popup-content .rule-box{display:flex;padding-top:4px;padding-left:15px;padding-right:10px;justify-content:space-between;font-size:15px}.popup-content .rule-box span,.popup-content .rule-box ion-checkbox{font-size:15px;color:var(--login-color-primary)}.popup-content .mobile-form{padding:6px 55px;display:flex;position:relative;border-radius:50px 5px;background-color:var(--fmode-background-primary)}.popup-content .mobile-form .login-input-box{padding-top:10px}.popup-content .mobile-form .login-input-box .popup-input-itemnomal{margin-top:20px;padding:6px 12px 6px 14px;position:relative;line-height:40px;border-radius:10px;border:0;width:100%;outline:none;box-shadow:none;font-size:18px;letter-spacing:.03em;background-color:#ededed;transition:.5s}.popup-content .mobile-form .passwprd-box{display:flex;padding-top:4px;justify-content:space-between}.popup-content .mobile-form .passwprd-box .remember-password-box{margin:10px 0 0 15px;font-size:15px}.popup-content .mobile-form .passwprd-box .password-forget{margin-top:10px;margin-right:15px;font-size:15px;color:gray;cursor:pointer}.popup-content .mobile-form .passwprd-box .password-forget:hover{margin-top:10px;margin-right:15px;font-size:15px;color:#000;cursor:pointer}.popup-content .wechat-form{padding:6px 55px;display:flex;position:relative;border-radius:50px 5px;background-color:var(--fmode-background-primary)}.popup-content .wechat-form .wechat-login-box{display:flex;justify-content:center}.popup-content .wechat-form .wechat-login-box .login-erweima-img{margin-top:30px;width:210px}.popup-content .wechat-form .wechat-explain{padding-top:20px;font-size:16px;text-align:center}.popup-content .back-home-box{display:flex;justify-content:center;padding:6px 55px}.popup-content .back-homepage-button{margin-top:15px;padding:6px;width:100%;line-height:40px;border-radius:10px;border:0;position:relative;box-shadow:0 2px 10px #00000029,0 3px 6px #0000001a;text-decoration:none;font-size:18px;font-weight:700;letter-spacing:2px;text-align:center;color:#fff;background-color:var(--login-color-primary);transition:.3s ease all;cursor:pointer;x:1}.popup-content .back-homepage-button:before{transition:.5s all ease;position:absolute;inset:0 50%;opacity:0;content:\"\";background-color:var(--fmode-background-primary);z-index:-1}.popup-content .back-homepage-button:hover{color:var(--login-color-primary)}.popup-content .back-homepage-button:hover:before{border-radius:10px;border:3px solid var(--login-color-primary);box-sizing:border-box;transition:.5s all ease;left:0;right:0;opacity:1}.popup-content .local-code{justify-content:space-between}.popup-content .local-code .canvas{border:1px solid #c2def5;border-radius:5px;width:100px;height:44px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i6.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i6.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i6.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i6.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i6.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i6.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: ReactiveFormsModule }] }); }
|
|
289
289
|
}
|
|
290
290
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModalUserLoginComponent, decorators: [{
|
|
291
291
|
type: Component,
|
|
292
292
|
args: [{ standalone: true, imports: [CommonModule, FormsModule, ReactiveFormsModule,
|
|
293
293
|
IonCheckbox
|
|
294
|
-
], selector: "fm-modal-user-login", template: "<!--\u767B\u5F55\u5F39\u51FA\u6846\u8BBE\u7F6E-->\r\n<!--\u80CC\u666F\u7070\u8272\u8499\u7248-->\r\n<div\r\n class=\"popup\"\r\n [style.display]=\"authServ.isModalShow ? 'block' : 'none'\"\r\n (click)=\"close()\"\r\n>\r\n <div class=\"popup-content\" [class.fullscreen]=\"authServ.modalType=='fullscreen'\" [class.sheet]=\"authServ.modalType=='sheet'\"\r\n (click)=\"$event.stopPropagation()\">\r\n <div class=\"popup-box\">\r\n <!--\u5F39\u6846\u5185\u8BBE\u7F6Eposition:absolute,\u89C4\u8303\u6392\u7248\uFF0C\u540E\u7EED\u53EA\u9700position:relative\u589E\u51CF\u5185\u5BB9-->\r\n <div class=\"popup-box-content\">\r\n <div class=\"logo-img-login\">\r\n <img\r\n [src]=\"authServ.logoUrl\"\r\n alt=\"fmode\"\r\n />\r\n </div>\r\n\r\n <!--\u5173\u95ED\u56FE\u6807\u6309\u94AE-->\r\n <div class=\"close-icon-box\">\r\n <div class=\"iconfont icon-shanchu2\" (click)=\"close()\"></div>\r\n </div>\r\n <!--\u6309\u94AE\u5207\u6362\u767B\u5F55\u65B9\u5F0F-->\r\n <div class=\"button-box\" *ngIf=\"authServ?.loginTypeCount>1\">\r\n <div class=\"button-group\">\r\n <button *ngIf=\"authServ?.loginOptions?.userpwd\"\r\n class=\"login-select-button\"\r\n [class.active]=\"authServ.activeButton === '\u8D26\u53F7\u5BC6\u7801'\"\r\n (click)=\"setActiveButton('\u8D26\u53F7\u5BC6\u7801')\"\r\n >\r\n \u8D26\u53F7\u5BC6\u7801\r\n </button>\r\n <button *ngIf=\"authServ?.loginOptions?.mobilecode\"\r\n class=\"login-select-button\"\r\n [class.active]=\"authServ.activeButton === '\u77ED\u4FE1\u9A8C\u8BC1'\"\r\n (click)=\"setActiveButton('\u77ED\u4FE1\u9A8C\u8BC1')\"\r\n >\r\n \u77ED\u4FE1\u9A8C\u8BC1\r\n </button>\r\n <button *ngIf=\"authServ?.loginOptions?.wechat\"\r\n class=\"login-select-button\"\r\n [class.active]=\"authServ.activeButton === '\u5FAE\u4FE1\u626B\u7801'\"\r\n (click)=\"setActiveButton('\u5FAE\u4FE1\u626B\u7801')\"\r\n >\r\n \u5FAE\u4FE1\u626B\u7801\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <!--\u624B\u673A\u9A8C\u8BC1\u7801-->\r\n <form class=\"message-form\" [class.active]=\"authServ.activeButton === '\u77ED\u4FE1\u9A8C\u8BC1'\" *ngIf=\"authServ?.loginOptions?.mobilecode\">\r\n <div class=\"login-input-box\">\r\n <div class=\"popup-input-frontnumber\">+86</div>\r\n <input\r\n class=\"popup-input-itemone\"\r\n type=\"text\"\r\n required=\"required\"\r\n [(ngModel)]=\"loginInfo.mobile\"\r\n [ngModelOptions]=\"{ standalone: true }\"\r\n maxlength=\"12\"\r\n placeholder=\"\u8BF7\u8F93\u5165\u624B\u673A\u53F7\"\r\n />\r\n </div>\r\n <div *ngIf=\"authServ?.enabledLocalCode\"\r\n class=\"login-input-box local-code\" #canvasDom>\r\n <input\r\n class=\"popup-input-itemtwo\"\r\n type=\"text\"\r\n required=\"required\"\r\n [(ngModel)]=\"localCodeNum\"\r\n [ngModelOptions]=\"{ standalone: true }\"\r\n maxlength=\"4\"\r\n placeholder=\"\u8BF7\u8F93\u5165\u6821\u9A8C\u7801\"\r\n />\r\n <!-- <canvas\r\n #canvas\r\n width=\"100\"\r\n height=\"44\"\r\n (click)=\"updateDrawCode()\"\r\n class=\"canvas\"\r\n ></canvas> -->\r\n </div>\r\n <div class=\"login-input-box\">\r\n <input #smsCodeInput\r\n class=\"popup-input-itemtwo\"\r\n type=\"text\"\r\n required=\"required\"\r\n placeholder=\"\u8BF7\u8F93\u5165\u77ED\u4FE1\u9A8C\u8BC1\u7801\"\r\n [(ngModel)]=\"loginInfo.code\"\r\n (change)=\"smsAutoLogin()\"\r\n [ngModelOptions]=\"{ standalone: true }\"\r\n maxlength=\"6\"\r\n />\r\n <button\r\n class=\"checknumber-button\"\r\n type=\"submit\"\r\n [value]=\"buttonText\"\r\n [disabled]=\"isCountingdown\"\r\n (click)=\"startCountdown()\"\r\n [class.active]=\"isCountingdown\"\r\n >\r\n {{buttonText}}\r\n </button>\r\n </div>\r\n\r\n <!-- \u7528\u6237\u534F\u8BAE -->\r\n <div class=\"rule-box\">\r\n <span>\u672A\u6CE8\u518C\u7684\u624B\u673A\u53F7\uFF0C\u5C06\u81EA\u52A8\u521B\u5EFA\u5E10\u53F7\u5E76\u767B\u5F55\u3002</span>\r\n </div>\r\n\r\n <div class=\"login-submit-box\">\r\n <button class=\"login-submit-button\" type=\"submit\" (click)=\"login()\">\r\n \u767B\u5F55\r\n </button>\r\n </div>\r\n </form>\r\n\r\n <!--\u8D26\u53F7\u5BC6\u7801\u767B\u5F55-->\r\n <form class=\"mobile-form\" [class.active]=\"authServ.activeButton === '\u8D26\u53F7\u5BC6\u7801'\" *ngIf=\"authServ?.loginOptions?.userpwd\">\r\n <div class=\"login-input-box\">\r\n <input\r\n maxlength=\"12\"\r\n [(ngModel)]=\"mobile\"\r\n [ngModelOptions]=\"{ standalone: true }\"\r\n class=\"popup-input-itemnomal\"\r\n type=\"text\"\r\n required=\"required\"\r\n placeholder=\"\u8BF7\u8F93\u5165\u624B\u673A\u53F7\"\r\n />\r\n </div>\r\n\r\n <div class=\"login-input-box\">\r\n <input\r\n [(ngModel)]=\"password\"\r\n [ngModelOptions]=\"{ standalone: true }\"\r\n class=\"popup-input-itemnomal\"\r\n type=\"password\"\r\n required=\"required\"\r\n placeholder=\"\u8BF7\u8F93\u5165\u5BC6\u7801\"\r\n />\r\n </div>\r\n\r\n <!-- \u8BB0\u4F4F\u5BC6\u7801 -->\r\n <div class=\"passwprd-box\">\r\n <div class=\"remember-password-box\">\r\n <input type=\"checkbox\" id=\"remember-password\" />\r\n \u8BB0\u4F4F\u5BC6\u7801\r\n </div>\r\n\r\n <!-- \u5FD8\u8BB0\u5BC6\u7801 -->\r\n <div class=\"password-forget\" (click)=\"setActiveButton('\u6CE8\u518C\u5E10\u53F7')\">\r\n \u6CE8\u518C\u5E10\u53F7\r\n </div>\r\n </div>\r\n\r\n <!-- \u7528\u6237\u534F\u8BAE -->\r\n <div class=\"rule-box\">\r\n <span>\r\n <input type=\"checkbox\" [(ngModel)]=\"isUserRuleChecked\" [ngModelOptions]=\"{ standalone: true }\" style=\"margin-right:5px\"/>\r\n <span (click)=\"isUserRuleChecked=true\">\u540C\u610F</span></span>\r\n <span (click)=\"isUserRuleChecked=true\">\u300A\u7528\u6237\u534F\u8BAE\u53CA\u9690\u79C1\u6761\u6B3E\u300B</span>\r\n </div>\r\n\r\n\r\n <!-- \u5FD8\u8BB0\u5BC6\u7801 -->\r\n <!-- <div class=\"password-forget\">\u5FD8\u8BB0\u5BC6\u7801?</div>\r\n </div> -->\r\n\r\n <div class=\"login-submit-box\">\r\n <button\r\n class=\"login-submit-button\"\r\n type=\"submit\"\r\n (click)=\"loginMobilePassword()\"\r\n >\r\n \u767B\u5F55\r\n </button>\r\n </div>\r\n </form>\r\n\r\n <!-- \u5E10\u53F7\u5BC6\u7801\u6CE8\u518C -->\r\n <form class=\"mobile-form\" [class.active]=\"authServ.activeButton === '\u6CE8\u518C\u5E10\u53F7'\">\r\n <div class=\"login-input-box\">\r\n <input\r\n [(ngModel)]=\"mobile\"\r\n [ngModelOptions]=\"{ standalone: true }\"\r\n class=\"popup-input-itemnomal\"\r\n type=\"text\"\r\n required=\"required\"\r\n placeholder=\"\u8BF7\u8F93\u5165\u624B\u673A\u53F7\"\r\n />\r\n </div>\r\n\r\n <div class=\"login-input-box\">\r\n <input\r\n [(ngModel)]=\"password\"\r\n [ngModelOptions]=\"{ standalone: true }\"\r\n class=\"popup-input-itemnomal\"\r\n type=\"password\"\r\n required=\"required\"\r\n placeholder=\"\u8BF7\u8F93\u5165\u5BC6\u7801\"\r\n />\r\n </div>\r\n\r\n <div class=\"login-input-box\">\r\n <input\r\n [(ngModel)]=\"password2\"\r\n [ngModelOptions]=\"{ standalone: true }\"\r\n class=\"popup-input-itemnomal\"\r\n type=\"password\"\r\n required=\"required\"\r\n placeholder=\"\u8BF7\u518D\u6B21\u8F93\u5165\u5BC6\u7801\"\r\n />\r\n </div>\r\n\r\n <div class=\"login-submit-box\">\r\n <button\r\n class=\"login-submit-button\"\r\n type=\"submit\"\r\n (click)=\"signMobilePassword()\"\r\n >\r\n \u6CE8\u518C\r\n </button>\r\n </div>\r\n </form>\r\n\r\n <!--\u5FAE\u4FE1\u626B\u7801\u767B\u9646-->\r\n <form class=\"wechat-form\" [class.active]=\"authServ.activeButton === '\u5FAE\u4FE1\u626B\u7801'\" *ngIf=\"authServ?.loginOptions?.wechat\">\r\n <div class=\"wechat-login-box\">\r\n <img\r\n class=\"login-erweima-img\"\r\n [src]=\"authServ.wechatUrl\"\r\n alt=\"\u5FAE\u4FE1\u626B\u7801\u767B\u9646\u4E8C\u7EF4\u7801\"\r\n />\r\n </div>\r\n <div class=\"wechat-explain\">\u4F7F\u7528\u5FAE\u4FE1\u626B\u4E00\u626B,\u626B\u7801\u767B\u5F55 \"\u98DE\u7801AI\"</div>\r\n </form>\r\n\r\n <!--\u8FD4\u56DE\u9996\u9875-->\r\n <div class=\"back-home-box\" *ngIf=\"authServ.showBackHome\">\r\n <button class=\"back-homepage-button\" (click)=\"goHome()\">\r\n \u8FD4\u56DE\u9996\u9875\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";:host{--fmode-background-primary: #FFF;--login-color-primary: var(--fmode-color-primary,#0199f9);--login-bgcolor-primary: var(--fmode-login-bgcolor-primary,dodgerblue);--login-bgcolor-secondary: var(--fmode-login-bgcolor-secondary,#00dbde);--login-bgcolor-third: var(--fmode-login-bgcolor-third,#f902ff)}:host-context(body.dark) .popup{--login-color-primary: #7974ff;--fmode-background-primary: #000000}:host-context(body.dark) .popup .remember-password-box{color:#fff}.popup{display:flex;position:fixed;left:0;top:0;width:100%;height:100%;background-color:#0006;z-index:1000}@media screen and (max-width: 800px){.popup-content.fullscreen .popup-box{position:fixed!important;left:0!important;top:0!important;height:100vh!important;width:100vw!important;border-radius:0!important}.popup-content.fullscreen .popup-box .popup-box-content{padding-top:35%;border-radius:50px!important}.popup{background:#00000080}.popup-content.sheet{background:transparent!important}.popup-content.sheet .popup-box{position:fixed!important;left:0!important;top:calc(100vh - 480px);height:530px;width:100vw!important;border-radius:50px!important}.popup-content.sheet .popup-box .popup-box-content{border-radius:50px!important}}.popup-content{margin:7% auto;display:flex;width:500px;height:600px;border-radius:50px 5px;background-color:var(--fmode-background-primary)}.popup-content .popup-box{width:500px;height:600px;position:relative;border-radius:50px 5px;background-color:var(--login-bgcolor-primary);overflow:hidden}.popup-content .popup-box .popup-box-content{position:absolute;border-radius:50px 5px;inset:4px;background-color:var(--fmode-background-primary);z-index:1}.popup-content .popup-box .popup-box-content .logo-img-login{margin-top:35px;position:relative;width:100%;display:flex;justify-content:center;z-index:2}.popup-content .popup-box .popup-box-content .logo-img-login img{height:auto;max-width:150px}.popup-content .popup-box .popup-box-content .close-icon-box{position:relative;top:20px;right:20px;float:right;font-size:20px;cursor:pointer;z-index:2}.popup-content .popup-box .popup-box-content .button-box{display:flex;justify-content:center;margin:auto;padding:10px 10%;border-radius:10px}.popup-content .popup-box .popup-box-content .button-box .button-group{position:relative;display:flex;width:100%;line-height:40px;border-radius:10px;background-color:plum;z-index:2}.popup-content .popup-box .popup-box-content .button-box .login-select-button{flex:1;outline:none;border:none;border-radius:10px;font-size:16px;cursor:pointer;color:#fff;background-color:inherit;transition:background-color .3s;padding:1rem 0}.popup-content .popup-box .popup-box-content .button-box .login-select-button:hover{flex:1;outline:none;border:none;border-radius:10px;font-size:16px;cursor:pointer;color:#000;background-color:inherit;transition:background-color .3s}.popup-content .popup-box .popup-box-content .button-box .login-select-button.active{background-color:var(--login-color-primary);border-radius:10px}.popup-content .popup-box .popup-box-content input{color:#000}.popup-content .popup-box .popup-box-content .message-form,.popup-content .popup-box .popup-box-content .mobile-form,.popup-content .popup-box .popup-box-content .wechat-form{display:none}.popup-content .popup-box .popup-box-content .message-form.active,.popup-content .popup-box .popup-box-content .mobile-form.active,.popup-content .popup-box .popup-box-content .wechat-form.active{display:block}.popup-content .popup-box:before{content:\"\";position:absolute;top:-50%;left:-50%;width:500px;height:600px;background:linear-gradient(0deg,transparent,var(--login-bgcolor-third),var(--login-bgcolor-third));transform-origin:bottom right;animation:animate 6s linear infinite}.popup-content .popup-box:after{content:\"\";position:absolute;top:-50%;left:-50%;width:500px;height:600px;background:linear-gradient(0deg,transparent,var(--login-bgcolor-secondary),var(--login-bgcolor-secondary));transform-origin:bottom right;animation:animate 6s linear infinite;animation-delay:-3s}@keyframes animate{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.popup-content .login-submit-box{position:relative}.popup-content .login-submit-button{margin-top:15px;padding:6px;width:100%;line-height:40px;border-radius:10px;border:0;position:relative;box-shadow:0 2px 10px #00000029,0 3px 6px #0000001a;text-decoration:none;font-size:18px;font-weight:700;letter-spacing:2px;text-align:center;color:#fff;background-color:var(--login-color-primary);transition:.3s ease all;cursor:pointer;z-index:1}.popup-content .login-submit-button:before{transition:.5s all ease;position:absolute;inset:0 50%;opacity:0;content:\"\";background-color:var(--fmode-background-primary);z-index:-1}.popup-content .login-submit-button:hover{color:var(--login-color-primary)}.popup-content .login-submit-button:hover:before{border-radius:10px;border:3px solid var(--login-color-primary);box-sizing:border-box;transition:.5s all ease;left:0;right:0;opacity:1}.popup-content .login-submit-button:active{transform:scale(.9)}.popup-content .message-form{padding:6px 55px;display:flex;position:relative;border-radius:50px 5px;background-color:var(--fmode-background-primary)}.popup-content .message-form .login-input-box{display:flex;align-items:center;padding-top:10px}.popup-content .message-form .login-input-box .popup-input-frontnumber{padding:6px 12px;position:relative;border-radius:10px 0 0 10px;line-height:40px;font-size:18px;color:#4d4d4d;background-color:#ededed}.popup-content .message-form .popup-input-itemone{padding:6px 12px;position:relative;line-height:40px;border-radius:0 10px 10px 0;border:0;width:93%;outline:none;box-shadow:none;font-size:18px;letter-spacing:.03em;background-color:#ededed;transition:.5s}.popup-content .message-form .popup-input-itemtwo{padding:6px 12px 6px 16px;position:relative;line-height:40px;border-radius:10px;border:0;width:55%;outline:none;box-shadow:none;font-size:18px;letter-spacing:.03em;background-color:#ededed;transition:.5s}.popup-content .message-form .checknumber-button{margin-left:46px;padding:6px;border-radius:10px;line-height:40px;font-size:18px;width:124px;border:none;outline:none;cursor:pointer;color:#fff;background:var(--login-color-primary)}.popup-content .message-form .checknumber-button:hover{margin-left:46px;padding:6px;border-radius:10px;line-height:40px;font-size:18px;width:124px;border:none;outline:none;cursor:pointer;background:#4bace9}.popup-content .message-form .checknumber-button.active{background:#c7c7c7}.popup-content .rule-box{display:flex;padding-top:4px;padding-left:15px;padding-right:10px;justify-content:space-between;font-size:15px}.popup-content .rule-box span,.popup-content .rule-box ion-checkbox{font-size:15px;color:var(--login-color-primary)}.popup-content .mobile-form{padding:6px 55px;display:flex;position:relative;border-radius:50px 5px;background-color:var(--fmode-background-primary)}.popup-content .mobile-form .login-input-box{padding-top:10px}.popup-content .mobile-form .login-input-box .popup-input-itemnomal{margin-top:20px;padding:6px 12px 6px 14px;position:relative;line-height:40px;border-radius:10px;border:0;width:100%;outline:none;box-shadow:none;font-size:18px;letter-spacing:.03em;background-color:#ededed;transition:.5s}.popup-content .mobile-form .passwprd-box{display:flex;padding-top:4px;justify-content:space-between}.popup-content .mobile-form .passwprd-box .remember-password-box{margin:10px 0 0 15px;font-size:15px}.popup-content .mobile-form .passwprd-box .password-forget{margin-top:10px;margin-right:15px;font-size:15px;color:gray;cursor:pointer}.popup-content .mobile-form .passwprd-box .password-forget:hover{margin-top:10px;margin-right:15px;font-size:15px;color:#000;cursor:pointer}.popup-content .wechat-form{padding:6px 55px;display:flex;position:relative;border-radius:50px 5px;background-color:var(--fmode-background-primary)}.popup-content .wechat-form .wechat-login-box{display:flex;justify-content:center}.popup-content .wechat-form .wechat-login-box .login-erweima-img{margin-top:30px;width:210px}.popup-content .wechat-form .wechat-explain{padding-top:20px;font-size:16px;text-align:center}.popup-content .back-home-box{display:flex;justify-content:center;padding:6px 55px}.popup-content .back-homepage-button{margin-top:15px;padding:6px;width:100%;line-height:40px;border-radius:10px;border:0;position:relative;box-shadow:0 2px 10px #00000029,0 3px 6px #0000001a;text-decoration:none;font-size:18px;font-weight:700;letter-spacing:2px;text-align:center;color:#fff;background-color:var(--login-color-primary);transition:.3s ease all;cursor:pointer;x:1}.popup-content .back-homepage-button:before{transition:.5s all ease;position:absolute;inset:0 50%;opacity:0;content:\"\";background-color:var(--fmode-background-primary);z-index:-1}.popup-content .back-homepage-button:hover{color:var(--login-color-primary)}.popup-content .back-homepage-button:hover:before{border-radius:10px;border:3px solid var(--login-color-primary);box-sizing:border-box;transition:.5s all ease;left:0;right:0;opacity:1}.popup-content .local-code{justify-content:space-between}.popup-content .local-code .canvas{border:1px solid #c2def5;border-radius:5px;width:100px;height:44px}\n"] }]
|
|
294
|
+
], selector: "fm-modal-user-login", template: "<!--\u767B\u5F55\u5F39\u51FA\u6846\u8BBE\u7F6E-->\r\n<!--\u80CC\u666F\u7070\u8272\u8499\u7248-->\r\n<div\r\n class=\"popup\"\r\n [style.display]=\"authServ.isModalShow ? 'block' : 'none'\"\r\n (click)=\"close()\"\r\n>\r\n <div class=\"popup-content\" [class.fullscreen]=\"authServ.modalType=='fullscreen'\" [class.sheet]=\"authServ.modalType=='sheet'\"\r\n (click)=\"$event.stopPropagation()\">\r\n <div class=\"popup-box\">\r\n <!--\u5F39\u6846\u5185\u8BBE\u7F6Eposition:absolute,\u89C4\u8303\u6392\u7248\uFF0C\u540E\u7EED\u53EA\u9700position:relative\u589E\u51CF\u5185\u5BB9-->\r\n <div class=\"popup-box-content\">\r\n <div class=\"logo-img-login\">\r\n <img\r\n [src]=\"authServ.logoUrl\"\r\n alt=\"fmode\"\r\n />\r\n </div>\r\n\r\n <!--\u5173\u95ED\u56FE\u6807\u6309\u94AE-->\r\n <div class=\"close-icon-box\">\r\n <div class=\"iconfont icon-shanchu2\" (click)=\"close()\"></div>\r\n </div>\r\n <!--\u6309\u94AE\u5207\u6362\u767B\u5F55\u65B9\u5F0F-->\r\n <div class=\"button-box\" *ngIf=\"authServ?.loginTypeCount>1\">\r\n <div class=\"button-group\">\r\n <button *ngIf=\"authServ?.loginOptions?.userpwd\"\r\n class=\"login-select-button\"\r\n [class.active]=\"authServ.activeButton === '\u8D26\u53F7\u5BC6\u7801'\"\r\n (click)=\"setActiveButton('\u8D26\u53F7\u5BC6\u7801')\"\r\n >\r\n \u8D26\u53F7\u5BC6\u7801\r\n </button>\r\n <button *ngIf=\"authServ?.loginOptions?.mobilecode\"\r\n class=\"login-select-button\"\r\n [class.active]=\"authServ.activeButton === '\u77ED\u4FE1\u9A8C\u8BC1'\"\r\n (click)=\"setActiveButton('\u77ED\u4FE1\u9A8C\u8BC1')\"\r\n >\r\n \u77ED\u4FE1\u9A8C\u8BC1\r\n </button>\r\n <button *ngIf=\"authServ?.loginOptions?.wechat\"\r\n class=\"login-select-button\"\r\n [class.active]=\"authServ.activeButton === '\u5FAE\u4FE1\u626B\u7801'\"\r\n (click)=\"setActiveButton('\u5FAE\u4FE1\u626B\u7801')\"\r\n >\r\n \u5FAE\u4FE1\u626B\u7801\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <!--\u624B\u673A\u9A8C\u8BC1\u7801-->\r\n <form class=\"message-form\" [class.active]=\"authServ.activeButton === '\u77ED\u4FE1\u9A8C\u8BC1'\" *ngIf=\"authServ?.loginOptions?.mobilecode\">\r\n <div class=\"login-input-box\">\r\n <div class=\"popup-input-frontnumber\">+86</div>\r\n <input\r\n class=\"popup-input-itemone\"\r\n type=\"text\"\r\n required=\"required\"\r\n [(ngModel)]=\"loginInfo.mobile\"\r\n [ngModelOptions]=\"{ standalone: true }\"\r\n maxlength=\"12\"\r\n placeholder=\"\u8BF7\u8F93\u5165\u624B\u673A\u53F7\"\r\n />\r\n </div>\r\n <div *ngIf=\"authServ?.enabledLocalCode\"\r\n class=\"login-input-box local-code\" #canvasDom>\r\n <input\r\n class=\"popup-input-itemtwo\"\r\n type=\"text\"\r\n required=\"required\"\r\n [(ngModel)]=\"localCodeNum\"\r\n [ngModelOptions]=\"{ standalone: true }\"\r\n maxlength=\"4\"\r\n placeholder=\"\u8BF7\u8F93\u5165\u6821\u9A8C\u7801\"\r\n />\r\n <!-- <canvas\r\n #canvas\r\n width=\"100\"\r\n height=\"44\"\r\n (click)=\"updateDrawCode()\"\r\n class=\"canvas\"\r\n ></canvas> -->\r\n </div>\r\n <div class=\"login-input-box\">\r\n <input #smsCodeInput\r\n class=\"popup-input-itemtwo\"\r\n type=\"text\"\r\n required=\"required\"\r\n placeholder=\"\u8BF7\u8F93\u5165\u77ED\u4FE1\u9A8C\u8BC1\u7801\"\r\n [(ngModel)]=\"loginInfo.code\"\r\n (change)=\"smsAutoLogin()\"\r\n [ngModelOptions]=\"{ standalone: true }\"\r\n maxlength=\"6\"\r\n />\r\n <button\r\n class=\"checknumber-button\"\r\n type=\"submit\"\r\n [value]=\"buttonText\"\r\n [disabled]=\"isCountingdown\"\r\n (click)=\"startCountdown()\"\r\n [class.active]=\"isCountingdown\"\r\n >\r\n {{buttonText}}\r\n </button>\r\n </div>\r\n\r\n <!-- \u7528\u6237\u534F\u8BAE -->\r\n <div class=\"rule-box\">\r\n <span>\u672A\u6CE8\u518C\u7684\u624B\u673A\u53F7\uFF0C\u5C06\u81EA\u52A8\u521B\u5EFA\u5E10\u53F7\u5E76\u767B\u5F55\u3002</span>\r\n </div>\r\n\r\n <div class=\"login-submit-box\">\r\n <button class=\"login-submit-button\" type=\"submit\" (click)=\"login()\">\r\n \u767B\u5F55\r\n </button>\r\n </div>\r\n </form>\r\n\r\n <!--\u8D26\u53F7\u5BC6\u7801\u767B\u5F55-->\r\n <form class=\"mobile-form\" [class.active]=\"authServ.activeButton === '\u8D26\u53F7\u5BC6\u7801'\" *ngIf=\"authServ?.loginOptions?.userpwd\">\r\n <div class=\"login-input-box\">\r\n <input\r\n maxlength=\"12\"\r\n [(ngModel)]=\"mobile\"\r\n [ngModelOptions]=\"{ standalone: true }\"\r\n class=\"popup-input-itemnomal\"\r\n type=\"text\"\r\n required=\"required\"\r\n placeholder=\"\u8BF7\u8F93\u5165\u624B\u673A\u53F7\"\r\n />\r\n </div>\r\n\r\n <div class=\"login-input-box\">\r\n <input\r\n [(ngModel)]=\"password\"\r\n [ngModelOptions]=\"{ standalone: true }\"\r\n class=\"popup-input-itemnomal\"\r\n type=\"password\"\r\n required=\"required\"\r\n placeholder=\"\u8BF7\u8F93\u5165\u5BC6\u7801\"\r\n />\r\n </div>\r\n\r\n <!-- \u8BB0\u4F4F\u5BC6\u7801 -->\r\n <div class=\"passwprd-box\">\r\n <div class=\"remember-password-box\">\r\n <input type=\"checkbox\" id=\"remember-password\" />\r\n \u8BB0\u4F4F\u5BC6\u7801\r\n </div>\r\n\r\n <!-- \u5FD8\u8BB0\u5BC6\u7801 -->\r\n <div class=\"password-forget\" (click)=\"setActiveButton('\u6CE8\u518C\u5E10\u53F7')\">\r\n \u6CE8\u518C\u5E10\u53F7\r\n </div>\r\n </div>\r\n\r\n <!-- \u7528\u6237\u534F\u8BAE -->\r\n <div class=\"rule-box\">\r\n <span>\r\n <input type=\"checkbox\" [(ngModel)]=\"isUserRuleChecked\" [ngModelOptions]=\"{ standalone: true }\" style=\"margin-right:5px\"/>\r\n <span (click)=\"isUserRuleChecked=true\">\u540C\u610F</span></span>\r\n <span (click)=\"isUserRuleChecked=true\">\u300A\u7528\u6237\u534F\u8BAE\u53CA\u9690\u79C1\u6761\u6B3E\u300B</span>\r\n </div>\r\n\r\n\r\n <!-- \u5FD8\u8BB0\u5BC6\u7801 -->\r\n <!-- <div class=\"password-forget\">\u5FD8\u8BB0\u5BC6\u7801?</div>\r\n </div> -->\r\n\r\n <div class=\"login-submit-box\">\r\n <button\r\n class=\"login-submit-button\"\r\n type=\"submit\"\r\n (click)=\"loginMobilePassword()\"\r\n >\r\n \u767B\u5F55\r\n </button>\r\n </div>\r\n </form>\r\n\r\n <!-- \u5E10\u53F7\u5BC6\u7801\u6CE8\u518C -->\r\n <form class=\"mobile-form\" [class.active]=\"authServ.activeButton === '\u6CE8\u518C\u5E10\u53F7'\">\r\n <div class=\"login-input-box\">\r\n <input\r\n [(ngModel)]=\"mobile\"\r\n [ngModelOptions]=\"{ standalone: true }\"\r\n class=\"popup-input-itemnomal\"\r\n type=\"text\"\r\n required=\"required\"\r\n placeholder=\"\u8BF7\u8F93\u5165\u624B\u673A\u53F7\"\r\n />\r\n </div>\r\n\r\n <div class=\"login-input-box\">\r\n <input\r\n [(ngModel)]=\"password\"\r\n [ngModelOptions]=\"{ standalone: true }\"\r\n class=\"popup-input-itemnomal\"\r\n type=\"password\"\r\n required=\"required\"\r\n placeholder=\"\u8BF7\u8F93\u5165\u5BC6\u7801\"\r\n />\r\n </div>\r\n\r\n <div class=\"login-input-box\">\r\n <input\r\n [(ngModel)]=\"password2\"\r\n [ngModelOptions]=\"{ standalone: true }\"\r\n class=\"popup-input-itemnomal\"\r\n type=\"password\"\r\n required=\"required\"\r\n placeholder=\"\u8BF7\u518D\u6B21\u8F93\u5165\u5BC6\u7801\"\r\n />\r\n </div>\r\n\r\n <div class=\"login-submit-box\">\r\n <button\r\n class=\"login-submit-button\"\r\n type=\"submit\"\r\n (click)=\"signMobilePassword()\"\r\n >\r\n \u6CE8\u518C\r\n </button>\r\n </div>\r\n </form>\r\n\r\n <!--\u5FAE\u4FE1\u626B\u7801\u767B\u9646-->\r\n <form class=\"wechat-form\" [class.active]=\"authServ.activeButton === '\u5FAE\u4FE1\u626B\u7801'\" *ngIf=\"authServ?.loginOptions?.wechat\">\r\n <div class=\"wechat-login-box\">\r\n <img\r\n class=\"login-erweima-img\"\r\n [src]=\"authServ.wechatUrl\"\r\n alt=\"\u5FAE\u4FE1\u626B\u7801\u767B\u9646\u4E8C\u7EF4\u7801\"\r\n />\r\n </div>\r\n <div class=\"wechat-explain\">\u4F7F\u7528\u5FAE\u4FE1\u626B\u4E00\u626B,\u626B\u7801\u767B\u5F55 \"\u98DE\u7801AI\"</div>\r\n </form>\r\n\r\n <!--\u8FD4\u56DE\u9996\u9875-->\r\n <div class=\"back-home-box\" *ngIf=\"authServ.showBackHome\">\r\n <button class=\"back-homepage-button\" (click)=\"goHome()\">\r\n \u8FD4\u56DE\u9996\u9875\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";:host{--fmode-background-primary: #FFF;--login-color-primary: var(--fmode-color-primary,#0199f9);--login-bgcolor-primary: var(--fmode-login-bgcolor-primary,dodgerblue);--login-bgcolor-secondary: var(--fmode-login-bgcolor-secondary,#00dbde);--login-bgcolor-third: var(--fmode-login-bgcolor-third,#f902ff)}:host-context(body.dark) .popup{--login-color-primary: #7974ff;--fmode-background-primary: #000000}:host-context(body.dark) .popup .remember-password-box{color:#fff}.popup{display:flex;position:fixed;left:0;top:0;width:100%;height:100%;background-color:#0006;z-index:1000}@media screen and (max-width: 800px){.popup-content.fullscreen .popup-box{position:fixed!important;left:0!important;top:0!important;height:100vh!important;width:100vw!important;border-radius:0!important}.popup-content.fullscreen .popup-box .popup-box-content{padding-top:35%;border-radius:50px!important}.popup{background:#00000080}.popup-content.sheet{background:transparent!important}.popup-content.sheet .popup-box{position:fixed!important;left:0!important;top:calc(100vh - 480px);height:530px;width:100vw!important;border-radius:50px!important}.popup-content.sheet .popup-box .popup-box-content{border-radius:50px!important}}.popup-content{margin:7% auto;display:flex;width:500px;height:600px;border-radius:50px 5px;background-color:var(--fmode-background-primary)}.popup-content .popup-box{width:500px;height:600px;position:relative;border-radius:50px 5px;background-color:var(--login-bgcolor-primary);overflow:hidden}.popup-content .popup-box .popup-box-content{position:absolute;border-radius:50px 5px;inset:4px;background-color:var(--fmode-background-primary);z-index:1}.popup-content .popup-box .popup-box-content .logo-img-login{margin-top:35px;position:relative;width:100%;display:flex;justify-content:center;z-index:2}.popup-content .popup-box .popup-box-content .logo-img-login img{max-height:60px;max-width:150px}.popup-content .popup-box .popup-box-content .close-icon-box{position:relative;top:20px;right:20px;float:right;font-size:20px;cursor:pointer;z-index:2}.popup-content .popup-box .popup-box-content .button-box{display:flex;justify-content:center;margin:auto;padding:10px 10%;border-radius:10px}.popup-content .popup-box .popup-box-content .button-box .button-group{position:relative;display:flex;width:100%;line-height:40px;border-radius:10px;background-color:plum;z-index:2}.popup-content .popup-box .popup-box-content .button-box .login-select-button{flex:1;outline:none;border:none;border-radius:10px;font-size:16px;cursor:pointer;color:#fff;background-color:inherit;transition:background-color .3s;padding:16px 0}.popup-content .popup-box .popup-box-content .button-box .login-select-button:hover{flex:1;outline:none;border:none;border-radius:10px;font-size:16px;cursor:pointer;color:#000;background-color:inherit;transition:background-color .3s}.popup-content .popup-box .popup-box-content .button-box .login-select-button.active{background-color:var(--login-color-primary);border-radius:10px}.popup-content .popup-box .popup-box-content input{color:#000}.popup-content .popup-box .popup-box-content .message-form,.popup-content .popup-box .popup-box-content .mobile-form,.popup-content .popup-box .popup-box-content .wechat-form{display:none}.popup-content .popup-box .popup-box-content .message-form.active,.popup-content .popup-box .popup-box-content .mobile-form.active,.popup-content .popup-box .popup-box-content .wechat-form.active{display:block}.popup-content .popup-box:before{content:\"\";position:absolute;top:-50%;left:-50%;width:500px;height:600px;background:linear-gradient(0deg,transparent,var(--login-bgcolor-third),var(--login-bgcolor-third));transform-origin:bottom right;animation:animate 6s linear infinite}.popup-content .popup-box:after{content:\"\";position:absolute;top:-50%;left:-50%;width:500px;height:600px;background:linear-gradient(0deg,transparent,var(--login-bgcolor-secondary),var(--login-bgcolor-secondary));transform-origin:bottom right;animation:animate 6s linear infinite;animation-delay:-3s}@keyframes animate{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.popup-content .login-submit-box{position:relative}.popup-content .login-submit-button{margin-top:15px;padding:6px;width:100%;line-height:40px;border-radius:10px;border:0;position:relative;box-shadow:0 2px 10px #00000029,0 3px 6px #0000001a;text-decoration:none;font-size:18px;font-weight:700;letter-spacing:2px;text-align:center;color:#fff;background-color:var(--login-color-primary);transition:.3s ease all;cursor:pointer;z-index:1}.popup-content .login-submit-button:before{transition:.5s all ease;position:absolute;inset:0 50%;opacity:0;content:\"\";background-color:var(--fmode-background-primary);z-index:-1}.popup-content .login-submit-button:hover{color:var(--login-color-primary)}.popup-content .login-submit-button:hover:before{border-radius:10px;border:3px solid var(--login-color-primary);box-sizing:border-box;transition:.5s all ease;left:0;right:0;opacity:1}.popup-content .login-submit-button:active{transform:scale(.9)}.popup-content .message-form{padding:6px 55px;display:flex;position:relative;border-radius:50px 5px;background-color:var(--fmode-background-primary)}.popup-content .message-form .login-input-box{display:flex;align-items:center;padding-top:10px}.popup-content .message-form .login-input-box .popup-input-frontnumber{padding:6px 12px;position:relative;border-radius:10px 0 0 10px;line-height:40px;font-size:18px;color:#4d4d4d;background-color:#ededed}.popup-content .message-form .popup-input-itemone{padding:6px 12px;position:relative;line-height:40px;border-radius:0 10px 10px 0;border:0;width:93%;outline:none;box-shadow:none;font-size:18px;letter-spacing:.03em;background-color:#ededed;transition:.5s}.popup-content .message-form .popup-input-itemtwo{padding:6px 12px 6px 16px;position:relative;line-height:40px;border-radius:10px;border:0;width:55%;outline:none;box-shadow:none;font-size:18px;letter-spacing:.03em;background-color:#ededed;transition:.5s}.popup-content .message-form .checknumber-button{margin-left:42px;padding:6px;border-radius:10px;line-height:40px;font-size:16px;width:124px;border:none;outline:none;cursor:pointer;color:#fff;background:var(--login-color-primary)}.popup-content .message-form .checknumber-button:hover{margin-left:46px;padding:6px;border-radius:10px;line-height:40px;font-size:18px;width:124px;border:none;outline:none;cursor:pointer;background:#4bace9}.popup-content .message-form .checknumber-button.active{background:#c7c7c7}.popup-content .rule-box{display:flex;padding-top:4px;padding-left:15px;padding-right:10px;justify-content:space-between;font-size:15px}.popup-content .rule-box span,.popup-content .rule-box ion-checkbox{font-size:15px;color:var(--login-color-primary)}.popup-content .mobile-form{padding:6px 55px;display:flex;position:relative;border-radius:50px 5px;background-color:var(--fmode-background-primary)}.popup-content .mobile-form .login-input-box{padding-top:10px}.popup-content .mobile-form .login-input-box .popup-input-itemnomal{margin-top:20px;padding:6px 12px 6px 14px;position:relative;line-height:40px;border-radius:10px;border:0;width:100%;outline:none;box-shadow:none;font-size:18px;letter-spacing:.03em;background-color:#ededed;transition:.5s}.popup-content .mobile-form .passwprd-box{display:flex;padding-top:4px;justify-content:space-between}.popup-content .mobile-form .passwprd-box .remember-password-box{margin:10px 0 0 15px;font-size:15px}.popup-content .mobile-form .passwprd-box .password-forget{margin-top:10px;margin-right:15px;font-size:15px;color:gray;cursor:pointer}.popup-content .mobile-form .passwprd-box .password-forget:hover{margin-top:10px;margin-right:15px;font-size:15px;color:#000;cursor:pointer}.popup-content .wechat-form{padding:6px 55px;display:flex;position:relative;border-radius:50px 5px;background-color:var(--fmode-background-primary)}.popup-content .wechat-form .wechat-login-box{display:flex;justify-content:center}.popup-content .wechat-form .wechat-login-box .login-erweima-img{margin-top:30px;width:210px}.popup-content .wechat-form .wechat-explain{padding-top:20px;font-size:16px;text-align:center}.popup-content .back-home-box{display:flex;justify-content:center;padding:6px 55px}.popup-content .back-homepage-button{margin-top:15px;padding:6px;width:100%;line-height:40px;border-radius:10px;border:0;position:relative;box-shadow:0 2px 10px #00000029,0 3px 6px #0000001a;text-decoration:none;font-size:18px;font-weight:700;letter-spacing:2px;text-align:center;color:#fff;background-color:var(--login-color-primary);transition:.3s ease all;cursor:pointer;x:1}.popup-content .back-homepage-button:before{transition:.5s all ease;position:absolute;inset:0 50%;opacity:0;content:\"\";background-color:var(--fmode-background-primary);z-index:-1}.popup-content .back-homepage-button:hover{color:var(--login-color-primary)}.popup-content .back-homepage-button:hover:before{border-radius:10px;border:3px solid var(--login-color-primary);box-sizing:border-box;transition:.5s all ease;left:0;right:0;opacity:1}.popup-content .local-code{justify-content:space-between}.popup-content .local-code .canvas{border:1px solid #c2def5;border-radius:5px;width:100px;height:44px}\n"] }]
|
|
295
295
|
}], ctorParameters: () => [{ type: i1.AuthService }, { type: i2.Router }, { type: i2.ActivatedRoute }, { type: i3.HttpClient }, { type: i4.ToastController }], propDecorators: { canvasDom: [{
|
|
296
296
|
type: ViewChild,
|
|
297
297
|
args: ["canvasDom"]
|
|
@@ -304,4 +304,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
304
304
|
type: HostListener,
|
|
305
305
|
args: ["document:keydown.escape", ["$event"]]
|
|
306
306
|
}] } });
|
|
307
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtdXNlci1sb2dpbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mbW9kZS1uZy9zcmMvbGliL3VzZXIvbW9kYWwtdXNlci1sb2dpbi9tb2RhbC11c2VyLWxvZ2luLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Ztb2RlLW5nL3NyYy9saWIvdXNlci9tb2RhbC11c2VyLWxvZ2luL21vZGFsLXVzZXItbG9naW4uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osWUFBWSxFQUdaLE1BQU0sRUFDTixTQUFTLEVBQ1QsVUFBVSxHQUNYLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3BELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBQyxVQUFVLEVBQWtDLE1BQU0sa0JBQWtCLENBQUM7QUFDN0UsT0FBTyxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7Ozs7QUFESSxNQUFNLEtBQUssR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBWW5ILE1BQU0sT0FBTyx1QkFBdUI7SUFzQmxDLFlBQ1MsUUFBcUIsRUFDcEIsTUFBYyxFQUNkLEtBQW9CLEVBQ3BCLElBQWlCLEVBQ2pCLFNBQXlCO1FBSjFCLGFBQVEsR0FBUixRQUFRLENBQWE7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O3NCQURkLFlBQVk7dUJBQUMseUJBQXlCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSG9zdExpc3RlbmVyLFxyXG4gIElucHV0LFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgVmlld0NoaWxkLFxyXG4gIEVsZW1lbnRSZWYsXHJcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcclxuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tIFwiLi4vbG9naW4vYXV0aC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHtGbW9kZVBhcnNlLEZtb2RlT2JqZWN0LEZtb2RlUXVlcnksRm1vZGVVc2VyfSBmcm9tIFwiLi4vLi4vY29yZS9wYXJzZVwiO2NvbnN0IFBhcnNlID0gRm1vZGVQYXJzZS53aXRoKFwibm92YVwiKTtcclxuaW1wb3J0IHsgSW9uQ2hlY2tib3gsIFRvYXN0Q29udHJvbGxlciB9IGZyb20gXCJAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzdGFuZGFsb25lOnRydWUsXHJcbiAgaW1wb3J0czpbQ29tbW9uTW9kdWxlLEZvcm1zTW9kdWxlLFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgSW9uQ2hlY2tib3hcclxuICBdLFxyXG4gIHNlbGVjdG9yOiBcImZtLW1vZGFsLXVzZXItbG9naW5cIixcclxuICB0ZW1wbGF0ZVVybDogXCIuL21vZGFsLXVzZXItbG9naW4uY29tcG9uZW50Lmh0bWxcIixcclxuICBzdHlsZVVybHM6IFtcIi4vbW9kYWwtdXNlci1sb2dpbi5jb21wb25lbnQuc2Nzc1wiXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIE1vZGFsVXNlckxvZ2luQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBtb2JpbGU6IHN0cmluZztcclxuICBwYXNzd29yZDogc3RyaW5nO1xyXG4gIHBhc3N3b3JkMjogc3RyaW5nO1xyXG4gIC8vIOeUqOaIt+WNj+iurlxyXG4gIGlzVXNlclJ1bGVDaGVja2VkOmJvb2xlYW4gPSBmYWxzZTtcclxuICAvKiDnn63kv6Hpqozor4HnoIHnmbvlvZXnm7jlhbPlj4LmlbAgKi9cclxuICAvLyBAVmlld0NoaWxkKFwiY2FudmFzXCIpIGNhbnZhczogRWxlbWVudFJlZjsgLy/mnKzlnLDmoKHpqoznoIHnu5jnlLtcclxuICBAVmlld0NoaWxkKFwiY2FudmFzRG9tXCIpIGNhbnZhc0RvbTogRWxlbWVudFJlZjsgLy/mnKzlnLDmoKHpqoznoIHnu5jnlLtcclxuICBsb2dpbkluZm86IGFueSA9IHtcclxuICAgIG1vYmlsZTogXCJcIixcclxuICAgIGNvZGU6IFwiXCIsXHJcbiAgfTtcclxuXHJcbiAgQFZpZXdDaGlsZChcInNtc0NvZGVJbnB1dFwiKSBzbXNDb2RlSW5wdXQ6RWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcclxuICAvLyBlbmFibGVkTG9jYWxDb2RlOmJvb2xlYW4gPSBmYWxzZTsgLy8g5byA5ZCv6aqM6K+B56CBXHJcbiAgbG9jYWxDb2RlTnVtOiBzdHJpbmcgPSAnJzsgLy/ovpPlhaXmoKHpqoznoIFcclxuIFxyXG4gIG1zZyA9IHRoaXMuYXV0aFNlcnYubWVzc2FnZVxyXG5cclxuICBAT3V0cHV0KCkgbG9naW5TdWNjZXNzID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIGF1dGhTZXJ2OiBBdXRoU2VydmljZSxcclxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwcml2YXRlIHJvdXRlOkFjdGl2YXRlZFJvdXRlLFxyXG4gICAgcHJpdmF0ZSBodHRwIDogSHR0cENsaWVudCxcclxuICAgIHByaXZhdGUgdG9hc3RDdHJsOlRvYXN0Q29udHJvbGxlclxyXG4gICkge1xyXG4gICAgLy8gZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKFwiZGFya1wiKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgXHJcbiAgICB0aGlzLmNsb3NlKCk7XHJcbiAgfVxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIC8vIHRoaXMudXBkYXRlRHJhd0NvZGUoKVxyXG4gICAgdGhpcy5zZXRBY3RpdmVCdXR0b24odGhpcy5hdXRoU2Vydi5hY3RpdmVCdXR0b24pXHJcbiAgfVxyXG4gIC8vIOaJi+acuivlr4bnoIHms6jlhoxcclxuICBzaWduTW9iaWxlUGFzc3dvcmQoKSB7XHJcbiAgICBpZiAoIXRoaXMubW9iaWxlIHx8ICF0aGlzLnBhc3N3b3JkKSB7XHJcbiAgICAgIHRoaXMubXNnLmVycm9yKFwi6K+36L6T5YWl5a6M5pW05omL5py65Y+35ZKM5a+G56CBXCIpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5wYXNzd29yZCAhPSB0aGlzLnBhc3N3b3JkMikge1xyXG4gICAgICB0aGlzLm1zZy5lcnJvcihcIuS4pOasoei+k+WFpeWvhueggeS4jeWQjO+8jOivt+ajgOafpVwiKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuYXV0aFNlcnZcclxuICAgICAgLnNpZ25Nb2JpbGVQYXNzd29yZCh0aGlzLm1vYmlsZSwgdGhpcy5wYXNzd29yZClcclxuICAgICAgLnRoZW4oKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlcz8uaWQpIHtcclxuICAgICAgICAgIC8vIOazqOWGjOaIkOWKn++8jOiHquWKqOeZu+W9lVxyXG4gICAgICAgICAgdGhpcy5hdXRoU2Vydi5sb2dpbk1vYmlsZVBhc3N3b3JkKHRoaXMubW9iaWxlLCB0aGlzLnBhc3N3b3JkLCB0aGlzLm1zZylcclxuICAgICAgICAgICAgLnRoZW4oKGRhdGEpID0+IHtcclxuICAgICAgICAgICAgICAvLyDnmbvlvZXmiJDlip/ml7blj5HlsITkuovku7ZcclxuICAgICAgICAgICAgICB0aGlzLmxvZ2luU3VjY2Vzcy5lbWl0KHsgdXNlcjogIFBhcnNlLlVzZXIuY3VycmVudCgpLCBkYXRhOiBkYXRhIH0pO1xyXG4gICAgICAgICAgICAgIHRoaXMuc2V0QWN0aXZlQnV0dG9uKFwi6LSm5Y+35a+G56CBXCIpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIC5jYXRjaCgoZXJyb3IpID0+IHtcclxuICAgICAgICB0aGlzLm1zZy5lcnJvcihcIuazqOWGjOWksei0pe+8jOivt+abtOaNouaJi+acuuWPt+azqOWGjFwiKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG4gIC8vIOaJi+acuivlr4bnoIHnmbvlvZVcclxuICBsb2dpbk1vYmlsZVBhc3N3b3JkKCkge1xyXG4gICAgaWYgKCF0aGlzLm1vYmlsZSB8fCAhdGhpcy5wYXNzd29yZCkge1xyXG4gICAgICB0aGlzLm1zZy5lcnJvcihcIuivt+i+k+WFpeWujOaVtOaJi+acuuWPt+WSjOWvhueggVwiKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5hdXRoU2Vydi5sb2dpbk1vYmlsZVBhc3N3b3JkKHRoaXMubW9iaWxlLCB0aGlzLnBhc3N3b3JkLCB0aGlzLm1zZylcclxuICAgICAgLnRoZW4oKGRhdGEpID0+IHtcclxuICAgICAgICBjb25zb2xlLmxvZyhcIueZu+W9leaIkOWKn1wiLCBkYXRhKTtcclxuICAgICAgICAvLyDnmbvlvZXmiJDlip/ml7blj5HlsITkuovku7ZcclxuICAgICAgICB0aGlzLmxvZ2luU3VjY2Vzcy5lbWl0KHsgdXNlcjogIFBhcnNlLlVzZXIuY3VycmVudCgpLCBkYXRhOiBkYXRhIH0pO1xyXG4gICAgICAgIHRoaXMuYXV0aFNlcnYudXBkYXRlTG9naW5TdGF0ZSgpXHJcblxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIGNsb3NlKCkge1xyXG4gICAgbGV0IGxvY2sgPSB0aGlzLmF1dGhTZXJ2LmlzR3VhcmRMb2NrKHRoaXMucm91dGVyLnVybCk7XHJcbiAgICB0aGlzLmF1dGhTZXJ2LmlzTW9kYWxTaG93ID0gbG9jaztcclxuICB9XHJcbiAgZ29Ib21lKCkge1xyXG4gICAgbGV0IHVybCA9IHRoaXMucm91dGVyLnVybDtcclxuICAgIGlmKHVybD8uaW5kZXhPZihcInl1YmFuXCIpKXtcclxuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybChcIi9hcHAvaG9tZVwiKTtcclxuICAgIH1cclxuICAgIGlmICh1cmwuaW5kZXhPZihcImNoYXRcIikgPiAtMSkge1xyXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKFwiL2NoYXQvaG9tZVwiKTtcclxuICAgICAgdGhpcy5hdXRoU2Vydi5pc01vZGFsU2hvdyA9IGZhbHNlO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAodXJsLmluZGV4T2YoXCJpbWFnaW5lXCIpID4gLTEpIHtcclxuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybChcIi9pbWFnaW5lL2hvbWVcIik7XHJcbiAgICAgIHRoaXMuYXV0aFNlcnYuaXNNb2RhbFNob3cgPSBmYWxzZTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybChcIi9cIik7XHJcbiAgICB0aGlzLmF1dGhTZXJ2LmlzTW9kYWxTaG93ID0gZmFsc2U7XHJcbiAgICByZXR1cm47XHJcbiAgfVxyXG4gIC8v5re75Yqg55uR5ZCsRXNj5oyJ6ZSu5YWz6Zet5by556qXXHJcbiAgQEhvc3RMaXN0ZW5lcihcImRvY3VtZW50OmtleWRvd24uZXNjYXBlXCIsIFtcIiRldmVudFwiXSlcclxuICBoYW5kbGVFc2NhcGVLZXkoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcclxuICAgIC8vIHRoaXMuY2xvc2VQb3B1cCgpO1xyXG4gICAgdGhpcy5jbG9zZSgpO1xyXG4gIH1cclxuXHJcbiBcclxuICBzZXRBY3RpdmVCdXR0b24oYnV0dG9uTmFtZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmF1dGhTZXJ2LmFjdGl2ZUJ1dHRvbiA9IGJ1dHRvbk5hbWU7XHJcbiAgICBjb25zb2xlLmxvZyh0aGlzLmF1dGhTZXJ2LmFjdGl2ZUJ1dHRvbik7XHJcbiAgICB0aGlzLnVwZGF0ZURyYXdDb2RlKCk7XHJcbiAgfVxyXG5cclxuICAvL+WPkemAgemqjOivgeeggeWAkuiuoeaXtlxyXG4gIGNvdW50ZG93biA9IDYwO1xyXG4gIGJ1dHRvblRleHQgPSBcIuiOt+WPlumqjOivgeeggVwiO1xyXG4gIC8v5re75Yqg5YCS6K6h5pe25byA5aeL5ZKM57uT5p2f55qE5Yik5patXHJcbiAgaXNDb3VudGluZ2Rvd24gPSBmYWxzZTtcclxuICBzbXNBdXRvTG9naW4oKXtcclxuICAgIGlmKHRoaXMubG9naW5JbmZvLmNvZGU/Lmxlbmd0aD09Nil7XHJcbiAgICAgIHRoaXMubG9naW4oKTtcclxuICAgIH1cclxuICB9XHJcbiAgLyog6I635Y+W6aqM6K+B56CBICovXHJcbiAgc3RhcnRDb3VudGRvd24oKSB7XHJcbiAgICBsZXQgYSA9IC9eMVszNDU2Nzg5XVxcZHs5fSQvO1xyXG4gICAgaWYgKCFTdHJpbmcodGhpcy5sb2dpbkluZm8ubW9iaWxlKS5tYXRjaChhKSkge1xyXG4gICAgICB0aGlzLm1zZy5lcnJvcihcIuivt+Whq+WGmeato+ehruaJi+acuuWPt1wiKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgbGV0IHN0ciA9IHRoaXMuZHJhd0NvZGUuam9pbignJyk7XHJcbiAgICBpZih0aGlzLmF1dGhTZXJ2LmVuYWJsZWRMb2NhbENvZGUpe1xyXG4gICAgICBpZiAodGhpcy5sb2NhbENvZGVOdW0udG9Mb3dlckNhc2UoKSAhPSBzdHIudG9Mb3dlckNhc2UoKSkge1xyXG4gICAgICAgIHRoaXMubXNnLmVycm9yKFwi5qCh6aqM56CB5LiN5q2j56GuXCIpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgbGV0IGhvc3QgPSAoUGFyc2UgYXMgYW55KS5zZXJ2ZXJVUkw/LnNwbGl0KFwicGFyc2VcIik/LlswXSB8fCBcImh0dHBzOi8vc2VydmVyLmZtb2RlLmNuL1wiXHJcbiAgICBcclxuICAgIHRoaXMuaXNDb3VudGluZ2Rvd24gPSB0cnVlO1xyXG4gICAgdGhpcy5odHRwXHJcbiAgICAucG9zdChob3N0K1wiYXBpL2FwaWcvbWVzc2FnZVwiLCB7XHJcbiAgICAgIGNvbXBhbnk6IHRoaXMuYXV0aFNlcnYuY29tcGFueSxcclxuICAgICAgbW9iaWxlOiB0aGlzLmxvZ2luSW5mby5tb2JpbGUsXHJcbiAgICB9KVxyXG4gICAgLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgY29uc29sZS5sb2cocmVzKTtcclxuICAgICAgdGhpcy5tc2cuc3VjY2Vzcygn5Y+R6YCB5oiQ5YqfJylcclxuICAgICAgdGhpcy50aW1lKCk7XHJcbiAgICAgIHRoaXMudXBkYXRlRHJhd0NvZGUoKTtcclxuICAgICAgdGhpcy5mb2N1c1Ntc0NvZGVJbnB1dCgpO1xyXG4gICAgfSlcclxuICB9XHJcbiAgZm9jdXNTbXNDb2RlSW5wdXQoKXtcclxuICAgIHRoaXMuc21zQ29kZUlucHV0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcclxuICB9XHJcbiAgLyog5YCS6K6h5pe2ICovXHJcbiAgdGltZSgpIHtcclxuICAgIHRoaXMuaXNDb3VudGluZ2Rvd24gPSB0cnVlO1xyXG4gICAgdGhpcy5idXR0b25UZXh0ID0gYCR7dGhpcy5jb3VudGRvd25956eSYDtcclxuICAgIGxldCB0aW1lciA9IHNldEludGVydmFsKCgpID0+IHtcclxuICAgICAgdGhpcy5jb3VudGRvd24tLTtcclxuICAgICAgdGhpcy5idXR0b25UZXh0ID0gYCR7dGhpcy5jb3VudGRvd25956eSYDtcclxuICAgICAgaWYgKHRoaXMuY291bnRkb3duID09PSAwIHx8IHRoaXMuY291bnRkb3duIDwgMCkge1xyXG4gICAgICAgIGNsZWFySW50ZXJ2YWwodGltZXIpO1xyXG4gICAgICAgIHRoaXMuYnV0dG9uVGV4dCA9IFwi6YeN5paw5Y+R6YCBXCI7XHJcbiAgICAgICAgdGhpcy5pc0NvdW50aW5nZG93biA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuY291bnRkb3duID0gMDtcclxuICAgICAgfVxyXG4gICAgfSwgMTAwMCk7XHJcbiAgfVxyXG5cclxuICAvKiDpqozor4HnoIHnmbvlvZUgKi9cclxuICBhc3luYyBsb2dpbigpIHtcclxuICAgIGxldCBhID0gL14xWzM0NTY3ODldXFxkezl9JC87XHJcbiAgICBpZiAoIVN0cmluZyh0aGlzLmxvZ2luSW5mby5tb2JpbGUpLm1hdGNoKGEpKSB7XHJcbiAgICAgIHRoaXMubXNnLmVycm9yKFwi6K+35aGr5YaZ5q2j56Gu5omL5py65Y+3XCIpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICAvLyBsZXQgc3RyID0gdGhpcy5kcmF3Q29kZS5qb2luKCk7XHJcbiAgICAvLyBpZiAodGhpcy5sb2NhbENvZGVOdW0gIT0gc3RyKSB7XHJcbiAgICAvLyAgIHRoaXMubXNnLmVycm9yKFwi5qCh6aqM56CB5LiN5q2j56GuXCIpO1xyXG4gICAgLy8gICByZXR1cm47XHJcbiAgICAvLyB9XHJcbiAgICBpZiAoIXRoaXMubG9naW5JbmZvLmNvZGUpIHtcclxuICAgICAgdGhpcy5tc2cuZXJyb3IoXCLor7fovpPlhaXnn63kv6Hpqozor4HnoIFcIik7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1lbHNle1xyXG4gICAgICB0aGlzLmxvZ2luSW5mby5jb2RlID0gdGhpcy5sb2dpbkluZm8uY29kZT8uc2xpY2UoMCw2KVxyXG4gICAgfVxyXG4gICAgbGV0IHJlc1xyXG4gICAgdHJ5e1xyXG4gICAgICByZXMgPSBhd2FpdCB0aGlzLmF1dGhTZXJ2LmxvZ2luQ29kZShcclxuICAgICAgICB0aGlzLmxvZ2luSW5mby5tb2JpbGUsXHJcbiAgICAgICAgdGhpcy5sb2dpbkluZm8uY29kZSxcclxuICAgICAgICB0aGlzLm1zZ1xyXG4gICAgICApXHJcblxyXG4gICAgfWNhdGNoKGVycil7fVxyXG4gICAgXHJcbiAgICBcclxuICAgIGxldCB1c2VyID0gUGFyc2UuVXNlci5jdXJyZW50KCk7XHJcbiAgICBpZihyZXMgfHwgdXNlcj8uaWQpe1xyXG4gICAgICB0aGlzLmxvZ2luU3VjY2Vzcy5lbWl0KHsgdXNlcjogdXNlciwgcmVzOiByZXMgfSk7XHJcbiAgICAgIGNvbnNvbGUubG9nKHJlcyx1c2VyPy5pZCxcImNsb3NlXCIpXHJcbiAgICAgIHRoaXMuY2xvc2UoKVxyXG4gICAgICB0aGlzLmxvZ2luSW5mbyA9IHtcclxuICAgICAgICBtb2JpbGU6IFwiXCIsXHJcbiAgICAgICAgY29kZTogXCJcIixcclxuICAgICAgfTtcclxuICAgICAgdGhpcy5sb2NhbENvZGVOdW0gPSAnJ1xyXG4gICAgICB0aGlzLnRvYXN0KHtjb2xvcjpcInN1Y2Nlc3NcIixtZXNzYWdlOlwi55m75b2V5oiQ5YqfXCJ9KTtcclxuICAgICAgaWYodGhpcy5hdXRoU2Vydi5ndWFyZFR5cGU9PVwibW9kYWxcIil7XHJcbiAgICAgICAgdGhpcy5hdXRoU2Vydi51cGRhdGVMb2dpblN0YXRlKClcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICB9XHJcbiAgYXN5bmMgdG9hc3Qob3B0aW9uczphbnkpe1xyXG4gICAgb3B0aW9ucy5wb3NpdGlvbiA9IG9wdGlvbnM/LnBvc2l0aW9uIHx8IFwidG9wXCJcclxuICAgIG9wdGlvbnMuZHVyYXRpb24gPSBvcHRpb25zPy5kdXJhdGlvbiB8fCAxNTAwXHJcbiAgICBvcHRpb25zLmNvbG9yID0gb3B0aW9ucz8uY29sb3IgfHwgXCJwcmltYXJ5XCJcclxuICAgIGxldCB0b2FzdCA9IGF3YWl0IHRoaXMudG9hc3RDdHJsLmNyZWF0ZShvcHRpb25zKVxyXG4gICAgdG9hc3QucHJlc2VudCgpXHJcbiAgfVxyXG5cclxuICBkcmF3Q29kZTogQXJyYXk8c3RyaW5nPiA9IFtdO1xyXG4gIHVwZGF0ZURyYXdDb2RlKCkge1xyXG4gICAgaWYoIXRoaXMuYXV0aFNlcnYuZW5hYmxlZExvY2FsQ29kZSkgcmV0dXJuO1xyXG4gICAgbGV0IGNhbnZhc193aWR0aCA9IDEwMDtcclxuICAgIGxldCBjYW52YXNfaGVpZ2h0ID0gNDQ7XHJcbiAgICBsZXQgY2FudiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiY2FudmFzXCIpO1xyXG4gICAgaWYgKGNhbnYpIHRoaXMuY2FudmFzRG9tLm5hdGl2ZUVsZW1lbnQucmVtb3ZlQ2hpbGQoY2Fudik7XHJcbiAgICB0aGlzLmNhbnZhc0RvbS5uYXRpdmVFbGVtZW50O1xyXG4gICAgbGV0IGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJjYW52YXNcIik7XHJcbiAgICBjYW52YXMud2lkdGggPSAxMDA7XHJcbiAgICBjYW52YXMuaGVpZ2h0ID0gNDQ7XHJcbiAgICBjYW52YXMuY2xhc3NOYW1lID0gXCJjYW52YXNcIjtcclxuICAgIGNhbnZhcy5zZXRBdHRyaWJ1dGUoXCJpZFwiLCBcImNhbnZhc1wiKTtcclxuICAgIGNhbnZhcy5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgKCkgPT4ge1xyXG4gICAgICB0aGlzLnVwZGF0ZURyYXdDb2RlKCk7XHJcbiAgICB9KTtcclxuICAgIGxldCBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoXCIyZFwiKTsgLy/ojrflj5bliLBjYW52YXPnlLvlm77nmoTnjq/looPvvIzmvJTlkZjooajmvJTnmoToiJ7lj7BcclxuICAgIGNhbnZhcy53aWR0aCA9IGNhbnZhc193aWR0aDtcclxuICAgIGNhbnZhcy5oZWlnaHQgPSBjYW52YXNfaGVpZ2h0O1xyXG4gICAgbGV0IHNDb2RlID1cclxuICAgICAgXCJBLEIsQyxFLEYsRyxILEosSyxMLE0sTixQLFEsUixTLFQsVyxYLFksWiwxLDIsMyw0LDUsNiw3LDgsOSwwLHEsdyxlLHIsdCx5LHUsaSxvLHAsYSxzLGQsZixnLGgsaixrLGwseix4LGMsdixiLG4sbVwiO1xyXG4gICAgbGV0IGFDb2RlID0gc0NvZGUuc3BsaXQoXCIsXCIpO1xyXG4gICAgbGV0IGFMZW5ndGggPSBhQ29kZS5sZW5ndGg7IC8v6I635Y+W5Yiw5pWw57uE55qE6ZW/5bqmXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8PSAzOyBpKyspIHtcclxuICAgICAgbGV0IGogPSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBhTGVuZ3RoKTsgLy/ojrflj5bliLDpmo/mnLrnmoTntKLlvJXlgLxcclxuICAgICAgbGV0IGRlZyA9IChNYXRoLnJhbmRvbSgpICogMzAgKiBNYXRoLlBJKSAvIDE4MDsgLy/kuqfnlJ8wfjMw5LmL6Ze055qE6ZqP5py65byn5bqmXHJcbiAgICAgIGxldCB0eHQgPSBhQ29kZVtqXTsgLy/lvpfliLDpmo/mnLrnmoTkuIDkuKrlhoXlrrlcclxuICAgICAgdGhpcy5kcmF3Q29kZVtpXSA9IHR4dDtcclxuICAgICAgbGV0IHggPSAxMCArIGkgKiAyMDsgLy/mloflrZflnKhjYW52YXPkuIrnmoR45Z2Q5qCHXHJcbiAgICAgIGxldCB5ID0gMjAgKyBNYXRoLnJhbmRvbSgpICogODsgLy/mloflrZflnKhjYW52YXPkuIrnmoR55Z2Q5qCHXHJcbiAgICAgIGNvbnRleHQuZm9udCA9IFwiYm9sZCAyM3B4IOW+rui9r+mbhem7kVwiO1xyXG5cclxuICAgICAgY29udGV4dC50cmFuc2xhdGUoeCwgeSk7XHJcbiAgICAgIGNvbnRleHQucm90YXRlKGRlZyk7XHJcblxyXG4gICAgICBjb250ZXh0LmZpbGxTdHlsZSA9IHRoaXMucmFuZG9tQ29sb3IoKTtcclxuICAgICAgY29udGV4dC5maWxsVGV4dCh0eHQsIDAsIDApO1xyXG5cclxuICAgICAgY29udGV4dC5yb3RhdGUoLWRlZyk7XHJcbiAgICAgIGNvbnRleHQudHJhbnNsYXRlKC14LCAteSk7XHJcbiAgICB9XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8PSA1OyBpKyspIHtcclxuICAgICAgLy/pqozor4HnoIHkuIrmmL7npLrnur/mnaFcclxuICAgICAgY29udGV4dC5zdHJva2VTdHlsZSA9IHRoaXMucmFuZG9tQ29sb3IoKTtcclxuICAgICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgICAgY29udGV4dC5tb3ZlVG8oXHJcbiAgICAgICAgTWF0aC5yYW5kb20oKSAqIGNhbnZhc193aWR0aCxcclxuICAgICAgICBNYXRoLnJhbmRvbSgpICogY2FudmFzX2hlaWdodFxyXG4gICAgICApO1xyXG4gICAgICBjb250ZXh0LmxpbmVUbyhcclxuICAgICAgICBNYXRoLnJhbmRvbSgpICogY2FudmFzX3dpZHRoLFxyXG4gICAgICAgIE1hdGgucmFuZG9tKCkgKiBjYW52YXNfaGVpZ2h0XHJcbiAgICAgICk7XHJcbiAgICAgIGNvbnRleHQuc3Ryb2tlKCk7XHJcbiAgICB9XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8PSAzMDsgaSsrKSB7XHJcbiAgICAgIC8v6aqM6K+B56CB5LiK5pi+56S65bCP54K5XHJcbiAgICAgIGNvbnRleHQuc3Ryb2tlU3R5bGUgPSB0aGlzLnJhbmRvbUNvbG9yKCk7XHJcbiAgICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XHJcbiAgICAgIGxldCB4ID0gTWF0aC5yYW5kb20oKSAqIGNhbnZhc193aWR0aDtcclxuICAgICAgbGV0IHkgPSBNYXRoLnJhbmRvbSgpICogY2FudmFzX2hlaWdodDtcclxuICAgICAgY29udGV4dC5tb3ZlVG8oeCwgeSk7XHJcbiAgICAgIGNvbnRleHQubGluZVRvKHggKyAxLCB5ICsgMSk7XHJcbiAgICAgIGNvbnRleHQuc3Ryb2tlKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNhbnZhc0RvbS5uYXRpdmVFbGVtZW50LmFwcGVuZENoaWxkKGNhbnZhcyk7XHJcbiAgfVxyXG4gIC8qIOW+l+WIsOmaj+acuueahOminOiJsuWAvCAqL1xyXG4gIHJhbmRvbUNvbG9yKCkge1xyXG4gICAgbGV0IHIgPSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAyNTYpO1xyXG4gICAgbGV0IGcgPSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAyNTYpO1xyXG4gICAgbGV0IGIgPSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAyNTYpO1xyXG4gICAgcmV0dXJuIFwicmdiKFwiICsgciArIFwiLFwiICsgZyArIFwiLFwiICsgYiArIFwiKVwiO1xyXG4gIH1cclxufVxyXG4iLCI8IS0t55m75b2V5by55Ye65qGG6K6+572uLS0+XHJcbjwhLS3og4zmma/ngbDoibLokpnniYgtLT5cclxuPGRpdlxyXG4gIGNsYXNzPVwicG9wdXBcIlxyXG4gIFtzdHlsZS5kaXNwbGF5XT1cImF1dGhTZXJ2LmlzTW9kYWxTaG93ID8gJ2Jsb2NrJyA6ICdub25lJ1wiXHJcbiAgKGNsaWNrKT1cImNsb3NlKClcIlxyXG4+XHJcbiAgPGRpdiBjbGFzcz1cInBvcHVwLWNvbnRlbnRcIiAgW2NsYXNzLmZ1bGxzY3JlZW5dPVwiYXV0aFNlcnYubW9kYWxUeXBlPT0nZnVsbHNjcmVlbidcIiBbY2xhc3Muc2hlZXRdPVwiYXV0aFNlcnYubW9kYWxUeXBlPT0nc2hlZXQnXCJcclxuICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInBvcHVwLWJveFwiPlxyXG4gICAgICA8IS0t5by55qGG5YaF6K6+572ucG9zaXRpb246YWJzb2x1dGUs6KeE6IyD5o6S54mI77yM5ZCO57ut5Y+q6ZyAcG9zaXRpb246cmVsYXRpdmXlop7lh4/lhoXlrrktLT5cclxuICAgICAgPGRpdiBjbGFzcz1cInBvcHVwLWJveC1jb250ZW50XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImxvZ28taW1nLWxvZ2luXCI+XHJcbiAgICAgICAgICA8aW1nXHJcbiAgICAgICAgICBbc3JjXT1cImF1dGhTZXJ2LmxvZ29VcmxcIlxyXG4gICAgICAgICAgYWx0PVwiZm1vZGVcIlxyXG4gICAgICAgICAgLz5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPCEtLeWFs+mXreWbvuagh+aMiemSri0tPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjbG9zZS1pY29uLWJveFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImljb25mb250IGljb24tc2hhbmNodTJcIiAoY2xpY2spPVwiY2xvc2UoKVwiPjwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwhLS3mjInpkq7liIfmjaLnmbvlvZXmlrnlvI8tLT5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uLWJveFwiICpuZ0lmPVwiYXV0aFNlcnY/LmxvZ2luVHlwZUNvdW50PjFcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b24tZ3JvdXBcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImF1dGhTZXJ2Py5sb2dpbk9wdGlvbnM/LnVzZXJwd2RcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwibG9naW4tc2VsZWN0LWJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJhdXRoU2Vydi5hY3RpdmVCdXR0b24gPT09ICfotKblj7flr4bnoIEnXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwic2V0QWN0aXZlQnV0dG9uKCfotKblj7flr4bnoIEnKVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICDotKblj7flr4bnoIFcclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJhdXRoU2Vydj8ubG9naW5PcHRpb25zPy5tb2JpbGVjb2RlXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImxvZ2luLXNlbGVjdC1idXR0b25cIlxyXG4gICAgICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwiYXV0aFNlcnYuYWN0aXZlQnV0dG9uID09PSAn55+t5L+h6aqM6K+BJ1wiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInNldEFjdGl2ZUJ1dHRvbign55+t5L+h6aqM6K+BJylcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAg55+t5L+h6aqM6K+BXHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiYXV0aFNlcnY/LmxvZ2luT3B0aW9ucz8ud2VjaGF0XCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImxvZ2luLXNlbGVjdC1idXR0b25cIlxyXG4gICAgICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwiYXV0aFNlcnYuYWN0aXZlQnV0dG9uID09PSAn5b6u5L+h5omr56CBJ1wiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInNldEFjdGl2ZUJ1dHRvbign5b6u5L+h5omr56CBJylcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAg5b6u5L+h5omr56CBXHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDwhLS3miYvmnLrpqozor4HnoIEtLT5cclxuICAgICAgICA8Zm9ybSBjbGFzcz1cIm1lc3NhZ2UtZm9ybVwiIFtjbGFzcy5hY3RpdmVdPVwiYXV0aFNlcnYuYWN0aXZlQnV0dG9uID09PSAn55+t5L+h6aqM6K+BJ1wiICpuZ0lmPVwiYXV0aFNlcnY/LmxvZ2luT3B0aW9ucz8ubW9iaWxlY29kZVwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImxvZ2luLWlucHV0LWJveFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicG9wdXAtaW5wdXQtZnJvbnRudW1iZXJcIj4rODY8L2Rpdj5cclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJwb3B1cC1pbnB1dC1pdGVtb25lXCJcclxuICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgcmVxdWlyZWQ9XCJyZXF1aXJlZFwiXHJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJsb2dpbkluZm8ubW9iaWxlXCJcclxuICAgICAgICAgICAgICBbbmdNb2RlbE9wdGlvbnNdPVwieyBzdGFuZGFsb25lOiB0cnVlIH1cIlxyXG4gICAgICAgICAgICAgIG1heGxlbmd0aD1cIjEyXCJcclxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIuivt+i+k+WFpeaJi+acuuWPt1wiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJhdXRoU2Vydj8uZW5hYmxlZExvY2FsQ29kZVwiXHJcbiAgICAgICAgICBjbGFzcz1cImxvZ2luLWlucHV0LWJveCBsb2NhbC1jb2RlXCIgI2NhbnZhc0RvbT5cclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJwb3B1cC1pbnB1dC1pdGVtdHdvXCJcclxuICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgcmVxdWlyZWQ9XCJyZXF1aXJlZFwiXHJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJsb2NhbENvZGVOdW1cIlxyXG4gICAgICAgICAgICAgIFtuZ01vZGVsT3B0aW9uc109XCJ7IHN0YW5kYWxvbmU6IHRydWUgfVwiXHJcbiAgICAgICAgICAgICAgbWF4bGVuZ3RoPVwiNFwiXHJcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCLor7fovpPlhaXmoKHpqoznoIFcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICA8IS0tIDxjYW52YXNcclxuICAgICAgICAgICAgICAjY2FudmFzXHJcbiAgICAgICAgICAgICAgd2lkdGg9XCIxMDBcIlxyXG4gICAgICAgICAgICAgIGhlaWdodD1cIjQ0XCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwidXBkYXRlRHJhd0NvZGUoKVwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJjYW52YXNcIlxyXG4gICAgICAgICAgICA+PC9jYW52YXM+IC0tPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibG9naW4taW5wdXQtYm94XCI+XHJcbiAgICAgICAgICAgIDxpbnB1dCAjc21zQ29kZUlucHV0XHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJwb3B1cC1pbnB1dC1pdGVtdHdvXCJcclxuICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgcmVxdWlyZWQ9XCJyZXF1aXJlZFwiXHJcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCLor7fovpPlhaXnn63kv6Hpqozor4HnoIFcIlxyXG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwibG9naW5JbmZvLmNvZGVcIlxyXG4gICAgICAgICAgICAgIChjaGFuZ2UpPVwic21zQXV0b0xvZ2luKClcIlxyXG4gICAgICAgICAgICAgIFtuZ01vZGVsT3B0aW9uc109XCJ7IHN0YW5kYWxvbmU6IHRydWUgfVwiXHJcbiAgICAgICAgICAgICAgbWF4bGVuZ3RoPVwiNlwiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICBjbGFzcz1cImNoZWNrbnVtYmVyLWJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgdHlwZT1cInN1Ym1pdFwiXHJcbiAgICAgICAgICAgICAgW3ZhbHVlXT1cImJ1dHRvblRleHRcIlxyXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpc0NvdW50aW5nZG93blwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInN0YXJ0Q291bnRkb3duKClcIlxyXG4gICAgICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwiaXNDb3VudGluZ2Rvd25cIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAge3tidXR0b25UZXh0fX1cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8IS0tIOeUqOaIt+WNj+iuriAtLT5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJydWxlLWJveFwiPlxyXG4gICAgICAgICAgICA8c3Bhbj7mnKrms6jlhoznmoTmiYvmnLrlj7fvvIzlsIboh6rliqjliJvlu7rluJDlj7flubbnmbvlvZXjgII8L3NwYW4+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibG9naW4tc3VibWl0LWJveFwiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwibG9naW4tc3VibWl0LWJ1dHRvblwiIHR5cGU9XCJzdWJtaXRcIiAoY2xpY2spPVwibG9naW4oKVwiPlxyXG4gICAgICAgICAgICAgIOeZu+W9lVxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZm9ybT5cclxuXHJcbiAgICAgICAgPCEtLei0puWPt+WvhueggeeZu+W9lS0tPlxyXG4gICAgICAgIDxmb3JtIGNsYXNzPVwibW9iaWxlLWZvcm1cIiBbY2xhc3MuYWN0aXZlXT1cImF1dGhTZXJ2LmFjdGl2ZUJ1dHRvbiA9PT0gJ+i0puWPt+WvhueggSdcIiAqbmdJZj1cImF1dGhTZXJ2Py5sb2dpbk9wdGlvbnM/LnVzZXJwd2RcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJsb2dpbi1pbnB1dC1ib3hcIj5cclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgbWF4bGVuZ3RoPVwiMTJcIlxyXG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwibW9iaWxlXCJcclxuICAgICAgICAgICAgICBbbmdNb2RlbE9wdGlvbnNdPVwieyBzdGFuZGFsb25lOiB0cnVlIH1cIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwicG9wdXAtaW5wdXQtaXRlbW5vbWFsXCJcclxuICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgcmVxdWlyZWQ9XCJyZXF1aXJlZFwiXHJcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCLor7fovpPlhaXmiYvmnLrlj7dcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImxvZ2luLWlucHV0LWJveFwiPlxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInBhc3N3b3JkXCJcclxuICAgICAgICAgICAgICBbbmdNb2RlbE9wdGlvbnNdPVwieyBzdGFuZGFsb25lOiB0cnVlIH1cIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwicG9wdXAtaW5wdXQtaXRlbW5vbWFsXCJcclxuICAgICAgICAgICAgICB0eXBlPVwicGFzc3dvcmRcIlxyXG4gICAgICAgICAgICAgIHJlcXVpcmVkPVwicmVxdWlyZWRcIlxyXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwi6K+36L6T5YWl5a+G56CBXCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDwhLS0g6K6w5L2P5a+G56CBIC0tPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInBhc3N3cHJkLWJveFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVtZW1iZXItcGFzc3dvcmQtYm94XCI+XHJcbiAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIGlkPVwicmVtZW1iZXItcGFzc3dvcmRcIiAvPlxyXG4gICAgICAgICAgICAgIOiusOS9j+WvhueggVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDwhLS0g5b+Y6K6w5a+G56CBIC0tPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGFzc3dvcmQtZm9yZ2V0XCIgKGNsaWNrKT1cInNldEFjdGl2ZUJ1dHRvbign5rOo5YaM5biQ5Y+3JylcIj5cclxuICAgICAgICAgICAgICDms6jlhozluJDlj7dcclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8IS0tIOeUqOaIt+WNj+iuriAtLT5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJydWxlLWJveFwiPlxyXG4gICAgICAgICAgICA8c3Bhbj5cclxuICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgWyhuZ01vZGVsKV09XCJpc1VzZXJSdWxlQ2hlY2tlZFwiICBbbmdNb2RlbE9wdGlvbnNdPVwieyBzdGFuZGFsb25lOiB0cnVlIH1cIiBzdHlsZT1cIm1hcmdpbi1yaWdodDo1cHhcIi8+XHJcbiAgICAgICAgICAgICAgPHNwYW4gKGNsaWNrKT1cImlzVXNlclJ1bGVDaGVja2VkPXRydWVcIj7lkIzmhI88L3NwYW4+PC9zcGFuPlxyXG4gICAgICAgICAgICA8c3BhbiAoY2xpY2spPVwiaXNVc2VyUnVsZUNoZWNrZWQ9dHJ1ZVwiPuOAiueUqOaIt+WNj+iuruWPiumakOengeadoeasvuOAizwvc3Bhbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICAgICAgICA8IS0tIOW/mOiusOWvhueggSAtLT5cclxuICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cInBhc3N3b3JkLWZvcmdldFwiPuW/mOiusOWvhueggT88L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PiAtLT5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibG9naW4tc3VibWl0LWJveFwiPlxyXG4gICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJsb2dpbi1zdWJtaXQtYnV0dG9uXCJcclxuICAgICAgICAgICAgICB0eXBlPVwic3VibWl0XCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwibG9naW5Nb2JpbGVQYXNzd29yZCgpXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIOeZu+W9lVxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZm9ybT5cclxuXHJcbiAgICAgICAgPCEtLSDluJDlj7flr4bnoIHms6jlhowgLS0+XHJcbiAgICAgICAgPGZvcm0gY2xhc3M9XCJtb2JpbGUtZm9ybVwiIFtjbGFzcy5hY3RpdmVdPVwiYXV0aFNlcnYuYWN0aXZlQnV0dG9uID09PSAn5rOo5YaM5biQ5Y+3J1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImxvZ2luLWlucHV0LWJveFwiPlxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cIm1vYmlsZVwiXHJcbiAgICAgICAgICAgICAgW25nTW9kZWxPcHRpb25zXT1cInsgc3RhbmRhbG9uZTogdHJ1ZSB9XCJcclxuICAgICAgICAgICAgICBjbGFzcz1cInBvcHVwLWlucHV0LWl0ZW1ub21hbFwiXHJcbiAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAgIHJlcXVpcmVkPVwicmVxdWlyZWRcIlxyXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwi6K+36L6T5YWl5omL5py65Y+3XCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJsb2dpbi1pbnB1dC1ib3hcIj5cclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJwYXNzd29yZFwiXHJcbiAgICAgICAgICAgICAgW25nTW9kZWxPcHRpb25zXT1cInsgc3RhbmRhbG9uZTogdHJ1ZSB9XCJcclxuICAgICAgICAgICAgICBjbGFzcz1cInBvcHVwLWlucHV0LWl0ZW1ub21hbFwiXHJcbiAgICAgICAgICAgICAgdHlwZT1cInBhc3N3b3JkXCJcclxuICAgICAgICAgICAgICByZXF1aXJlZD1cInJlcXVpcmVkXCJcclxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIuivt+i+k+WFpeWvhueggVwiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibG9naW4taW5wdXQtYm94XCI+XHJcbiAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwicGFzc3dvcmQyXCJcclxuICAgICAgICAgICAgICBbbmdNb2RlbE9wdGlvbnNdPVwieyBzdGFuZGFsb25lOiB0cnVlIH1cIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwicG9wdXAtaW5wdXQtaXRlbW5vbWFsXCJcclxuICAgICAgICAgICAgICB0eXBlPVwicGFzc3dvcmRcIlxyXG4gICAgICAgICAgICAgIHJlcXVpcmVkPVwicmVxdWlyZWRcIlxyXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwi6K+35YaN5qyh6L6T5YWl5a+G56CBXCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJsb2dpbi1zdWJtaXQtYm94XCI+XHJcbiAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICBjbGFzcz1cImxvZ2luLXN1Ym1pdC1idXR0b25cIlxyXG4gICAgICAgICAgICAgIHR5cGU9XCJzdWJtaXRcIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJzaWduTW9iaWxlUGFzc3dvcmQoKVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICDms6jlhoxcclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Zvcm0+XHJcblxyXG4gICAgICAgIDwhLS3lvq7kv6HmiavnoIHnmbvpmYYtLT5cclxuICAgICAgICA8Zm9ybSBjbGFzcz1cIndlY2hhdC1mb3JtXCIgW2NsYXNzLmFjdGl2ZV09XCJhdXRoU2Vydi5hY3RpdmVCdXR0b24gPT09ICflvq7kv6HmiavnoIEnXCIgKm5nSWY9XCJhdXRoU2Vydj8ubG9naW5PcHRpb25zPy53ZWNoYXRcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3ZWNoYXQtbG9naW4tYm94XCI+XHJcbiAgICAgICAgICAgIDxpbWdcclxuICAgICAgICAgICAgICBjbGFzcz1cImxvZ2luLWVyd2VpbWEtaW1nXCJcclxuICAgICAgICAgICAgICBbc3JjXT1cImF1dGhTZXJ2LndlY2hhdFVybFwiXHJcbiAgICAgICAgICAgICAgYWx0PVwi5b6u5L+h5omr56CB55m76ZmG5LqM57u056CBXCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIndlY2hhdC1leHBsYWluXCI+5L2/55So5b6u5L+h5omr5LiA5omrLOaJq+eggeeZu+W9lSBcIumjnueggUFJXCI8L2Rpdj5cclxuICAgICAgICA8L2Zvcm0+XHJcblxyXG4gICAgICAgIDwhLS3ov5Tlm57pppbpobUtLT5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYmFjay1ob21lLWJveFwiICpuZ0lmPVwiYXV0aFNlcnYuc2hvd0JhY2tIb21lXCI+XHJcbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYmFjay1ob21lcGFnZS1idXR0b25cIiAoY2xpY2spPVwiZ29Ib21lKClcIj5cclxuICAgICAgICAgICAg6L+U5Zue6aaW6aG1XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
|
|
307
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtdXNlci1sb2dpbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mbW9kZS1uZy9zcmMvbGliL3VzZXIvbW9kYWwtdXNlci1sb2dpbi9tb2RhbC11c2VyLWxvZ2luLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Ztb2RlLW5nL3NyYy9saWIvdXNlci9tb2RhbC11c2VyLWxvZ2luL21vZGFsLXVzZXItbG9naW4uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osWUFBWSxFQUdaLE1BQU0sRUFDTixTQUFTLEVBQ1QsVUFBVSxHQUNYLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3BELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBQyxVQUFVLEVBQWtDLE1BQU0sa0JBQWtCLENBQUM7QUFDN0UsT0FBTyxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7Ozs7QUFESSxNQUFNLEtBQUssR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBWW5ILE1BQU0sT0FBTyx1QkFBdUI7SUFzQmxDLFlBQ1MsUUFBcUIsRUFDcEIsTUFBYyxFQUNkLEtBQW9CLEVBQ3BCLElBQWlCLEVBQ2pCLFNBQXlCO1FBSjFCLGFBQVEsR0FBUixRQUFRLENBQWE7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O3NCQURkLFlBQVk7dUJBQUMseUJBQXlCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSG9zdExpc3RlbmVyLFxyXG4gIElucHV0LFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgVmlld0NoaWxkLFxyXG4gIEVsZW1lbnRSZWYsXHJcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcclxuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tIFwiLi4vbG9naW4vYXV0aC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHtGbW9kZVBhcnNlLEZtb2RlT2JqZWN0LEZtb2RlUXVlcnksRm1vZGVVc2VyfSBmcm9tIFwiLi4vLi4vY29yZS9wYXJzZVwiO2NvbnN0IFBhcnNlID0gRm1vZGVQYXJzZS53aXRoKFwibm92YVwiKTtcclxuaW1wb3J0IHsgSW9uQ2hlY2tib3gsIFRvYXN0Q29udHJvbGxlciB9IGZyb20gXCJAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzdGFuZGFsb25lOnRydWUsXHJcbiAgaW1wb3J0czpbQ29tbW9uTW9kdWxlLEZvcm1zTW9kdWxlLFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgSW9uQ2hlY2tib3hcclxuICBdLFxyXG4gIHNlbGVjdG9yOiBcImZtLW1vZGFsLXVzZXItbG9naW5cIixcclxuICB0ZW1wbGF0ZVVybDogXCIuL21vZGFsLXVzZXItbG9naW4uY29tcG9uZW50Lmh0bWxcIixcclxuICBzdHlsZVVybHM6IFtcIi4vbW9kYWwtdXNlci1sb2dpbi5jb21wb25lbnQuc2Nzc1wiXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIE1vZGFsVXNlckxvZ2luQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBtb2JpbGU6IHN0cmluZztcclxuICBwYXNzd29yZDogc3RyaW5nO1xyXG4gIHBhc3N3b3JkMjogc3RyaW5nO1xyXG4gIC8vIOeUqOaIt+WNj+iurlxyXG4gIGlzVXNlclJ1bGVDaGVja2VkOmJvb2xlYW4gPSBmYWxzZTtcclxuICAvKiDnn63kv6Hpqozor4HnoIHnmbvlvZXnm7jlhbPlj4LmlbAgKi9cclxuICAvLyBAVmlld0NoaWxkKFwiY2FudmFzXCIpIGNhbnZhczogRWxlbWVudFJlZjsgLy/mnKzlnLDmoKHpqoznoIHnu5jnlLtcclxuICBAVmlld0NoaWxkKFwiY2FudmFzRG9tXCIpIGNhbnZhc0RvbTogRWxlbWVudFJlZjsgLy/mnKzlnLDmoKHpqoznoIHnu5jnlLtcclxuICBsb2dpbkluZm86IGFueSA9IHtcclxuICAgIG1vYmlsZTogXCJcIixcclxuICAgIGNvZGU6IFwiXCIsXHJcbiAgfTtcclxuXHJcbiAgQFZpZXdDaGlsZChcInNtc0NvZGVJbnB1dFwiKSBzbXNDb2RlSW5wdXQ6RWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcclxuICAvLyBlbmFibGVkTG9jYWxDb2RlOmJvb2xlYW4gPSBmYWxzZTsgLy8g5byA5ZCv6aqM6K+B56CBXHJcbiAgbG9jYWxDb2RlTnVtOiBzdHJpbmcgPSAnJzsgLy/ovpPlhaXmoKHpqoznoIFcclxuIFxyXG4gIG1zZyA9IHRoaXMuYXV0aFNlcnYubWVzc2FnZVxyXG5cclxuICBAT3V0cHV0KCkgbG9naW5TdWNjZXNzID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIGF1dGhTZXJ2OiBBdXRoU2VydmljZSxcclxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwcml2YXRlIHJvdXRlOkFjdGl2YXRlZFJvdXRlLFxyXG4gICAgcHJpdmF0ZSBodHRwIDogSHR0cENsaWVudCxcclxuICAgIHByaXZhdGUgdG9hc3RDdHJsOlRvYXN0Q29udHJvbGxlclxyXG4gICkge1xyXG4gICAgLy8gZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKFwiZGFya1wiKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgXHJcbiAgICB0aGlzLmNsb3NlKCk7XHJcbiAgfVxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIC8vIHRoaXMudXBkYXRlRHJhd0NvZGUoKVxyXG4gICAgdGhpcy5zZXRBY3RpdmVCdXR0b24odGhpcy5hdXRoU2Vydi5hY3RpdmVCdXR0b24pXHJcbiAgfVxyXG4gIC8vIOaJi+acuivlr4bnoIHms6jlhoxcclxuICBzaWduTW9iaWxlUGFzc3dvcmQoKSB7XHJcbiAgICBpZiAoIXRoaXMubW9iaWxlIHx8ICF0aGlzLnBhc3N3b3JkKSB7XHJcbiAgICAgIHRoaXMubXNnLmVycm9yKFwi6K+36L6T5YWl5a6M5pW05omL5py65Y+35ZKM5a+G56CBXCIpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5wYXNzd29yZCAhPSB0aGlzLnBhc3N3b3JkMikge1xyXG4gICAgICB0aGlzLm1zZy5lcnJvcihcIuS4pOasoei+k+WFpeWvhueggeS4jeWQjO+8jOivt+ajgOafpVwiKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuYXV0aFNlcnZcclxuICAgICAgLnNpZ25Nb2JpbGVQYXNzd29yZCh0aGlzLm1vYmlsZSwgdGhpcy5wYXNzd29yZClcclxuICAgICAgLnRoZW4oKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlcz8uaWQpIHtcclxuICAgICAgICAgIC8vIOazqOWGjOaIkOWKn++8jOiHquWKqOeZu+W9lVxyXG4gICAgICAgICAgdGhpcy5hdXRoU2Vydi5sb2dpbk1vYmlsZVBhc3N3b3JkKHRoaXMubW9iaWxlLCB0aGlzLnBhc3N3b3JkLCB0aGlzLm1zZylcclxuICAgICAgICAgICAgLnRoZW4oKGRhdGEpID0+IHtcclxuICAgICAgICAgICAgICAvLyDnmbvlvZXmiJDlip/ml7blj5HlsITkuovku7ZcclxuICAgICAgICAgICAgICB0aGlzLmxvZ2luU3VjY2Vzcy5lbWl0KHsgdXNlcjogIFBhcnNlLlVzZXIuY3VycmVudCgpLCBkYXRhOiBkYXRhIH0pO1xyXG4gICAgICAgICAgICAgIHRoaXMuc2V0QWN0aXZlQnV0dG9uKFwi6LSm5Y+35a+G56CBXCIpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIC5jYXRjaCgoZXJyb3IpID0+IHtcclxuICAgICAgICB0aGlzLm1zZy5lcnJvcihcIuazqOWGjOWksei0pe+8jOivt+abtOaNouaJi+acuuWPt+azqOWGjFwiKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG4gIC8vIOaJi+acuivlr4bnoIHnmbvlvZVcclxuICBsb2dpbk1vYmlsZVBhc3N3b3JkKCkge1xyXG4gICAgaWYgKCF0aGlzLm1vYmlsZSB8fCAhdGhpcy5wYXNzd29yZCkge1xyXG4gICAgICB0aGlzLm1zZy5lcnJvcihcIuivt+i+k+WFpeWujOaVtOaJi+acuuWPt+WSjOWvhueggVwiKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5hdXRoU2Vydi5sb2dpbk1vYmlsZVBhc3N3b3JkKHRoaXMubW9iaWxlLCB0aGlzLnBhc3N3b3JkLCB0aGlzLm1zZylcclxuICAgICAgLnRoZW4oKGRhdGEpID0+IHtcclxuICAgICAgICBjb25zb2xlLmxvZyhcIueZu+W9leaIkOWKn1wiLCBkYXRhKTtcclxuICAgICAgICAvLyDnmbvlvZXmiJDlip/ml7blj5HlsITkuovku7ZcclxuICAgICAgICB0aGlzLmxvZ2luU3VjY2Vzcy5lbWl0KHsgdXNlcjogIFBhcnNlLlVzZXIuY3VycmVudCgpLCBkYXRhOiBkYXRhIH0pO1xyXG4gICAgICAgIHRoaXMuYXV0aFNlcnYudXBkYXRlTG9naW5TdGF0ZSgpXHJcblxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIGNsb3NlKCkge1xyXG4gICAgbGV0IGxvY2sgPSB0aGlzLmF1dGhTZXJ2LmlzR3VhcmRMb2NrKHRoaXMucm91dGVyLnVybCk7XHJcbiAgICB0aGlzLmF1dGhTZXJ2LmlzTW9kYWxTaG93ID0gbG9jaztcclxuICB9XHJcbiAgZ29Ib21lKCkge1xyXG4gICAgbGV0IHVybCA9IHRoaXMucm91dGVyLnVybDtcclxuICAgIGlmKHVybD8uaW5kZXhPZihcInl1YmFuXCIpKXtcclxuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybChcIi9hcHAvaG9tZVwiKTtcclxuICAgIH1cclxuICAgIGlmICh1cmwuaW5kZXhPZihcImNoYXRcIikgPiAtMSkge1xyXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKFwiL2NoYXQvaG9tZVwiKTtcclxuICAgICAgdGhpcy5hdXRoU2Vydi5pc01vZGFsU2hvdyA9IGZhbHNlO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAodXJsLmluZGV4T2YoXCJpbWFnaW5lXCIpID4gLTEpIHtcclxuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybChcIi9pbWFnaW5lL2hvbWVcIik7XHJcbiAgICAgIHRoaXMuYXV0aFNlcnYuaXNNb2RhbFNob3cgPSBmYWxzZTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybChcIi9cIik7XHJcbiAgICB0aGlzLmF1dGhTZXJ2LmlzTW9kYWxTaG93ID0gZmFsc2U7XHJcbiAgICByZXR1cm47XHJcbiAgfVxyXG4gIC8v5re75Yqg55uR5ZCsRXNj5oyJ6ZSu5YWz6Zet5by556qXXHJcbiAgQEhvc3RMaXN0ZW5lcihcImRvY3VtZW50OmtleWRvd24uZXNjYXBlXCIsIFtcIiRldmVudFwiXSlcclxuICBoYW5kbGVFc2NhcGVLZXkoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcclxuICAgIC8vIHRoaXMuY2xvc2VQb3B1cCgpO1xyXG4gICAgdGhpcy5jbG9zZSgpO1xyXG4gIH1cclxuXHJcbiBcclxuICBzZXRBY3RpdmVCdXR0b24oYnV0dG9uTmFtZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmF1dGhTZXJ2LmFjdGl2ZUJ1dHRvbiA9IGJ1dHRvbk5hbWU7XHJcbiAgICBjb25zb2xlLmxvZyh0aGlzLmF1dGhTZXJ2LmFjdGl2ZUJ1dHRvbik7XHJcbiAgICB0aGlzLnVwZGF0ZURyYXdDb2RlKCk7XHJcbiAgfVxyXG5cclxuICAvL+WPkemAgemqjOivgeeggeWAkuiuoeaXtlxyXG4gIGNvdW50ZG93biA9IDYwO1xyXG4gIGJ1dHRvblRleHQgPSBcIuiOt+WPlumqjOivgeeggVwiO1xyXG4gIC8v5re75Yqg5YCS6K6h5pe25byA5aeL5ZKM57uT5p2f55qE5Yik5patXHJcbiAgaXNDb3VudGluZ2Rvd24gPSBmYWxzZTtcclxuICBzbXNBdXRvTG9naW4oKXtcclxuICAgIGlmKHRoaXMubG9naW5JbmZvLmNvZGU/Lmxlbmd0aD09Nil7XHJcbiAgICAgIHRoaXMubG9naW4oKTtcclxuICAgIH1cclxuICB9XHJcbiAgLyog6I635Y+W6aqM6K+B56CBICovXHJcbiAgc3RhcnRDb3VudGRvd24oKSB7XHJcbiAgICBsZXQgYSA9IC9eMVszNDU2Nzg5XVxcZHs5fSQvO1xyXG4gICAgaWYgKCFTdHJpbmcodGhpcy5sb2dpbkluZm8ubW9iaWxlKS5tYXRjaChhKSkge1xyXG4gICAgICB0aGlzLm1zZy5lcnJvcihcIuivt+Whq+WGmeato+ehruaJi+acuuWPt1wiKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgbGV0IHN0ciA9IHRoaXMuZHJhd0NvZGUuam9pbignJyk7XHJcbiAgICBpZih0aGlzLmF1dGhTZXJ2LmVuYWJsZWRMb2NhbENvZGUpe1xyXG4gICAgICBpZiAodGhpcy5sb2NhbENvZGVOdW0udG9Mb3dlckNhc2UoKSAhPSBzdHIudG9Mb3dlckNhc2UoKSkge1xyXG4gICAgICAgIHRoaXMubXNnLmVycm9yKFwi5qCh6aqM56CB5LiN5q2j56GuXCIpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgbGV0IGhvc3QgPSAoUGFyc2UgYXMgYW55KS5zZXJ2ZXJVUkw/LnNwbGl0KFwicGFyc2VcIik/LlswXSB8fCBcImh0dHBzOi8vc2VydmVyLmZtb2RlLmNuL1wiXHJcbiAgICBcclxuICAgIHRoaXMuaXNDb3VudGluZ2Rvd24gPSB0cnVlO1xyXG4gICAgdGhpcy5odHRwXHJcbiAgICAucG9zdChob3N0K1wiYXBpL2FwaWcvbWVzc2FnZVwiLCB7XHJcbiAgICAgIGNvbXBhbnk6IHRoaXMuYXV0aFNlcnYuY29tcGFueSxcclxuICAgICAgbW9iaWxlOiB0aGlzLmxvZ2luSW5mby5tb2JpbGUsXHJcbiAgICB9KVxyXG4gICAgLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgY29uc29sZS5sb2cocmVzKTtcclxuICAgICAgdGhpcy5tc2cuc3VjY2Vzcygn5Y+R6YCB5oiQ5YqfJylcclxuICAgICAgdGhpcy50aW1lKCk7XHJcbiAgICAgIHRoaXMudXBkYXRlRHJhd0NvZGUoKTtcclxuICAgICAgdGhpcy5mb2N1c1Ntc0NvZGVJbnB1dCgpO1xyXG4gICAgfSlcclxuICB9XHJcbiAgZm9jdXNTbXNDb2RlSW5wdXQoKXtcclxuICAgIHRoaXMuc21zQ29kZUlucHV0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcclxuICB9XHJcbiAgLyog5YCS6K6h5pe2ICovXHJcbiAgdGltZSgpIHtcclxuICAgIHRoaXMuaXNDb3VudGluZ2Rvd24gPSB0cnVlO1xyXG4gICAgdGhpcy5idXR0b25UZXh0ID0gYCR7dGhpcy5jb3VudGRvd25956eSYDtcclxuICAgIGxldCB0aW1lciA9IHNldEludGVydmFsKCgpID0+IHtcclxuICAgICAgdGhpcy5jb3VudGRvd24tLTtcclxuICAgICAgdGhpcy5idXR0b25UZXh0ID0gYCR7dGhpcy5jb3VudGRvd25956eSYDtcclxuICAgICAgaWYgKHRoaXMuY291bnRkb3duID09PSAwIHx8IHRoaXMuY291bnRkb3duIDwgMCkge1xyXG4gICAgICAgIGNsZWFySW50ZXJ2YWwodGltZXIpO1xyXG4gICAgICAgIHRoaXMuYnV0dG9uVGV4dCA9IFwi6YeN5paw5Y+R6YCBXCI7XHJcbiAgICAgICAgdGhpcy5pc0NvdW50aW5nZG93biA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuY291bnRkb3duID0gMDtcclxuICAgICAgfVxyXG4gICAgfSwgMTAwMCk7XHJcbiAgfVxyXG5cclxuICAvKiDpqozor4HnoIHnmbvlvZUgKi9cclxuICBhc3luYyBsb2dpbigpIHtcclxuICAgIGxldCBhID0gL14xWzM0NTY3ODldXFxkezl9JC87XHJcbiAgICBpZiAoIVN0cmluZyh0aGlzLmxvZ2luSW5mby5tb2JpbGUpLm1hdGNoKGEpKSB7XHJcbiAgICAgIHRoaXMubXNnLmVycm9yKFwi6K+35aGr5YaZ5q2j56Gu5omL5py65Y+3XCIpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICAvLyBsZXQgc3RyID0gdGhpcy5kcmF3Q29kZS5qb2luKCk7XHJcbiAgICAvLyBpZiAodGhpcy5sb2NhbENvZGVOdW0gIT0gc3RyKSB7XHJcbiAgICAvLyAgIHRoaXMubXNnLmVycm9yKFwi5qCh6aqM56CB5LiN5q2j56GuXCIpO1xyXG4gICAgLy8gICByZXR1cm47XHJcbiAgICAvLyB9XHJcbiAgICBpZiAoIXRoaXMubG9naW5JbmZvLmNvZGUpIHtcclxuICAgICAgdGhpcy5tc2cuZXJyb3IoXCLor7fovpPlhaXnn63kv6Hpqozor4HnoIFcIik7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1lbHNle1xyXG4gICAgICB0aGlzLmxvZ2luSW5mby5jb2RlID0gdGhpcy5sb2dpbkluZm8uY29kZT8uc2xpY2UoMCw2KVxyXG4gICAgfVxyXG4gICAgbGV0IHJlc1xyXG4gICAgdHJ5e1xyXG4gICAgICByZXMgPSBhd2FpdCB0aGlzLmF1dGhTZXJ2LmxvZ2luQ29kZShcclxuICAgICAgICB0aGlzLmxvZ2luSW5mby5tb2JpbGUsXHJcbiAgICAgICAgdGhpcy5sb2dpbkluZm8uY29kZSxcclxuICAgICAgICB0aGlzLm1zZ1xyXG4gICAgICApXHJcblxyXG4gICAgfWNhdGNoKGVycil7fVxyXG4gICAgXHJcbiAgICBcclxuICAgIGxldCB1c2VyID0gUGFyc2UuVXNlci5jdXJyZW50KCk7XHJcbiAgICBpZihyZXMgfHwgdXNlcj8uaWQpe1xyXG4gICAgICB0aGlzLmxvZ2luU3VjY2Vzcy5lbWl0KHsgdXNlcjogdXNlciwgcmVzOiByZXMgfSk7XHJcbiAgICAgIGNvbnNvbGUubG9nKHJlcyx1c2VyPy5pZCxcImNsb3NlXCIpXHJcbiAgICAgIHRoaXMuY2xvc2UoKVxyXG4gICAgICB0aGlzLmxvZ2luSW5mbyA9IHtcclxuICAgICAgICBtb2JpbGU6IFwiXCIsXHJcbiAgICAgICAgY29kZTogXCJcIixcclxuICAgICAgfTtcclxuICAgICAgdGhpcy5sb2NhbENvZGVOdW0gPSAnJ1xyXG4gICAgICB0aGlzLnRvYXN0KHtjb2xvcjpcInN1Y2Nlc3NcIixtZXNzYWdlOlwi55m75b2V5oiQ5YqfXCJ9KTtcclxuICAgICAgaWYodGhpcy5hdXRoU2Vydi5ndWFyZFR5cGU9PVwibW9kYWxcIil7XHJcbiAgICAgICAgdGhpcy5hdXRoU2Vydi51cGRhdGVMb2dpblN0YXRlKClcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICB9XHJcbiAgYXN5bmMgdG9hc3Qob3B0aW9uczphbnkpe1xyXG4gICAgb3B0aW9ucy5wb3NpdGlvbiA9IG9wdGlvbnM/LnBvc2l0aW9uIHx8IFwidG9wXCJcclxuICAgIG9wdGlvbnMuZHVyYXRpb24gPSBvcHRpb25zPy5kdXJhdGlvbiB8fCAxNTAwXHJcbiAgICBvcHRpb25zLmNvbG9yID0gb3B0aW9ucz8uY29sb3IgfHwgXCJwcmltYXJ5XCJcclxuICAgIGxldCB0b2FzdCA9IGF3YWl0IHRoaXMudG9hc3RDdHJsLmNyZWF0ZShvcHRpb25zKVxyXG4gICAgdG9hc3QucHJlc2VudCgpXHJcbiAgfVxyXG5cclxuICBkcmF3Q29kZTogQXJyYXk8c3RyaW5nPiA9IFtdO1xyXG4gIHVwZGF0ZURyYXdDb2RlKCkge1xyXG4gICAgaWYoIXRoaXMuYXV0aFNlcnYuZW5hYmxlZExvY2FsQ29kZSkgcmV0dXJuO1xyXG4gICAgbGV0IGNhbnZhc193aWR0aCA9IDEwMDtcclxuICAgIGxldCBjYW52YXNfaGVpZ2h0ID0gNDQ7XHJcbiAgICBsZXQgY2FudiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiY2FudmFzXCIpO1xyXG4gICAgaWYgKGNhbnYpIHRoaXMuY2FudmFzRG9tLm5hdGl2ZUVsZW1lbnQucmVtb3ZlQ2hpbGQoY2Fudik7XHJcbiAgICB0aGlzLmNhbnZhc0RvbS5uYXRpdmVFbGVtZW50O1xyXG4gICAgbGV0IGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJjYW52YXNcIik7XHJcbiAgICBjYW52YXMud2lkdGggPSAxMDA7XHJcbiAgICBjYW52YXMuaGVpZ2h0ID0gNDQ7XHJcbiAgICBjYW52YXMuY2xhc3NOYW1lID0gXCJjYW52YXNcIjtcclxuICAgIGNhbnZhcy5zZXRBdHRyaWJ1dGUoXCJpZFwiLCBcImNhbnZhc1wiKTtcclxuICAgIGNhbnZhcy5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgKCkgPT4ge1xyXG4gICAgICB0aGlzLnVwZGF0ZURyYXdDb2RlKCk7XHJcbiAgICB9KTtcclxuICAgIGxldCBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoXCIyZFwiKTsgLy/ojrflj5bliLBjYW52YXPnlLvlm77nmoTnjq/looPvvIzmvJTlkZjooajmvJTnmoToiJ7lj7BcclxuICAgIGNhbnZhcy53aWR0aCA9IGNhbnZhc193aWR0aDtcclxuICAgIGNhbnZhcy5oZWlnaHQgPSBjYW52YXNfaGVpZ2h0O1xyXG4gICAgbGV0IHNDb2RlID1cclxuICAgICAgXCJBLEIsQyxFLEYsRyxILEosSyxMLE0sTixQLFEsUixTLFQsVyxYLFksWiwxLDIsMyw0LDUsNiw3LDgsOSwwLHEsdyxlLHIsdCx5LHUsaSxvLHAsYSxzLGQsZixnLGgsaixrLGwseix4LGMsdixiLG4sbVwiO1xyXG4gICAgbGV0IGFDb2RlID0gc0NvZGUuc3BsaXQoXCIsXCIpO1xyXG4gICAgbGV0IGFMZW5ndGggPSBhQ29kZS5sZW5ndGg7IC8v6I635Y+W5Yiw5pWw57uE55qE6ZW/5bqmXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8PSAzOyBpKyspIHtcclxuICAgICAgbGV0IGogPSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBhTGVuZ3RoKTsgLy/ojrflj5bliLDpmo/mnLrnmoTntKLlvJXlgLxcclxuICAgICAgbGV0IGRlZyA9IChNYXRoLnJhbmRvbSgpICogMzAgKiBNYXRoLlBJKSAvIDE4MDsgLy/kuqfnlJ8wfjMw5LmL6Ze055qE6ZqP5py65byn5bqmXHJcbiAgICAgIGxldCB0eHQgPSBhQ29kZVtqXTsgLy/lvpfliLDpmo/mnLrnmoTkuIDkuKrlhoXlrrlcclxuICAgICAgdGhpcy5kcmF3Q29kZVtpXSA9IHR4dDtcclxuICAgICAgbGV0IHggPSAxMCArIGkgKiAyMDsgLy/mloflrZflnKhjYW52YXPkuIrnmoR45Z2Q5qCHXHJcbiAgICAgIGxldCB5ID0gMjAgKyBNYXRoLnJhbmRvbSgpICogODsgLy/mloflrZflnKhjYW52YXPkuIrnmoR55Z2Q5qCHXHJcbiAgICAgIGNvbnRleHQuZm9udCA9IFwiYm9sZCAyM3B4IOW+rui9r+mbhem7kVwiO1xyXG5cclxuICAgICAgY29udGV4dC50cmFuc2xhdGUoeCwgeSk7XHJcbiAgICAgIGNvbnRleHQucm90YXRlKGRlZyk7XHJcblxyXG4gICAgICBjb250ZXh0LmZpbGxTdHlsZSA9IHRoaXMucmFuZG9tQ29sb3IoKTtcclxuICAgICAgY29udGV4dC5maWxsVGV4dCh0eHQsIDAsIDApO1xyXG5cclxuICAgICAgY29udGV4dC5yb3RhdGUoLWRlZyk7XHJcbiAgICAgIGNvbnRleHQudHJhbnNsYXRlKC14LCAteSk7XHJcbiAgICB9XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8PSA1OyBpKyspIHtcclxuICAgICAgLy/pqozor4HnoIHkuIrmmL7npLrnur/mnaFcclxuICAgICAgY29udGV4dC5zdHJva2VTdHlsZSA9IHRoaXMucmFuZG9tQ29sb3IoKTtcclxuICAgICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgICAgY29udGV4dC5tb3ZlVG8oXHJcbiAgICAgICAgTWF0aC5yYW5kb20oKSAqIGNhbnZhc193aWR0aCxcclxuICAgICAgICBNYXRoLnJhbmRvbSgpICogY2FudmFzX2hlaWdodFxyXG4gICAgICApO1xyXG4gICAgICBjb250ZXh0LmxpbmVUbyhcclxuICAgICAgICBNYXRoLnJhbmRvbSgpICogY2FudmFzX3dpZHRoLFxyXG4gICAgICAgIE1hdGgucmFuZG9tKCkgKiBjYW52YXNfaGVpZ2h0XHJcbiAgICAgICk7XHJcbiAgICAgIGNvbnRleHQuc3Ryb2tlKCk7XHJcbiAgICB9XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8PSAzMDsgaSsrKSB7XHJcbiAgICAgIC8v6aqM6K+B56CB5LiK5pi+56S65bCP54K5XHJcbiAgICAgIGNvbnRleHQuc3Ryb2tlU3R5bGUgPSB0aGlzLnJhbmRvbUNvbG9yKCk7XHJcbiAgICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XHJcbiAgICAgIGxldCB4ID0gTWF0aC5yYW5kb20oKSAqIGNhbnZhc193aWR0aDtcclxuICAgICAgbGV0IHkgPSBNYXRoLnJhbmRvbSgpICogY2FudmFzX2hlaWdodDtcclxuICAgICAgY29udGV4dC5tb3ZlVG8oeCwgeSk7XHJcbiAgICAgIGNvbnRleHQubGluZVRvKHggKyAxLCB5ICsgMSk7XHJcbiAgICAgIGNvbnRleHQuc3Ryb2tlKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNhbnZhc0RvbS5uYXRpdmVFbGVtZW50LmFwcGVuZENoaWxkKGNhbnZhcyk7XHJcbiAgfVxyXG4gIC8qIOW+l+WIsOmaj+acuueahOminOiJsuWAvCAqL1xyXG4gIHJhbmRvbUNvbG9yKCkge1xyXG4gICAgbGV0IHIgPSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAyNTYpO1xyXG4gICAgbGV0IGcgPSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAyNTYpO1xyXG4gICAgbGV0IGIgPSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAyNTYpO1xyXG4gICAgcmV0dXJuIFwicmdiKFwiICsgciArIFwiLFwiICsgZyArIFwiLFwiICsgYiArIFwiKVwiO1xyXG4gIH1cclxufVxyXG4iLCI8IS0t55m75b2V5by55Ye65qGG6K6+572uLS0+XHJcbjwhLS3og4zmma/ngbDoibLokpnniYgtLT5cclxuPGRpdlxyXG4gIGNsYXNzPVwicG9wdXBcIlxyXG4gIFtzdHlsZS5kaXNwbGF5XT1cImF1dGhTZXJ2LmlzTW9kYWxTaG93ID8gJ2Jsb2NrJyA6ICdub25lJ1wiXHJcbiAgKGNsaWNrKT1cImNsb3NlKClcIlxyXG4+XHJcbiAgPGRpdiBjbGFzcz1cInBvcHVwLWNvbnRlbnRcIiAgW2NsYXNzLmZ1bGxzY3JlZW5dPVwiYXV0aFNlcnYubW9kYWxUeXBlPT0nZnVsbHNjcmVlbidcIiBbY2xhc3Muc2hlZXRdPVwiYXV0aFNlcnYubW9kYWxUeXBlPT0nc2hlZXQnXCJcclxuICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInBvcHVwLWJveFwiPlxyXG4gICAgICA8IS0t5by55qGG5YaF6K6+572ucG9zaXRpb246YWJzb2x1dGUs6KeE6IyD5o6S54mI77yM5ZCO57ut5Y+q6ZyAcG9zaXRpb246cmVsYXRpdmXlop7lh4/lhoXlrrktLT5cclxuICAgICAgPGRpdiBjbGFzcz1cInBvcHVwLWJveC1jb250ZW50XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImxvZ28taW1nLWxvZ2luXCI+XHJcbiAgICAgICAgICA8aW1nXHJcbiAgICAgICAgICBbc3JjXT1cImF1dGhTZXJ2LmxvZ29VcmxcIlxyXG4gICAgICAgICAgYWx0PVwiZm1vZGVcIlxyXG4gICAgICAgICAgLz5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPCEtLeWFs+mXreWbvuagh+aMiemSri0tPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjbG9zZS1pY29uLWJveFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImljb25mb250IGljb24tc2hhbmNodTJcIiAoY2xpY2spPVwiY2xvc2UoKVwiPjwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwhLS3mjInpkq7liIfmjaLnmbvlvZXmlrnlvI8tLT5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uLWJveFwiICpuZ0lmPVwiYXV0aFNlcnY/LmxvZ2luVHlwZUNvdW50PjFcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b24tZ3JvdXBcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImF1dGhTZXJ2Py5sb2dpbk9wdGlvbnM/LnVzZXJwd2RcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwibG9naW4tc2VsZWN0LWJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJhdXRoU2Vydi5hY3RpdmVCdXR0b24gPT09ICfotKblj7flr4bnoIEnXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwic2V0QWN0aXZlQnV0dG9uKCfotKblj7flr4bnoIEnKVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICDotKblj7flr4bnoIFcclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJhdXRoU2Vydj8ubG9naW5PcHRpb25zPy5tb2JpbGVjb2RlXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImxvZ2luLXNlbGVjdC1idXR0b25cIlxyXG4gICAgICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwiYXV0aFNlcnYuYWN0aXZlQnV0dG9uID09PSAn55+t5L+h6aqM6K+BJ1wiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInNldEFjdGl2ZUJ1dHRvbign55+t5L+h6aqM6K+BJylcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAg55+t5L+h6aqM6K+BXHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiYXV0aFNlcnY/LmxvZ2luT3B0aW9ucz8ud2VjaGF0XCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImxvZ2luLXNlbGVjdC1idXR0b25cIlxyXG4gICAgICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwiYXV0aFNlcnYuYWN0aXZlQnV0dG9uID09PSAn5b6u5L+h5omr56CBJ1wiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInNldEFjdGl2ZUJ1dHRvbign5b6u5L+h5omr56CBJylcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAg5b6u5L+h5omr56CBXHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDwhLS3miYvmnLrpqozor4HnoIEtLT5cclxuICAgICAgICA8Zm9ybSBjbGFzcz1cIm1lc3NhZ2UtZm9ybVwiIFtjbGFzcy5hY3RpdmVdPVwiYXV0aFNlcnYuYWN0aXZlQnV0dG9uID09PSAn55+t5L+h6aqM6K+BJ1wiICpuZ0lmPVwiYXV0aFNlcnY/LmxvZ2luT3B0aW9ucz8ubW9iaWxlY29kZVwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImxvZ2luLWlucHV0LWJveFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicG9wdXAtaW5wdXQtZnJvbnRudW1iZXJcIj4rODY8L2Rpdj5cclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJwb3B1cC1pbnB1dC1pdGVtb25lXCJcclxuICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgcmVxdWlyZWQ9XCJyZXF1aXJlZFwiXHJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJsb2dpbkluZm8ubW9iaWxlXCJcclxuICAgICAgICAgICAgICBbbmdNb2RlbE9wdGlvbnNdPVwieyBzdGFuZGFsb25lOiB0cnVlIH1cIlxyXG4gICAgICAgICAgICAgIG1heGxlbmd0aD1cIjEyXCJcclxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIuivt+i+k+WFpeaJi+acuuWPt1wiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJhdXRoU2Vydj8uZW5hYmxlZExvY2FsQ29kZVwiXHJcbiAgICAgICAgICBjbGFzcz1cImxvZ2luLWlucHV0LWJveCBsb2NhbC1jb2RlXCIgI2NhbnZhc0RvbT5cclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJwb3B1cC1pbnB1dC1pdGVtdHdvXCJcclxuICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgcmVxdWlyZWQ9XCJyZXF1aXJlZFwiXHJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJsb2NhbENvZGVOdW1cIlxyXG4gICAgICAgICAgICAgIFtuZ01vZGVsT3B0aW9uc109XCJ7IHN0YW5kYWxvbmU6IHRydWUgfVwiXHJcbiAgICAgICAgICAgICAgbWF4bGVuZ3RoPVwiNFwiXHJcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCLor7fovpPlhaXmoKHpqoznoIFcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICA8IS0tIDxjYW52YXNcclxuICAgICAgICAgICAgICAjY2FudmFzXHJcbiAgICAgICAgICAgICAgd2lkdGg9XCIxMDBcIlxyXG4gICAgICAgICAgICAgIGhlaWdodD1cIjQ0XCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwidXBkYXRlRHJhd0NvZGUoKVwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJjYW52YXNcIlxyXG4gICAgICAgICAgICA+PC9jYW52YXM+IC0tPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibG9naW4taW5wdXQtYm94XCI+XHJcbiAgICAgICAgICAgIDxpbnB1dCAjc21zQ29kZUlucHV0XHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJwb3B1cC1pbnB1dC1pdGVtdHdvXCJcclxuICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgcmVxdWlyZWQ9XCJyZXF1aXJlZFwiXHJcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCLor7fovpPlhaXnn63kv6Hpqozor4HnoIFcIlxyXG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwibG9naW5JbmZvLmNvZGVcIlxyXG4gICAgICAgICAgICAgIChjaGFuZ2UpPVwic21zQXV0b0xvZ2luKClcIlxyXG4gICAgICAgICAgICAgIFtuZ01vZGVsT3B0aW9uc109XCJ7IHN0YW5kYWxvbmU6IHRydWUgfVwiXHJcbiAgICAgICAgICAgICAgbWF4bGVuZ3RoPVwiNlwiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICBjbGFzcz1cImNoZWNrbnVtYmVyLWJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgdHlwZT1cInN1Ym1pdFwiXHJcbiAgICAgICAgICAgICAgW3ZhbHVlXT1cImJ1dHRvblRleHRcIlxyXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpc0NvdW50aW5nZG93blwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInN0YXJ0Q291bnRkb3duKClcIlxyXG4gICAgICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwiaXNDb3VudGluZ2Rvd25cIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAge3tidXR0b25UZXh0fX1cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8IS0tIOeUqOaIt+WNj+iuriAtLT5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJydWxlLWJveFwiPlxyXG4gICAgICAgICAgICA8c3Bhbj7mnKrms6jlhoznmoTmiYvmnLrlj7fvvIzlsIboh6rliqjliJvlu7rluJDlj7flubbnmbvlvZXjgII8L3NwYW4+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibG9naW4tc3VibWl0LWJveFwiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwibG9naW4tc3VibWl0LWJ1dHRvblwiIHR5cGU9XCJzdWJtaXRcIiAoY2xpY2spPVwibG9naW4oKVwiPlxyXG4gICAgICAgICAgICAgIOeZu+W9lVxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZm9ybT5cclxuXHJcbiAgICAgICAgPCEtLei0puWPt+WvhueggeeZu+W9lS0tPlxyXG4gICAgICAgIDxmb3JtIGNsYXNzPVwibW9iaWxlLWZvcm1cIiBbY2xhc3MuYWN0aXZlXT1cImF1dGhTZXJ2LmFjdGl2ZUJ1dHRvbiA9PT0gJ+i0puWPt+WvhueggSdcIiAqbmdJZj1cImF1dGhTZXJ2Py5sb2dpbk9wdGlvbnM/LnVzZXJwd2RcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJsb2dpbi1pbnB1dC1ib3hcIj5cclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgbWF4bGVuZ3RoPVwiMTJcIlxyXG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwibW9iaWxlXCJcclxuICAgICAgICAgICAgICBbbmdNb2RlbE9wdGlvbnNdPVwieyBzdGFuZGFsb25lOiB0cnVlIH1cIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwicG9wdXAtaW5wdXQtaXRlbW5vbWFsXCJcclxuICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgcmVxdWlyZWQ9XCJyZXF1aXJlZFwiXHJcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCLor7fovpPlhaXmiYvmnLrlj7dcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImxvZ2luLWlucHV0LWJveFwiPlxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInBhc3N3b3JkXCJcclxuICAgICAgICAgICAgICBbbmdNb2RlbE9wdGlvbnNdPVwieyBzdGFuZGFsb25lOiB0cnVlIH1cIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwicG9wdXAtaW5wdXQtaXRlbW5vbWFsXCJcclxuICAgICAgICAgICAgICB0eXBlPVwicGFzc3dvcmRcIlxyXG4gICAgICAgICAgICAgIHJlcXVpcmVkPVwicmVxdWlyZWRcIlxyXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwi6K+36L6T5YWl5a+G56CBXCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDwhLS0g6K6w5L2P5a+G56CBIC0tPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInBhc3N3cHJkLWJveFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVtZW1iZXItcGFzc3dvcmQtYm94XCI+XHJcbiAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIGlkPVwicmVtZW1iZXItcGFzc3dvcmRcIiAvPlxyXG4gICAgICAgICAgICAgIOiusOS9j+WvhueggVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDwhLS0g5b+Y6K6w5a+G56CBIC0tPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGFzc3dvcmQtZm9yZ2V0XCIgKGNsaWNrKT1cInNldEFjdGl2ZUJ1dHRvbign5rOo5YaM5biQ5Y+3JylcIj5cclxuICAgICAgICAgICAgICDms6jlhozluJDlj7dcclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8IS0tIOeUqOaIt+WNj+iuriAtLT5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJydWxlLWJveFwiPlxyXG4gICAgICAgICAgICA8c3Bhbj5cclxuICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgWyhuZ01vZGVsKV09XCJpc1VzZXJSdWxlQ2hlY2tlZFwiICBbbmdNb2RlbE9wdGlvbnNdPVwieyBzdGFuZGFsb25lOiB0cnVlIH1cIiBzdHlsZT1cIm1hcmdpbi1yaWdodDo1cHhcIi8+XHJcbiAgICAgICAgICAgICAgPHNwYW4gKGNsaWNrKT1cImlzVXNlclJ1bGVDaGVja2VkPXRydWVcIj7lkIzmhI88L3NwYW4+PC9zcGFuPlxyXG4gICAgICAgICAgICA8c3BhbiAoY2xpY2spPVwiaXNVc2VyUnVsZUNoZWNrZWQ9dHJ1ZVwiPuOAiueUqOaIt+WNj+iuruWPiumakOengeadoeasvuOAizwvc3Bhbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICAgICAgICA8IS0tIOW/mOiusOWvhueggSAtLT5cclxuICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cInBhc3N3b3JkLWZvcmdldFwiPuW/mOiusOWvhueggT88L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PiAtLT5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibG9naW4tc3VibWl0LWJveFwiPlxyXG4gICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJsb2dpbi1zdWJtaXQtYnV0dG9uXCJcclxuICAgICAgICAgICAgICB0eXBlPVwic3VibWl0XCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwibG9naW5Nb2JpbGVQYXNzd29yZCgpXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIOeZu+W9lVxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZm9ybT5cclxuXHJcbiAgICAgICAgPCEtLSDluJDlj7flr4bnoIHms6jlhowgLS0+XHJcbiAgICAgICAgPGZvcm0gY2xhc3M9XCJtb2JpbGUtZm9ybVwiIFtjbGFzcy5hY3RpdmVdPVwiYXV0aFNlcnYuYWN0aXZlQnV0dG9uID09PSAn5rOo5YaM5biQ5Y+3J1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImxvZ2luLWlucHV0LWJveFwiPlxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cIm1vYmlsZVwiXHJcbiAgICAgICAgICAgICAgW25nTW9kZWxPcHRpb25zXT1cInsgc3RhbmRhbG9uZTogdHJ1ZSB9XCJcclxuICAgICAgICAgICAgICBjbGFzcz1cInBvcHVwLWlucHV0LWl0ZW1ub21hbFwiXHJcbiAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAgIHJlcXVpcmVkPVwicmVxdWlyZWRcIlxyXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwi6K+36L6T5YWl5omL5py65Y+3XCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJsb2dpbi1pbnB1dC1ib3hcIj5cclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJwYXNzd29yZFwiXHJcbiAgICAgICAgICAgICAgW25nTW9kZWxPcHRpb25zXT1cInsgc3RhbmRhbG9uZTogdHJ1ZSB9XCJcclxuICAgICAgICAgICAgICBjbGFzcz1cInBvcHVwLWlucHV0LWl0ZW1ub21hbFwiXHJcbiAgICAgICAgICAgICAgdHlwZT1cInBhc3N3b3JkXCJcclxuICAgICAgICAgICAgICByZXF1aXJlZD1cInJlcXVpcmVkXCJcclxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIuivt+i+k+WFpeWvhueggVwiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibG9naW4taW5wdXQtYm94XCI+XHJcbiAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwicGFzc3dvcmQyXCJcclxuICAgICAgICAgICAgICBbbmdNb2RlbE9wdGlvbnNdPVwieyBzdGFuZGFsb25lOiB0cnVlIH1cIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwicG9wdXAtaW5wdXQtaXRlbW5vbWFsXCJcclxuICAgICAgICAgICAgICB0eXBlPVwicGFzc3dvcmRcIlxyXG4gICAgICAgICAgICAgIHJlcXVpcmVkPVwicmVxdWlyZWRcIlxyXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwi6K+35YaN5qyh6L6T5YWl5a+G56CBXCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJsb2dpbi1zdWJtaXQtYm94XCI+XHJcbiAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICBjbGFzcz1cImxvZ2luLXN1Ym1pdC1idXR0b25cIlxyXG4gICAgICAgICAgICAgIHR5cGU9XCJzdWJtaXRcIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJzaWduTW9iaWxlUGFzc3dvcmQoKVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICDms6jlhoxcclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Zvcm0+XHJcblxyXG4gICAgICAgIDwhLS3lvq7kv6HmiavnoIHnmbvpmYYtLT5cclxuICAgICAgICA8Zm9ybSBjbGFzcz1cIndlY2hhdC1mb3JtXCIgW2NsYXNzLmFjdGl2ZV09XCJhdXRoU2Vydi5hY3RpdmVCdXR0b24gPT09ICflvq7kv6HmiavnoIEnXCIgKm5nSWY9XCJhdXRoU2Vydj8ubG9naW5PcHRpb25zPy53ZWNoYXRcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3ZWNoYXQtbG9naW4tYm94XCI+XHJcbiAgICAgICAgICAgIDxpbWdcclxuICAgICAgICAgICAgICBjbGFzcz1cImxvZ2luLWVyd2VpbWEtaW1nXCJcclxuICAgICAgICAgICAgICBbc3JjXT1cImF1dGhTZXJ2LndlY2hhdFVybFwiXHJcbiAgICAgICAgICAgICAgYWx0PVwi5b6u5L+h5omr56CB55m76ZmG5LqM57u056CBXCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIndlY2hhdC1leHBsYWluXCI+5L2/55So5b6u5L+h5omr5LiA5omrLOaJq+eggeeZu+W9lSBcIumjnueggUFJXCI8L2Rpdj5cclxuICAgICAgICA8L2Zvcm0+XHJcblxyXG4gICAgICAgIDwhLS3ov5Tlm57pppbpobUtLT5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYmFjay1ob21lLWJveFwiICpuZ0lmPVwiYXV0aFNlcnYuc2hvd0JhY2tIb21lXCI+XHJcbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYmFjay1ob21lcGFnZS1idXR0b25cIiAoY2xpY2spPVwiZ29Ib21lKClcIj5cclxuICAgICAgICAgICAg6L+U5Zue6aaW6aG1XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
|