capibara 1.1.21 → 1.1.25
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/config_cuarteles.js +393 -153
- package/cuarteles.html +0 -1
- package/dist/cuarteles.html +0 -1
- package/dist/index.js +3 -3
- package/package.json +1 -1
- package/src/lib/capibara.js +115 -31
- package/src/scss/abstracts/_colors.scss +1 -1
- package/src/scss/components/_floatbox.scss +15 -10
- package/src/scss/layout/_contextMenu.scss +25 -2
- package/src/scss/layout/_detail_day.scss +1 -1
- package/src/scss/layout/_headerTop.scss +41 -1
- package/src/scss/layout/_selectContainer.scss +9 -8
- package/src/scss/layout/_table.scss +1 -0
- package/src/scss/themes/_color_themes.scss +3 -3
- package/src/scss/themes/_themes.scss +2 -2
- package/src/util/tableElements.js +202 -47
package/dist/index.js
CHANGED
|
@@ -103,7 +103,7 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
|
103
103
|
/*! no static exports found */
|
|
104
104
|
/***/ (function(module, exports, __webpack_require__) {
|
|
105
105
|
|
|
106
|
-
eval("// Imports\nvar ___CSS_LOADER_API_IMPORT___ = __webpack_require__(/*! ../../node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\nexports.push([module.i, \"@import url(https://fonts.googleapis.com/css2?family=Roboto:ital,wght@0,300;0,400;0,500;0,700;0,900;1,300;1,400;1,500;1,700;1,900&display=swap);\"]);\n// Module\nexports.push([module.i, \":root{--header-top-height:40px;--header-height:98px;--header-labels-height:50px;--header-day-height:24px;--ex-header-height:110px;--header-input-height:20px;--nav-width:200px;--nav-item-col-width:60px;--initial-nav-width:0px;--ex-nav-width:0px;--btn-nav-width:117px;--nav-right-width:300px;--item-min-width:100px;--item-height:45px;--day-width:45px;--font-size:16px}@-webkit-keyframes pulseMessage{0%{border-color:rgba(211,47,47,.3) rgba(211,47,47,.3) transparent transparent}to{border-color:#d32f2f #d32f2f transparent transparent}}@keyframes pulseMessage{0%{border-color:rgba(211,47,47,.3) rgba(211,47,47,.3) transparent transparent}to{border-color:#d32f2f #d32f2f transparent transparent}}@-webkit-keyframes pulseBackground{0%{background:rgba(211,47,47,.3)}to{background:#d32f2f}}@keyframes pulseBackground{0%{background:rgba(211,47,47,.3)}to{background:#d32f2f}}@-webkit-keyframes loading-fast1{0%{transform:translateX(-100%)}40%{transform:translateX(-100%)}to{transform:translateX(200%)}}@keyframes loading-fast1{0%{transform:translateX(-100%)}40%{transform:translateX(-100%)}to{transform:translateX(200%)}}@-webkit-keyframes loading-fast2{0%{transform:translateX(-100%)}15%{transform:translateX(-100%)}to{transform:translateX(200%)}}@keyframes loading-fast2{0%{transform:translateX(-100%)}15%{transform:translateX(-100%)}to{transform:translateX(200%)}}.capibara.c-red:not(.dark-theme) ::-webkit-scrollbar-thumb{background:#df554b}.capibara.c-red:not(.dark-theme) .header-top{background:#fdfaf9}.capibara.c-red:not(.dark-theme) .corner{background:#fdfaf9;border-color:#f99d97}.capibara.c-red:not(.dark-theme) .container-tl header{background:#fdfaf9;border-bottom-color:#f99d97}.capibara.c-red:not(.dark-theme) .container-tl header .mes.mes-reduced:after{background:linear-gradient(90deg,transparent,#fff8f7)!important}.capibara.c-red:not(.dark-theme) nav.right{border-color:#f99d97}.capibara.c-red.dark-theme .header-top,.capibara.c-red.dark-theme nav.right{border-color:#ba160a}.capibara.c-red.dark-theme .container-tl header,.capibara.c-red.dark-theme .corner{border-bottom-color:#ba160a}.capibara.c-red.dark-theme .progress-bar,.capibara.c-red .progress-bar{background-color:rgba(244,67,54,.2)!important}.capibara.c-red.dark-theme .progress-bar:after,.capibara.c-red.dark-theme .progress-bar:before,.capibara.c-red .progress-bar:after,.capibara.c-red .progress-bar:before{background-color:#f44336!important}.capibara.c-red.dark-theme select.tabs-select,.capibara.c-red select.tabs-select{background-color:rgba(244,67,54,.7)!important;border-color:#f44336!important}.capibara.c-red.dark-theme .time,.capibara.c-red .time{border-color:rgba(244,67,54,.6)}.capibara.c-red.dark-theme .time .symbol,.capibara.c-red .time .symbol{color:#f44336}.capibara.c-red.dark-theme .time input:active,.capibara.c-red.dark-theme .time input:focus,.capibara.c-red .time input:active,.capibara.c-red .time input:focus{border-color:#f44336;box-shadow:0 4px 6px rgba(244,67,54,.2)}.capibara.c-red.dark-theme .input-box,.capibara.c-red.dark-theme .input-section input.nav-input,.capibara.c-red .input-box,.capibara.c-red .input-section input.nav-input{border-color:rgba(244,67,54,.6)}.capibara.c-red.dark-theme .input-section input.nav-input:active,.capibara.c-red.dark-theme .input-section input.nav-input:focus,.capibara.c-red .input-section input.nav-input:active,.capibara.c-red .input-section input.nav-input:focus{border-color:#f44336;box-shadow:0 4px 6px rgba(244,67,54,.2)}.capibara.c-red.dark-theme .input-section.msj-input-container textarea.msj,.capibara.c-red .input-section.msj-input-container textarea.msj{border:2px solid #f44336}.capibara.c-red.dark-theme .input-section.msj-input-container textarea.msj:active,.capibara.c-red.dark-theme .input-section.msj-input-container textarea.msj:focus,.capibara.c-red .input-section.msj-input-container textarea.msj:active,.capibara.c-red .input-section.msj-input-container textarea.msj:focus{box-shadow:0 4px 6px rgba(244,67,54,.2)}.capibara.c-red .btn-raised,.capibara.c-red.dark-theme .btn-raised{border-color:#f44336;background:rgba(244,67,54,.8)}.capibara.c-red .btn-outline,.capibara.c-red.dark-theme .btn-outline{border-color:#f44336;color:#f44336}.capibara.c-red.dark-theme .select-container .selected-day,.capibara.c-red .select-container .selected-day{background:rgba(244,67,54,.3);box-shadow:inset 0 0 10px rgba(244,67,54,.5)}.capibara .c-red--background{background:#f44336!important}.capibara .c-red-d--background{background:#d2190b!important}.capibara .c-red-l--background{background:#f8877f!important}.capibara .c-red--text{color:#f44336!important}.capibara .c-red-d--text{color:#d2190b!important}.capibara .c-red-l--text{color:#f8877f!important}.capibara .detail-day .list-detail .item-detail.c-red{background:rgba(244,67,54,.2);border:1px solid #f44336}.capibara .detail-day .list-detail .item-detail.c-red .left-icon{background:#f44336}.capibara .detail-day .list-detail .item-detail.c-red .left-icon.outlined{border:1px solid #f44336;box-shadow:inset 0 0 0 1px rgba(244,67,54,.7)}.capibara .detail-day .list-detail .item-detail.c-red .name{color:#f44336}.capibara .float-box-container .float-box span.data.c-red{background:rgba(244,67,54,.8)}.capibara .float-box-container .float-box span.data.shape-outlined.c-red{border-color:rgba(244,67,54,.9);background:rgba(244,67,54,.1);color:#f44336}.capibara .float-box-container .float-box span.data.shape-bar.c-red{background:#f44336}.capibara .float-box-container .float-box span.data.shape-bar-outlined.c-red{border-color:rgba(244,67,54,.9);background:rgba(244,67,54,.1)}.capibara .float-box-container .float-box .dot.c-red{background:#f44336}.capibara .float-box-container .float-box .dot.c-red.outlined{border:1px solid #f44336;box-shadow:inset 0 0 0 1px rgba(244,67,54,.7)}.capibara .header-top .tabs-container .tab:not(.disabled).c-red.active{background:rgba(244,67,54,.7);border-color:rgba(244,67,54,.7);color:#fff}.capibara .header-top .tabs-container .tab:not(.disabled).c-red.active:hover{background:rgba(244,67,54,.8)}.capibara .header-top .tabs-container .tab:not(.disabled).c-red:hover{background:rgba(244,67,54,.2);border-color:rgba(244,67,54,.9)}.capibara .input-box .mini-input-section--icon.c-red{background:#f44336}.capibara.c-pink:not(.dark-theme) ::-webkit-scrollbar-thumb{background:#d0376b}.capibara.c-pink:not(.dark-theme) .header-top{background:#f0e3e7}.capibara.c-pink:not(.dark-theme) .corner{background:#f0e3e7;border-color:#f27ba3}.capibara.c-pink:not(.dark-theme) .container-tl header{background:#f0e3e7;border-bottom-color:#f27ba3}.capibara.c-pink:not(.dark-theme) .container-tl header .mes.mes-reduced:after{background:linear-gradient(90deg,transparent,#fbd8e4)!important}.capibara.c-pink:not(.dark-theme) nav.right{border-color:#f27ba3}.capibara.c-pink.dark-theme .header-top,.capibara.c-pink.dark-theme nav.right{border-color:#930e3b}.capibara.c-pink.dark-theme .container-tl header,.capibara.c-pink.dark-theme .corner{border-bottom-color:#930e3b}.capibara.c-pink.dark-theme .progress-bar,.capibara.c-pink .progress-bar{background-color:rgba(233,30,99,.2)!important}.capibara.c-pink.dark-theme .progress-bar:after,.capibara.c-pink.dark-theme .progress-bar:before,.capibara.c-pink .progress-bar:after,.capibara.c-pink .progress-bar:before{background-color:#e91e63!important}.capibara.c-pink.dark-theme select.tabs-select,.capibara.c-pink select.tabs-select{background-color:rgba(233,30,99,.7)!important;border-color:#e91e63!important}.capibara.c-pink.dark-theme .time,.capibara.c-pink .time{border-color:rgba(233,30,99,.6)}.capibara.c-pink.dark-theme .time .symbol,.capibara.c-pink .time .symbol{color:#e91e63}.capibara.c-pink.dark-theme .time input:active,.capibara.c-pink.dark-theme .time input:focus,.capibara.c-pink .time input:active,.capibara.c-pink .time input:focus{border-color:#e91e63;box-shadow:0 4px 6px rgba(233,30,99,.2)}.capibara.c-pink.dark-theme .input-box,.capibara.c-pink.dark-theme .input-section input.nav-input,.capibara.c-pink .input-box,.capibara.c-pink .input-section input.nav-input{border-color:rgba(233,30,99,.6)}.capibara.c-pink.dark-theme .input-section input.nav-input:active,.capibara.c-pink.dark-theme .input-section input.nav-input:focus,.capibara.c-pink .input-section input.nav-input:active,.capibara.c-pink .input-section input.nav-input:focus{border-color:#e91e63;box-shadow:0 4px 6px rgba(233,30,99,.2)}.capibara.c-pink.dark-theme .input-section.msj-input-container textarea.msj,.capibara.c-pink .input-section.msj-input-container textarea.msj{border:2px solid #e91e63}.capibara.c-pink.dark-theme .input-section.msj-input-container textarea.msj:active,.capibara.c-pink.dark-theme .input-section.msj-input-container textarea.msj:focus,.capibara.c-pink .input-section.msj-input-container textarea.msj:active,.capibara.c-pink .input-section.msj-input-container textarea.msj:focus{box-shadow:0 4px 6px rgba(233,30,99,.2)}.capibara.c-pink .btn-raised,.capibara.c-pink.dark-theme .btn-raised{border-color:#e91e63;background:rgba(233,30,99,.8)}.capibara.c-pink .btn-outline,.capibara.c-pink.dark-theme .btn-outline{border-color:#e91e63;color:#e91e63}.capibara.c-pink.dark-theme .select-container .selected-day,.capibara.c-pink .select-container .selected-day{background:rgba(233,30,99,.3);box-shadow:inset 0 0 10px rgba(233,30,99,.5)}.capibara .c-pink--background{background:#e91e63!important}.capibara .c-pink-d--background{background:#aa1145!important}.capibara .c-pink-l--background{background:#f06493!important}.capibara .c-pink--text{color:#e91e63!important}.capibara .c-pink-d--text{color:#aa1145!important}.capibara .c-pink-l--text{color:#f06493!important}.capibara .detail-day .list-detail .item-detail.c-pink{background:rgba(233,30,99,.2);border:1px solid #e91e63}.capibara .detail-day .list-detail .item-detail.c-pink .left-icon{background:#e91e63}.capibara .detail-day .list-detail .item-detail.c-pink .left-icon.outlined{border:1px solid #e91e63;box-shadow:inset 0 0 0 1px rgba(233,30,99,.7)}.capibara .detail-day .list-detail .item-detail.c-pink .name{color:#e91e63}.capibara .float-box-container .float-box span.data.c-pink{background:rgba(233,30,99,.8)}.capibara .float-box-container .float-box span.data.shape-outlined.c-pink{border-color:rgba(233,30,99,.9);background:rgba(233,30,99,.1);color:#e91e63}.capibara .float-box-container .float-box span.data.shape-bar.c-pink{background:#e91e63}.capibara .float-box-container .float-box span.data.shape-bar-outlined.c-pink{border-color:rgba(233,30,99,.9);background:rgba(233,30,99,.1)}.capibara .float-box-container .float-box .dot.c-pink{background:#e91e63}.capibara .float-box-container .float-box .dot.c-pink.outlined{border:1px solid #e91e63;box-shadow:inset 0 0 0 1px rgba(233,30,99,.7)}.capibara .header-top .tabs-container .tab:not(.disabled).c-pink.active{background:rgba(233,30,99,.7);border-color:rgba(233,30,99,.7);color:#fff}.capibara .header-top .tabs-container .tab:not(.disabled).c-pink.active:hover{background:rgba(233,30,99,.8)}.capibara .header-top .tabs-container .tab:not(.disabled).c-pink:hover{background:rgba(233,30,99,.2);border-color:rgba(233,30,99,.9)}.capibara .input-box .mini-input-section--icon.c-pink{background:#e91e63}.capibara.c-purple:not(.dark-theme) ::-webkit-scrollbar-thumb{background:#8d3d9b}.capibara.c-purple:not(.dark-theme) .header-top{background:#d6cbd8}.capibara.c-purple:not(.dark-theme) .corner{background:#d6cbd8;border-color:#ca61dc}.capibara.c-purple:not(.dark-theme) .container-tl header{background:#d6cbd8;border-bottom-color:#ca61dc}.capibara.c-purple:not(.dark-theme) .container-tl header .mes.mes-reduced:after{background:linear-gradient(90deg,transparent,#e6b5ee)!important}.capibara.c-purple:not(.dark-theme) nav.right{border-color:#ca61dc}.capibara.c-purple.dark-theme .header-top,.capibara.c-purple.dark-theme nav.right{border-color:#52145d}.capibara.c-purple.dark-theme .container-tl header,.capibara.c-purple.dark-theme .corner{border-bottom-color:#52145d}.capibara.c-purple.dark-theme .progress-bar,.capibara.c-purple .progress-bar{background-color:rgba(156,39,176,.2)!important}.capibara.c-purple.dark-theme .progress-bar:after,.capibara.c-purple.dark-theme .progress-bar:before,.capibara.c-purple .progress-bar:after,.capibara.c-purple .progress-bar:before{background-color:#9c27b0!important}.capibara.c-purple.dark-theme select.tabs-select,.capibara.c-purple select.tabs-select{background-color:rgba(156,39,176,.7)!important;border-color:#9c27b0!important}.capibara.c-purple.dark-theme .time,.capibara.c-purple .time{border-color:rgba(156,39,176,.6)}.capibara.c-purple.dark-theme .time .symbol,.capibara.c-purple .time .symbol{color:#9c27b0}.capibara.c-purple.dark-theme .time input:active,.capibara.c-purple.dark-theme .time input:focus,.capibara.c-purple .time input:active,.capibara.c-purple .time input:focus{border-color:#9c27b0;box-shadow:0 4px 6px rgba(156,39,176,.2)}.capibara.c-purple.dark-theme .input-box,.capibara.c-purple.dark-theme .input-section input.nav-input,.capibara.c-purple .input-box,.capibara.c-purple .input-section input.nav-input{border-color:rgba(156,39,176,.6)}.capibara.c-purple.dark-theme .input-section input.nav-input:active,.capibara.c-purple.dark-theme .input-section input.nav-input:focus,.capibara.c-purple .input-section input.nav-input:active,.capibara.c-purple .input-section input.nav-input:focus{border-color:#9c27b0;box-shadow:0 4px 6px rgba(156,39,176,.2)}.capibara.c-purple.dark-theme .input-section.msj-input-container textarea.msj,.capibara.c-purple .input-section.msj-input-container textarea.msj{border:2px solid #9c27b0}.capibara.c-purple.dark-theme .input-section.msj-input-container textarea.msj:active,.capibara.c-purple.dark-theme .input-section.msj-input-container textarea.msj:focus,.capibara.c-purple .input-section.msj-input-container textarea.msj:active,.capibara.c-purple .input-section.msj-input-container textarea.msj:focus{box-shadow:0 4px 6px rgba(156,39,176,.2)}.capibara.c-purple .btn-raised,.capibara.c-purple.dark-theme .btn-raised{border-color:#9c27b0;background:rgba(156,39,176,.8)}.capibara.c-purple .btn-outline,.capibara.c-purple.dark-theme .btn-outline{border-color:#9c27b0;color:#9c27b0}.capibara.c-purple.dark-theme .select-container .selected-day,.capibara.c-purple .select-container .selected-day{background:rgba(156,39,176,.3);box-shadow:inset 0 0 10px rgba(156,39,176,.5)}.capibara .c-purple--background{background:#9c27b0!important}.capibara .c-purple-d--background{background:#641971!important}.capibara .c-purple-l--background{background:#c34cd7!important}.capibara .c-purple--text{color:#9c27b0!important}.capibara .c-purple-d--text{color:#641971!important}.capibara .c-purple-l--text{color:#c34cd7!important}.capibara .detail-day .list-detail .item-detail.c-purple{background:rgba(156,39,176,.2);border:1px solid #9c27b0}.capibara .detail-day .list-detail .item-detail.c-purple .left-icon{background:#9c27b0}.capibara .detail-day .list-detail .item-detail.c-purple .left-icon.outlined{border:1px solid #9c27b0;box-shadow:inset 0 0 0 1px rgba(156,39,176,.7)}.capibara .detail-day .list-detail .item-detail.c-purple .name{color:#9c27b0}.capibara .float-box-container .float-box span.data.c-purple{background:rgba(156,39,176,.8)}.capibara .float-box-container .float-box span.data.shape-outlined.c-purple{border-color:rgba(156,39,176,.9);background:rgba(156,39,176,.1);color:#9c27b0}.capibara .float-box-container .float-box span.data.shape-bar.c-purple{background:#9c27b0}.capibara .float-box-container .float-box span.data.shape-bar-outlined.c-purple{border-color:rgba(156,39,176,.9);background:rgba(156,39,176,.1)}.capibara .float-box-container .float-box .dot.c-purple{background:#9c27b0}.capibara .float-box-container .float-box .dot.c-purple.outlined{border:1px solid #9c27b0;box-shadow:inset 0 0 0 1px rgba(156,39,176,.7)}.capibara .header-top .tabs-container .tab:not(.disabled).c-purple.active{background:rgba(156,39,176,.7);border-color:rgba(156,39,176,.7);color:#fff}.capibara .header-top .tabs-container .tab:not(.disabled).c-purple.active:hover{background:rgba(156,39,176,.8)}.capibara .header-top .tabs-container .tab:not(.disabled).c-purple:hover{background:rgba(156,39,176,.2);border-color:rgba(156,39,176,.9)}.capibara .input-box .mini-input-section--icon.c-purple{background:#9c27b0}.capibara.c-deep-purple:not(.dark-theme) ::-webkit-scrollbar-thumb{background:#6e529f}.capibara.c-deep-purple:not(.dark-theme) .header-top{background:#dededf}.capibara.c-deep-purple:not(.dark-theme) .corner{background:#dededf;border-color:#9f80d7}.capibara.c-deep-purple:not(.dark-theme) .container-tl header{background:#dededf;border-bottom-color:#9f80d7}.capibara.c-deep-purple:not(.dark-theme) .container-tl header .mes.mes-reduced:after{background:linear-gradient(90deg,transparent,#daceef)!important}.capibara.c-deep-purple:not(.dark-theme) nav.right{border-color:#9f80d7}.capibara.c-deep-purple.dark-theme .header-top,.capibara.c-deep-purple.dark-theme nav.right{border-color:#3b216a}.capibara.c-deep-purple.dark-theme .container-tl header,.capibara.c-deep-purple.dark-theme .corner{border-bottom-color:#3b216a}.capibara.c-deep-purple.dark-theme .progress-bar,.capibara.c-deep-purple .progress-bar{background-color:rgba(103,58,183,.2)!important}.capibara.c-deep-purple.dark-theme .progress-bar:after,.capibara.c-deep-purple.dark-theme .progress-bar:before,.capibara.c-deep-purple .progress-bar:after,.capibara.c-deep-purple .progress-bar:before{background-color:#673ab7!important}.capibara.c-deep-purple.dark-theme select.tabs-select,.capibara.c-deep-purple select.tabs-select{background-color:rgba(103,58,183,.7)!important;border-color:#673ab7!important}.capibara.c-deep-purple.dark-theme .time,.capibara.c-deep-purple .time{border-color:rgba(103,58,183,.6)}.capibara.c-deep-purple.dark-theme .time .symbol,.capibara.c-deep-purple .time .symbol{color:#673ab7}.capibara.c-deep-purple.dark-theme .time input:active,.capibara.c-deep-purple.dark-theme .time input:focus,.capibara.c-deep-purple .time input:active,.capibara.c-deep-purple .time input:focus{border-color:#673ab7;box-shadow:0 4px 6px rgba(103,58,183,.2)}.capibara.c-deep-purple.dark-theme .input-box,.capibara.c-deep-purple.dark-theme .input-section input.nav-input,.capibara.c-deep-purple .input-box,.capibara.c-deep-purple .input-section input.nav-input{border-color:rgba(103,58,183,.6)}.capibara.c-deep-purple.dark-theme .input-section input.nav-input:active,.capibara.c-deep-purple.dark-theme .input-section input.nav-input:focus,.capibara.c-deep-purple .input-section input.nav-input:active,.capibara.c-deep-purple .input-section input.nav-input:focus{border-color:#673ab7;box-shadow:0 4px 6px rgba(103,58,183,.2)}.capibara.c-deep-purple.dark-theme .input-section.msj-input-container textarea.msj,.capibara.c-deep-purple .input-section.msj-input-container textarea.msj{border:2px solid #673ab7}.capibara.c-deep-purple.dark-theme .input-section.msj-input-container textarea.msj:active,.capibara.c-deep-purple.dark-theme .input-section.msj-input-container textarea.msj:focus,.capibara.c-deep-purple .input-section.msj-input-container textarea.msj:active,.capibara.c-deep-purple .input-section.msj-input-container textarea.msj:focus{box-shadow:0 4px 6px rgba(103,58,183,.2)}.capibara.c-deep-purple .btn-raised,.capibara.c-deep-purple.dark-theme .btn-raised{border-color:#673ab7;background:rgba(103,58,183,.8)}.capibara.c-deep-purple .btn-outline,.capibara.c-deep-purple.dark-theme .btn-outline{border-color:#673ab7;color:#673ab7}.capibara.c-deep-purple.dark-theme .select-container .selected-day,.capibara.c-deep-purple .select-container .selected-day{background:rgba(103,58,183,.3);box-shadow:inset 0 0 10px rgba(103,58,183,.5)}.capibara .c-deep-purple--background{background:#673ab7!important}.capibara .c-deep-purple-d--background{background:#46287d!important}.capibara .c-deep-purple-l--background{background:#916dd1!important}.capibara .c-deep-purple--text{color:#673ab7!important}.capibara .c-deep-purple-d--text{color:#46287d!important}.capibara .c-deep-purple-l--text{color:#916dd1!important}.capibara .detail-day .list-detail .item-detail.c-deep-purple{background:rgba(103,58,183,.2);border:1px solid #673ab7}.capibara .detail-day .list-detail .item-detail.c-deep-purple .left-icon{background:#673ab7}.capibara .detail-day .list-detail .item-detail.c-deep-purple .left-icon.outlined{border:1px solid #673ab7;box-shadow:inset 0 0 0 1px rgba(103,58,183,.7)}.capibara .detail-day .list-detail .item-detail.c-deep-purple .name{color:#673ab7}.capibara .float-box-container .float-box span.data.c-deep-purple{background:rgba(103,58,183,.8)}.capibara .float-box-container .float-box span.data.shape-outlined.c-deep-purple{border-color:rgba(103,58,183,.9);background:rgba(103,58,183,.1);color:#673ab7}.capibara .float-box-container .float-box span.data.shape-bar.c-deep-purple{background:#673ab7}.capibara .float-box-container .float-box span.data.shape-bar-outlined.c-deep-purple{border-color:rgba(103,58,183,.9);background:rgba(103,58,183,.1)}.capibara .float-box-container .float-box .dot.c-deep-purple{background:#673ab7}.capibara .float-box-container .float-box .dot.c-deep-purple.outlined{border:1px solid #673ab7;box-shadow:inset 0 0 0 1px rgba(103,58,183,.7)}.capibara .header-top .tabs-container .tab:not(.disabled).c-deep-purple.active{background:rgba(103,58,183,.7);border-color:rgba(103,58,183,.7);color:#fff}.capibara .header-top .tabs-container .tab:not(.disabled).c-deep-purple.active:hover{background:rgba(103,58,183,.8)}.capibara .header-top .tabs-container .tab:not(.disabled).c-deep-purple:hover{background:rgba(103,58,183,.2);border-color:rgba(103,58,183,.9)}.capibara .input-box .mini-input-section--icon.c-deep-purple{background:#673ab7}.capibara.c-indigo:not(.dark-theme) ::-webkit-scrollbar-thumb{background:#57629d}.capibara.c-indigo:not(.dark-theme) .header-top{background:#e0e0e0}.capibara.c-indigo:not(.dark-theme) .corner{background:#e0e0e0;border-color:#8591d5}.capibara.c-indigo:not(.dark-theme) .container-tl header{background:#e0e0e0;border-bottom-color:#8591d5}.capibara.c-indigo:not(.dark-theme) .container-tl header .mes.mes-reduced:after{background:linear-gradient(90deg,transparent,#d1d6ef)!important}.capibara.c-indigo:not(.dark-theme) nav.right{border-color:#8591d5}.capibara.c-indigo.dark-theme .header-top,.capibara.c-indigo.dark-theme nav.right{border-color:#252f69}.capibara.c-indigo.dark-theme .container-tl header,.capibara.c-indigo.dark-theme .corner{border-bottom-color:#252f69}.capibara.c-indigo.dark-theme .progress-bar,.capibara.c-indigo .progress-bar{background-color:rgba(63,81,181,.2)!important}.capibara.c-indigo.dark-theme .progress-bar:after,.capibara.c-indigo.dark-theme .progress-bar:before,.capibara.c-indigo .progress-bar:after,.capibara.c-indigo .progress-bar:before{background-color:#3f51b5!important}.capibara.c-indigo.dark-theme select.tabs-select,.capibara.c-indigo select.tabs-select{background-color:rgba(63,81,181,.7)!important;border-color:#3f51b5!important}.capibara.c-indigo.dark-theme .time,.capibara.c-indigo .time{border-color:rgba(63,81,181,.6)}.capibara.c-indigo.dark-theme .time .symbol,.capibara.c-indigo .time .symbol{color:#3f51b5}.capibara.c-indigo.dark-theme .time input:active,.capibara.c-indigo.dark-theme .time input:focus,.capibara.c-indigo .time input:active,.capibara.c-indigo .time input:focus{border-color:#3f51b5;box-shadow:0 4px 6px rgba(63,81,181,.2)}.capibara.c-indigo.dark-theme .input-box,.capibara.c-indigo.dark-theme .input-section input.nav-input,.capibara.c-indigo .input-box,.capibara.c-indigo .input-section input.nav-input{border-color:rgba(63,81,181,.6)}.capibara.c-indigo.dark-theme .input-section input.nav-input:active,.capibara.c-indigo.dark-theme .input-section input.nav-input:focus,.capibara.c-indigo .input-section input.nav-input:active,.capibara.c-indigo .input-section input.nav-input:focus{border-color:#3f51b5;box-shadow:0 4px 6px rgba(63,81,181,.2)}.capibara.c-indigo.dark-theme .input-section.msj-input-container textarea.msj,.capibara.c-indigo .input-section.msj-input-container textarea.msj{border:2px solid #3f51b5}.capibara.c-indigo.dark-theme .input-section.msj-input-container textarea.msj:active,.capibara.c-indigo.dark-theme .input-section.msj-input-container textarea.msj:focus,.capibara.c-indigo .input-section.msj-input-container textarea.msj:active,.capibara.c-indigo .input-section.msj-input-container textarea.msj:focus{box-shadow:0 4px 6px rgba(63,81,181,.2)}.capibara.c-indigo .btn-raised,.capibara.c-indigo.dark-theme .btn-raised{border-color:#3f51b5;background:rgba(63,81,181,.8)}.capibara.c-indigo .btn-outline,.capibara.c-indigo.dark-theme .btn-outline{border-color:#3f51b5;color:#3f51b5}.capibara.c-indigo.dark-theme .select-container .selected-day,.capibara.c-indigo .select-container .selected-day{background:rgba(63,81,181,.3);box-shadow:inset 0 0 10px rgba(63,81,181,.5)}.capibara .c-indigo--background{background:#3f51b5!important}.capibara .c-indigo-d--background{background:#2b387c!important}.capibara .c-indigo-l--background{background:#7280ce!important}.capibara .c-indigo--text{color:#3f51b5!important}.capibara .c-indigo-d--text{color:#2b387c!important}.capibara .c-indigo-l--text{color:#7280ce!important}.capibara .detail-day .list-detail .item-detail.c-indigo{background:rgba(63,81,181,.2);border:1px solid #3f51b5}.capibara .detail-day .list-detail .item-detail.c-indigo .left-icon{background:#3f51b5}.capibara .detail-day .list-detail .item-detail.c-indigo .left-icon.outlined{border:1px solid #3f51b5;box-shadow:inset 0 0 0 1px rgba(63,81,181,.7)}.capibara .detail-day .list-detail .item-detail.c-indigo .name{color:#3f51b5}.capibara .float-box-container .float-box span.data.c-indigo{background:rgba(63,81,181,.8)}.capibara .float-box-container .float-box span.data.shape-outlined.c-indigo{border-color:rgba(63,81,181,.9);background:rgba(63,81,181,.1);color:#3f51b5}.capibara .float-box-container .float-box span.data.shape-bar.c-indigo{background:#3f51b5}.capibara .float-box-container .float-box span.data.shape-bar-outlined.c-indigo{border-color:rgba(63,81,181,.9);background:rgba(63,81,181,.1)}.capibara .float-box-container .float-box .dot.c-indigo{background:#3f51b5}.capibara .float-box-container .float-box .dot.c-indigo.outlined{border:1px solid #3f51b5;box-shadow:inset 0 0 0 1px rgba(63,81,181,.7)}.capibara .header-top .tabs-container .tab:not(.disabled).c-indigo.active{background:rgba(63,81,181,.7);border-color:rgba(63,81,181,.7);color:#fff}.capibara .header-top .tabs-container .tab:not(.disabled).c-indigo.active:hover{background:rgba(63,81,181,.8)}.capibara .header-top .tabs-container .tab:not(.disabled).c-indigo:hover{background:rgba(63,81,181,.2);border-color:rgba(63,81,181,.9)}.capibara .input-box .mini-input-section--icon.c-indigo{background:#3f51b5}.capibara.c-blue:not(.dark-theme) ::-webkit-scrollbar-thumb{background:#3176bb}.capibara.c-blue:not(.dark-theme) .header-top{background:#d1dce6}.capibara.c-blue:not(.dark-theme) .corner{background:#d1dce6;border-color:#64a9ed}.capibara.c-blue:not(.dark-theme) .container-tl header{background:#d1dce6;border-bottom-color:#64a9ed}.capibara.c-blue:not(.dark-theme) .container-tl header .mes.mes-reduced:after{background:linear-gradient(90deg,transparent,#c0dcf7)!important}.capibara.c-blue:not(.dark-theme) nav.right{border-color:#64a9ed}.capibara.c-blue.dark-theme .header-top,.capibara.c-blue.dark-theme nav.right{border-color:#0e4377}.capibara.c-blue.dark-theme .container-tl header,.capibara.c-blue.dark-theme .corner{border-bottom-color:#0e4377}.capibara.c-blue.dark-theme .progress-bar,.capibara.c-blue .progress-bar{background-color:rgba(25,118,210,.2)!important}.capibara.c-blue.dark-theme .progress-bar:after,.capibara.c-blue.dark-theme .progress-bar:before,.capibara.c-blue .progress-bar:after,.capibara.c-blue .progress-bar:before{background-color:#1976d2!important}.capibara.c-blue.dark-theme select.tabs-select,.capibara.c-blue select.tabs-select{background-color:rgba(25,118,210,.7)!important;border-color:#1976d2!important}.capibara.c-blue.dark-theme .time,.capibara.c-blue .time{border-color:rgba(25,118,210,.6)}.capibara.c-blue.dark-theme .time .symbol,.capibara.c-blue .time .symbol{color:#1976d2}.capibara.c-blue.dark-theme .time input:active,.capibara.c-blue.dark-theme .time input:focus,.capibara.c-blue .time input:active,.capibara.c-blue .time input:focus{border-color:#1976d2;box-shadow:0 4px 6px rgba(25,118,210,.2)}.capibara.c-blue.dark-theme .input-box,.capibara.c-blue.dark-theme .input-section input.nav-input,.capibara.c-blue .input-box,.capibara.c-blue .input-section input.nav-input{border-color:rgba(25,118,210,.6)}.capibara.c-blue.dark-theme .input-section input.nav-input:active,.capibara.c-blue.dark-theme .input-section input.nav-input:focus,.capibara.c-blue .input-section input.nav-input:active,.capibara.c-blue .input-section input.nav-input:focus{border-color:#1976d2;box-shadow:0 4px 6px rgba(25,118,210,.2)}.capibara.c-blue.dark-theme .input-section.msj-input-container textarea.msj,.capibara.c-blue .input-section.msj-input-container textarea.msj{border:2px solid #1976d2}.capibara.c-blue.dark-theme .input-section.msj-input-container textarea.msj:active,.capibara.c-blue.dark-theme .input-section.msj-input-container textarea.msj:focus,.capibara.c-blue .input-section.msj-input-container textarea.msj:active,.capibara.c-blue .input-section.msj-input-container textarea.msj:focus{box-shadow:0 4px 6px rgba(25,118,210,.2)}.capibara.c-blue .btn-raised,.capibara.c-blue.dark-theme .btn-raised{border-color:#1976d2;background:rgba(25,118,210,.8)}.capibara.c-blue .btn-outline,.capibara.c-blue.dark-theme .btn-outline{border-color:#1976d2;color:#1976d2}.capibara.c-blue.dark-theme .select-container .selected-day,.capibara.c-blue .select-container .selected-day{background:rgba(25,118,210,.3);box-shadow:inset 0 0 10px rgba(25,118,210,.5)}.capibara .c-blue--background{background:#1976d2!important}.capibara .c-blue-d--background{background:#11508e!important}.capibara .c-blue-l--background{background:#4e9cea!important}.capibara .c-blue--text{color:#1976d2!important}.capibara .c-blue-d--text{color:#11508e!important}.capibara .c-blue-l--text{color:#4e9cea!important}.capibara .detail-day .list-detail .item-detail.c-blue{background:rgba(25,118,210,.2);border:1px solid #1976d2}.capibara .detail-day .list-detail .item-detail.c-blue .left-icon{background:#1976d2}.capibara .detail-day .list-detail .item-detail.c-blue .left-icon.outlined{border:1px solid #1976d2;box-shadow:inset 0 0 0 1px rgba(25,118,210,.7)}.capibara .detail-day .list-detail .item-detail.c-blue .name{color:#1976d2}.capibara .float-box-container .float-box span.data.c-blue{background:rgba(25,118,210,.8)}.capibara .float-box-container .float-box span.data.shape-outlined.c-blue{border-color:rgba(25,118,210,.9);background:rgba(25,118,210,.1);color:#1976d2}.capibara .float-box-container .float-box span.data.shape-bar.c-blue{background:#1976d2}.capibara .float-box-container .float-box span.data.shape-bar-outlined.c-blue{border-color:rgba(25,118,210,.9);background:rgba(25,118,210,.1)}.capibara .float-box-container .float-box .dot.c-blue{background:#1976d2}.capibara .float-box-container .float-box .dot.c-blue.outlined{border:1px solid #1976d2;box-shadow:inset 0 0 0 1px rgba(25,118,210,.7)}.capibara .header-top .tabs-container .tab:not(.disabled).c-blue.active{background:rgba(25,118,210,.7);border-color:rgba(25,118,210,.7);color:#fff}.capibara .header-top .tabs-container .tab:not(.disabled).c-blue.active:hover{background:rgba(25,118,210,.8)}.capibara .header-top .tabs-container .tab:not(.disabled).c-blue:hover{background:rgba(25,118,210,.2);border-color:rgba(25,118,210,.9)}.capibara .input-box .mini-input-section--icon.c-blue{background:#1976d2}.capibara.c-light-blue:not(.dark-theme) ::-webkit-scrollbar-thumb{background:#1ca0db}.capibara.c-light-blue:not(.dark-theme) .header-top{background:#d3e7f0}.capibara.c-light-blue:not(.dark-theme) .corner{background:#d3e7f0;border-color:#60ccfd}.capibara.c-light-blue:not(.dark-theme) .container-tl header{background:#d3e7f0;border-bottom-color:#60ccfd}.capibara.c-light-blue:not(.dark-theme) .container-tl header .mes.mes-reduced:after{background:linear-gradient(90deg,transparent,#c5ecfe)!important}.capibara.c-light-blue:not(.dark-theme) nav.right{border-color:#60ccfd}.capibara.c-light-blue.dark-theme .header-top,.capibara.c-light-blue.dark-theme nav.right{border-color:#02638f}.capibara.c-light-blue.dark-theme .container-tl header,.capibara.c-light-blue.dark-theme .corner{border-bottom-color:#02638f}.capibara.c-light-blue.dark-theme .progress-bar,.capibara.c-light-blue .progress-bar{background-color:rgba(3,169,244,.2)!important}.capibara.c-light-blue.dark-theme .progress-bar:after,.capibara.c-light-blue.dark-theme .progress-bar:before,.capibara.c-light-blue .progress-bar:after,.capibara.c-light-blue .progress-bar:before{background-color:#03a9f4!important}.capibara.c-light-blue.dark-theme select.tabs-select,.capibara.c-light-blue select.tabs-select{background-color:rgba(3,169,244,.7)!important;border-color:#03a9f4!important}.capibara.c-light-blue.dark-theme .time,.capibara.c-light-blue .time{border-color:rgba(3,169,244,.6)}.capibara.c-light-blue.dark-theme .time .symbol,.capibara.c-light-blue .time .symbol{color:#03a9f4}.capibara.c-light-blue.dark-theme .time input:active,.capibara.c-light-blue.dark-theme .time input:focus,.capibara.c-light-blue .time input:active,.capibara.c-light-blue .time input:focus{border-color:#03a9f4;box-shadow:0 4px 6px rgba(3,169,244,.2)}.capibara.c-light-blue.dark-theme .input-box,.capibara.c-light-blue.dark-theme .input-section input.nav-input,.capibara.c-light-blue .input-box,.capibara.c-light-blue .input-section input.nav-input{border-color:rgba(3,169,244,.6)}.capibara.c-light-blue.dark-theme .input-section input.nav-input:active,.capibara.c-light-blue.dark-theme .input-section input.nav-input:focus,.capibara.c-light-blue .input-section input.nav-input:active,.capibara.c-light-blue .input-section input.nav-input:focus{border-color:#03a9f4;box-shadow:0 4px 6px rgba(3,169,244,.2)}.capibara.c-light-blue.dark-theme .input-section.msj-input-container textarea.msj,.capibara.c-light-blue .input-section.msj-input-container textarea.msj{border:2px solid #03a9f4}.capibara.c-light-blue.dark-theme .input-section.msj-input-container textarea.msj:active,.capibara.c-light-blue.dark-theme .input-section.msj-input-container textarea.msj:focus,.capibara.c-light-blue .input-section.msj-input-container textarea.msj:active,.capibara.c-light-blue .input-section.msj-input-container textarea.msj:focus{box-shadow:0 4px 6px rgba(3,169,244,.2)}.capibara.c-light-blue .btn-raised,.capibara.c-light-blue.dark-theme .btn-raised{border-color:#03a9f4;background:rgba(3,169,244,.8)}.capibara.c-light-blue .btn-outline,.capibara.c-light-blue.dark-theme .btn-outline{border-color:#03a9f4;color:#03a9f4}.capibara.c-light-blue.dark-theme .select-container .selected-day,.capibara.c-light-blue .select-container .selected-day{background:rgba(3,169,244,.3);box-shadow:inset 0 0 10px rgba(3,169,244,.5)}.capibara .c-light-blue--background{background:#03a9f4!important}.capibara .c-light-blue-d--background{background:#0275a8!important}.capibara .c-light-blue-l--background{background:#47c4fd!important}.capibara .c-light-blue--text{color:#03a9f4!important}.capibara .c-light-blue-d--text{color:#0275a8!important}.capibara .c-light-blue-l--text{color:#47c4fd!important}.capibara .detail-day .list-detail .item-detail.c-light-blue{background:rgba(3,169,244,.2);border:1px solid #03a9f4}.capibara .detail-day .list-detail .item-detail.c-light-blue .left-icon{background:#03a9f4}.capibara .detail-day .list-detail .item-detail.c-light-blue .left-icon.outlined{border:1px solid #03a9f4;box-shadow:inset 0 0 0 1px rgba(3,169,244,.7)}.capibara .detail-day .list-detail .item-detail.c-light-blue .name{color:#03a9f4}.capibara .float-box-container .float-box span.data.c-light-blue{background:rgba(3,169,244,.8)}.capibara .float-box-container .float-box span.data.shape-outlined.c-light-blue{border-color:rgba(3,169,244,.9);background:rgba(3,169,244,.1);color:#03a9f4}.capibara .float-box-container .float-box span.data.shape-bar.c-light-blue{background:#03a9f4}.capibara .float-box-container .float-box span.data.shape-bar-outlined.c-light-blue{border-color:rgba(3,169,244,.9);background:rgba(3,169,244,.1)}.capibara .float-box-container .float-box .dot.c-light-blue{background:#03a9f4}.capibara .float-box-container .float-box .dot.c-light-blue.outlined{border:1px solid #03a9f4;box-shadow:inset 0 0 0 1px rgba(3,169,244,.7)}.capibara .header-top .tabs-container .tab:not(.disabled).c-light-blue.active{background:rgba(3,169,244,.7);border-color:rgba(3,169,244,.7);color:#fff}.capibara .header-top .tabs-container .tab:not(.disabled).c-light-blue.active:hover{background:rgba(3,169,244,.8)}.capibara .header-top .tabs-container .tab:not(.disabled).c-light-blue:hover{background:rgba(3,169,244,.2);border-color:rgba(3,169,244,.9)}.capibara .input-box .mini-input-section--icon.c-light-blue{background:#03a9f4}.capibara.c-cyan:not(.dark-theme) ::-webkit-scrollbar-thumb{background:#15acbf}.capibara.c-cyan:not(.dark-theme) .header-top{background:#b9e2e8}.capibara.c-cyan:not(.dark-theme) .corner{background:#b9e2e8;border-color:#3be9ff}.capibara.c-cyan:not(.dark-theme) .container-tl header{background:#b9e2e8;border-bottom-color:#3be9ff}.capibara.c-cyan:not(.dark-theme) .container-tl header .mes.mes-reduced:after{background:linear-gradient(90deg,transparent,#a1f4ff)!important}.capibara.c-cyan:not(.dark-theme) nav.right{border-color:#3be9ff}.capibara.c-cyan.dark-theme .header-top,.capibara.c-cyan.dark-theme nav.right{border-color:#00626e}.capibara.c-cyan.dark-theme .container-tl header,.capibara.c-cyan.dark-theme .corner{border-bottom-color:#00626e}.capibara.c-cyan.dark-theme .progress-bar,.capibara.c-cyan .progress-bar{background-color:rgba(0,188,212,.2)!important}.capibara.c-cyan.dark-theme .progress-bar:after,.capibara.c-cyan.dark-theme .progress-bar:before,.capibara.c-cyan .progress-bar:after,.capibara.c-cyan .progress-bar:before{background-color:#00bcd4!important}.capibara.c-cyan.dark-theme select.tabs-select,.capibara.c-cyan select.tabs-select{background-color:rgba(0,188,212,.7)!important;border-color:#00bcd4!important}.capibara.c-cyan.dark-theme .time,.capibara.c-cyan .time{border-color:rgba(0,188,212,.6)}.capibara.c-cyan.dark-theme .time .symbol,.capibara.c-cyan .time .symbol{color:#00bcd4}.capibara.c-cyan.dark-theme .time input:active,.capibara.c-cyan.dark-theme .time input:focus,.capibara.c-cyan .time input:active,.capibara.c-cyan .time input:focus{border-color:#00bcd4;box-shadow:0 4px 6px rgba(0,188,212,.2)}.capibara.c-cyan.dark-theme .input-box,.capibara.c-cyan.dark-theme .input-section input.nav-input,.capibara.c-cyan .input-box,.capibara.c-cyan .input-section input.nav-input{border-color:rgba(0,188,212,.6)}.capibara.c-cyan.dark-theme .input-section input.nav-input:active,.capibara.c-cyan.dark-theme .input-section input.nav-input:focus,.capibara.c-cyan .input-section input.nav-input:active,.capibara.c-cyan .input-section input.nav-input:focus{border-color:#00bcd4;box-shadow:0 4px 6px rgba(0,188,212,.2)}.capibara.c-cyan.dark-theme .input-section.msj-input-container textarea.msj,.capibara.c-cyan .input-section.msj-input-container textarea.msj{border:2px solid #00bcd4}.capibara.c-cyan.dark-theme .input-section.msj-input-container textarea.msj:active,.capibara.c-cyan.dark-theme .input-section.msj-input-container textarea.msj:focus,.capibara.c-cyan .input-section.msj-input-container textarea.msj:active,.capibara.c-cyan .input-section.msj-input-container textarea.msj:focus{box-shadow:0 4px 6px rgba(0,188,212,.2)}.capibara.c-cyan .btn-raised,.capibara.c-cyan.dark-theme .btn-raised{border-color:#00bcd4;background:rgba(0,188,212,.8)}.capibara.c-cyan .btn-outline,.capibara.c-cyan.dark-theme .btn-outline{border-color:#00bcd4;color:#00bcd4}.capibara.c-cyan.dark-theme .select-container .selected-day,.capibara.c-cyan .select-container .selected-day{background:rgba(0,188,212,.3);box-shadow:inset 0 0 10px rgba(0,188,212,.5)}.capibara .c-cyan--background{background:#00bcd4!important}.capibara .c-cyan-d--background{background:#007888!important}.capibara .c-cyan-l--background{background:#22e6ff!important}.capibara .c-cyan--text{color:#00bcd4!important}.capibara .c-cyan-d--text{color:#007888!important}.capibara .c-cyan-l--text{color:#22e6ff!important}.capibara .detail-day .list-detail .item-detail.c-cyan{background:rgba(0,188,212,.2);border:1px solid #00bcd4}.capibara .detail-day .list-detail .item-detail.c-cyan .left-icon{background:#00bcd4}.capibara .detail-day .list-detail .item-detail.c-cyan .left-icon.outlined{border:1px solid #00bcd4;box-shadow:inset 0 0 0 1px rgba(0,188,212,.7)}.capibara .detail-day .list-detail .item-detail.c-cyan .name{color:#00bcd4}.capibara .float-box-container .float-box span.data.c-cyan{background:rgba(0,188,212,.8)}.capibara .float-box-container .float-box span.data.shape-outlined.c-cyan{border-color:rgba(0,188,212,.9);background:rgba(0,188,212,.1);color:#00bcd4}.capibara .float-box-container .float-box span.data.shape-bar.c-cyan{background:#00bcd4}.capibara .float-box-container .float-box span.data.shape-bar-outlined.c-cyan{border-color:rgba(0,188,212,.9);background:rgba(0,188,212,.1)}.capibara .float-box-container .float-box .dot.c-cyan{background:#00bcd4}.capibara .float-box-container .float-box .dot.c-cyan.outlined{border:1px solid #00bcd4;box-shadow:inset 0 0 0 1px rgba(0,188,212,.7)}.capibara .header-top .tabs-container .tab:not(.disabled).c-cyan.active{background:rgba(0,188,212,.7);border-color:rgba(0,188,212,.7);color:#fff}.capibara .header-top .tabs-container .tab:not(.disabled).c-cyan.active:hover{background:rgba(0,188,212,.8)}.capibara .header-top .tabs-container .tab:not(.disabled).c-cyan:hover{background:rgba(0,188,212,.2);border-color:rgba(0,188,212,.9)}.capibara .input-box .mini-input-section--icon.c-cyan{background:#00bcd4}.capibara.c-teal:not(.dark-theme) ::-webkit-scrollbar-thumb{background:#0f877c}.capibara.c-teal:not(.dark-theme) .header-top{background:#8ad8d1}.capibara.c-teal:not(.dark-theme) .corner{background:#8ad8d1;border-color:#00fce4}.capibara.c-teal:not(.dark-theme) .container-tl header{background:#8ad8d1;border-bottom-color:#00fce4}.capibara.c-teal:not(.dark-theme) .container-tl header .mes.mes-reduced:after{background:linear-gradient(90deg,transparent,#63fff0)!important}.capibara.c-teal:not(.dark-theme) nav.right{border-color:#00fce4}.capibara.c-teal.dark-theme .header-top,.capibara.c-teal.dark-theme nav.right{border-color:#00302c}.capibara.c-teal.dark-theme .container-tl header,.capibara.c-teal.dark-theme .corner{border-bottom-color:#00302c}.capibara.c-teal.dark-theme .progress-bar,.capibara.c-teal .progress-bar{background-color:rgba(0,150,136,.2)!important}.capibara.c-teal.dark-theme .progress-bar:after,.capibara.c-teal.dark-theme .progress-bar:before,.capibara.c-teal .progress-bar:after,.capibara.c-teal .progress-bar:before{background-color:#009688!important}.capibara.c-teal.dark-theme select.tabs-select,.capibara.c-teal select.tabs-select{background-color:rgba(0,150,136,.7)!important;border-color:#009688!important}.capibara.c-teal.dark-theme .time,.capibara.c-teal .time{border-color:rgba(0,150,136,.6)}.capibara.c-teal.dark-theme .time .symbol,.capibara.c-teal .time .symbol{color:#009688}.capibara.c-teal.dark-theme .time input:active,.capibara.c-teal.dark-theme .time input:focus,.capibara.c-teal .time input:active,.capibara.c-teal .time input:focus{border-color:#009688;box-shadow:0 4px 6px rgba(0,150,136,.2)}.capibara.c-teal.dark-theme .input-box,.capibara.c-teal.dark-theme .input-section input.nav-input,.capibara.c-teal .input-box,.capibara.c-teal .input-section input.nav-input{border-color:rgba(0,150,136,.6)}.capibara.c-teal.dark-theme .input-section input.nav-input:active,.capibara.c-teal.dark-theme .input-section input.nav-input:focus,.capibara.c-teal .input-section input.nav-input:active,.capibara.c-teal .input-section input.nav-input:focus{border-color:#009688;box-shadow:0 4px 6px rgba(0,150,136,.2)}.capibara.c-teal.dark-theme .input-section.msj-input-container textarea.msj,.capibara.c-teal .input-section.msj-input-container textarea.msj{border:2px solid #009688}.capibara.c-teal.dark-theme .input-section.msj-input-container textarea.msj:active,.capibara.c-teal.dark-theme .input-section.msj-input-container textarea.msj:focus,.capibara.c-teal .input-section.msj-input-container textarea.msj:active,.capibara.c-teal .input-section.msj-input-container textarea.msj:focus{box-shadow:0 4px 6px rgba(0,150,136,.2)}.capibara.c-teal .btn-raised,.capibara.c-teal.dark-theme .btn-raised{border-color:#009688;background:rgba(0,150,136,.8)}.capibara.c-teal .btn-outline,.capibara.c-teal.dark-theme .btn-outline{border-color:#009688;color:#009688}.capibara.c-teal.dark-theme .select-container .selected-day,.capibara.c-teal .select-container .selected-day{background:rgba(0,150,136,.3);box-shadow:inset 0 0 10px rgba(0,150,136,.5)}.capibara .c-teal--background{background:#009688!important}.capibara .c-teal-d--background{background:#004a43!important}.capibara .c-teal-l--background{background:#00e3cd!important}.capibara .c-teal--text{color:#009688!important}.capibara .c-teal-d--text{color:#004a43!important}.capibara .c-teal-l--text{color:#00e3cd!important}.capibara .detail-day .list-detail .item-detail.c-teal{background:rgba(0,150,136,.2);border:1px solid #009688}.capibara .detail-day .list-detail .item-detail.c-teal .left-icon{background:#009688}.capibara .detail-day .list-detail .item-detail.c-teal .left-icon.outlined{border:1px solid #009688;box-shadow:inset 0 0 0 1px rgba(0,150,136,.7)}.capibara .detail-day .list-detail .item-detail.c-teal .name{color:#009688}.capibara .float-box-container .float-box span.data.c-teal{background:rgba(0,150,136,.8)}.capibara .float-box-container .float-box span.data.shape-outlined.c-teal{border-color:rgba(0,150,136,.9);background:rgba(0,150,136,.1);color:#009688}.capibara .float-box-container .float-box span.data.shape-bar.c-teal{background:#009688}.capibara .float-box-container .float-box span.data.shape-bar-outlined.c-teal{border-color:rgba(0,150,136,.9);background:rgba(0,150,136,.1)}.capibara .float-box-container .float-box .dot.c-teal{background:#009688}.capibara .float-box-container .float-box .dot.c-teal.outlined{border:1px solid #009688;box-shadow:inset 0 0 0 1px rgba(0,150,136,.7)}.capibara .header-top .tabs-container .tab:not(.disabled).c-teal.active{background:rgba(0,150,136,.7);border-color:rgba(0,150,136,.7);color:#fff}.capibara .header-top .tabs-container .tab:not(.disabled).c-teal.active:hover{background:rgba(0,150,136,.8)}.capibara .header-top .tabs-container .tab:not(.disabled).c-teal:hover{background:rgba(0,150,136,.2);border-color:rgba(0,150,136,.9)}.capibara .input-box .mini-input-section--icon.c-teal{background:#009688}.capibara.c-green:not(.dark-theme) ::-webkit-scrollbar-thumb{background:#659667}.capibara.c-green:not(.dark-theme) .header-top{background:#e4e4e4}.capibara.c-green:not(.dark-theme) .corner{background:#e4e4e4;border-color:#92cf94}.capibara.c-green:not(.dark-theme) .container-tl header{background:#e4e4e4;border-bottom-color:#92cf94}.capibara.c-green:not(.dark-theme) .container-tl header .mes.mes-reduced:after{background:linear-gradient(90deg,transparent,#d9eeda)!important}.capibara.c-green:not(.dark-theme) nav.right{border-color:#92cf94}.capibara.c-green.dark-theme .header-top,.capibara.c-green.dark-theme nav.right{border-color:#2d682f}.capibara.c-green.dark-theme .container-tl header,.capibara.c-green.dark-theme .corner{border-bottom-color:#2d682f}.capibara.c-green.dark-theme .progress-bar,.capibara.c-green .progress-bar{background-color:rgba(76,175,80,.2)!important}.capibara.c-green.dark-theme .progress-bar:after,.capibara.c-green.dark-theme .progress-bar:before,.capibara.c-green .progress-bar:after,.capibara.c-green .progress-bar:before{background-color:#4caf50!important}.capibara.c-green.dark-theme select.tabs-select,.capibara.c-green select.tabs-select{background-color:rgba(76,175,80,.7)!important;border-color:#4caf50!important}.capibara.c-green.dark-theme .time,.capibara.c-green .time{border-color:rgba(76,175,80,.6)}.capibara.c-green.dark-theme .time .symbol,.capibara.c-green .time .symbol{color:#4caf50}.capibara.c-green.dark-theme .time input:active,.capibara.c-green.dark-theme .time input:focus,.capibara.c-green .time input:active,.capibara.c-green .time input:focus{border-color:#4caf50;box-shadow:0 4px 6px rgba(76,175,80,.2)}.capibara.c-green.dark-theme .input-box,.capibara.c-green.dark-theme .input-section input.nav-input,.capibara.c-green .input-box,.capibara.c-green .input-section input.nav-input{border-color:rgba(76,175,80,.6)}.capibara.c-green.dark-theme .input-section input.nav-input:active,.capibara.c-green.dark-theme .input-section input.nav-input:focus,.capibara.c-green .input-section input.nav-input:active,.capibara.c-green .input-section input.nav-input:focus{border-color:#4caf50;box-shadow:0 4px 6px rgba(76,175,80,.2)}.capibara.c-green.dark-theme .input-section.msj-input-container textarea.msj,.capibara.c-green .input-section.msj-input-container textarea.msj{border:2px solid #4caf50}.capibara.c-green.dark-theme .input-section.msj-input-container textarea.msj:active,.capibara.c-green.dark-theme .input-section.msj-input-container textarea.msj:focus,.capibara.c-green .input-section.msj-input-container textarea.msj:active,.capibara.c-green .input-section.msj-input-container textarea.msj:focus{box-shadow:0 4px 6px rgba(76,175,80,.2)}.capibara.c-green .btn-raised,.capibara.c-green.dark-theme .btn-raised{border-color:#4caf50;background:rgba(76,175,80,.8)}.capibara.c-green .btn-outline,.capibara.c-green.dark-theme .btn-outline{border-color:#4caf50;color:#4caf50}.capibara.c-green.dark-theme .select-container .selected-day,.capibara.c-green .select-container .selected-day{background:rgba(76,175,80,.3);box-shadow:inset 0 0 10px rgba(76,175,80,.5)}.capibara .c-green--background{background:#4caf50!important}.capibara .c-green-d--background{background:#357a38!important}.capibara .c-green-l--background{background:#80c883!important}.capibara .c-green--text{color:#4caf50!important}.capibara .c-green-d--text{color:#357a38!important}.capibara .c-green-l--text{color:#80c883!important}.capibara .detail-day .list-detail .item-detail.c-green{background:rgba(76,175,80,.2);border:1px solid #4caf50}.capibara .detail-day .list-detail .item-detail.c-green .left-icon{background:#4caf50}.capibara .detail-day .list-detail .item-detail.c-green .left-icon.outlined{border:1px solid #4caf50;box-shadow:inset 0 0 0 1px rgba(76,175,80,.7)}.capibara .detail-day .list-detail .item-detail.c-green .name{color:#4caf50}.capibara .float-box-container .float-box span.data.c-green{background:rgba(76,175,80,.8)}.capibara .float-box-container .float-box span.data.shape-outlined.c-green{border-color:rgba(76,175,80,.9);background:rgba(76,175,80,.1);color:#4caf50}.capibara .float-box-container .float-box span.data.shape-bar.c-green{background:#4caf50}.capibara .float-box-container .float-box span.data.shape-bar-outlined.c-green{border-color:rgba(76,175,80,.9);background:rgba(76,175,80,.1)}.capibara .float-box-container .float-box .dot.c-green{background:#4caf50}.capibara .float-box-container .float-box .dot.c-green.outlined{border:1px solid #4caf50;box-shadow:inset 0 0 0 1px rgba(76,175,80,.7)}.capibara .header-top .tabs-container .tab:not(.disabled).c-green.active{background:rgba(76,175,80,.7);border-color:rgba(76,175,80,.7);color:#fff}.capibara .header-top .tabs-container .tab:not(.disabled).c-green.active:hover{background:rgba(76,175,80,.8)}.capibara .header-top .tabs-container .tab:not(.disabled).c-green:hover{background:rgba(76,175,80,.2);border-color:rgba(76,175,80,.9)}.capibara .input-box .mini-input-section--icon.c-green{background:#4caf50}.capibara.c-light-green:not(.dark-theme) ::-webkit-scrollbar-thumb{background:#89ab62}.capibara.c-light-green:not(.dark-theme) .header-top{background:#ededec}.capibara.c-light-green:not(.dark-theme) .corner{background:#ededec;border-color:#bcdc97}.capibara.c-light-green:not(.dark-theme) .container-tl header{background:#ededec;border-bottom-color:#bcdc97}.capibara.c-light-green:not(.dark-theme) .container-tl header .mes.mes-reduced:after{background:linear-gradient(90deg,transparent,#edf6e3)!important}.capibara.c-light-green:not(.dark-theme) nav.right{border-color:#bcdc97}.capibara.c-light-green.dark-theme .header-top,.capibara.c-light-green.dark-theme nav.right{border-color:#577d2a}.capibara.c-light-green.dark-theme .container-tl header,.capibara.c-light-green.dark-theme .corner{border-bottom-color:#577d2a}.capibara.c-light-green.dark-theme .progress-bar,.capibara.c-light-green .progress-bar{background-color:rgba(139,195,74,.2)!important}.capibara.c-light-green.dark-theme .progress-bar:after,.capibara.c-light-green.dark-theme .progress-bar:before,.capibara.c-light-green .progress-bar:after,.capibara.c-light-green .progress-bar:before{background-color:#8bc34a!important}.capibara.c-light-green.dark-theme select.tabs-select,.capibara.c-light-green select.tabs-select{background-color:rgba(139,195,74,.7)!important;border-color:#8bc34a!important}.capibara.c-light-green.dark-theme .time,.capibara.c-light-green .time{border-color:rgba(139,195,74,.6)}.capibara.c-light-green.dark-theme .time .symbol,.capibara.c-light-green .time .symbol{color:#8bc34a}.capibara.c-light-green.dark-theme .time input:active,.capibara.c-light-green.dark-theme .time input:focus,.capibara.c-light-green .time input:active,.capibara.c-light-green .time input:focus{border-color:#8bc34a;box-shadow:0 4px 6px rgba(139,195,74,.2)}.capibara.c-light-green.dark-theme .input-box,.capibara.c-light-green.dark-theme .input-section input.nav-input,.capibara.c-light-green .input-box,.capibara.c-light-green .input-section input.nav-input{border-color:rgba(139,195,74,.6)}.capibara.c-light-green.dark-theme .input-section input.nav-input:active,.capibara.c-light-green.dark-theme .input-section input.nav-input:focus,.capibara.c-light-green .input-section input.nav-input:active,.capibara.c-light-green .input-section input.nav-input:focus{border-color:#8bc34a;box-shadow:0 4px 6px rgba(139,195,74,.2)}.capibara.c-light-green.dark-theme .input-section.msj-input-container textarea.msj,.capibara.c-light-green .input-section.msj-input-container textarea.msj{border:2px solid #8bc34a}.capibara.c-light-green.dark-theme .input-section.msj-input-container textarea.msj:active,.capibara.c-light-green.dark-theme .input-section.msj-input-container textarea.msj:focus,.capibara.c-light-green .input-section.msj-input-container textarea.msj:active,.capibara.c-light-green .input-section.msj-input-container textarea.msj:focus{box-shadow:0 4px 6px rgba(139,195,74,.2)}.capibara.c-light-green .btn-raised,.capibara.c-light-green.dark-theme .btn-raised{border-color:#8bc34a;background:rgba(139,195,74,.8)}.capibara.c-light-green .btn-outline,.capibara.c-light-green.dark-theme .btn-outline{border-color:#8bc34a;color:#8bc34a}.capibara.c-light-green.dark-theme .select-container .selected-day,.capibara.c-light-green .select-container .selected-day{background:rgba(139,195,74,.3);box-shadow:inset 0 0 10px rgba(139,195,74,.5)}.capibara .c-light-green--background{background:#8bc34a!important}.capibara .c-light-green-d--background{background:#649130!important}.capibara .c-light-green-l--background{background:#b0d683!important}.capibara .c-light-green--text{color:#8bc34a!important}.capibara .c-light-green-d--text{color:#649130!important}.capibara .c-light-green-l--text{color:#b0d683!important}.capibara .detail-day .list-detail .item-detail.c-light-green{background:rgba(139,195,74,.2);border:1px solid #8bc34a}.capibara .detail-day .list-detail .item-detail.c-light-green .left-icon{background:#8bc34a}.capibara .detail-day .list-detail .item-detail.c-light-green .left-icon.outlined{border:1px solid #8bc34a;box-shadow:inset 0 0 0 1px rgba(139,195,74,.7)}.capibara .detail-day .list-detail .item-detail.c-light-green .name{color:#8bc34a}.capibara .float-box-container .float-box span.data.c-light-green{background:rgba(139,195,74,.8)}.capibara .float-box-container .float-box span.data.shape-outlined.c-light-green{border-color:rgba(139,195,74,.9);background:rgba(139,195,74,.1);color:#8bc34a}.capibara .float-box-container .float-box span.data.shape-bar.c-light-green{background:#8bc34a}.capibara .float-box-container .float-box span.data.shape-bar-outlined.c-light-green{border-color:rgba(139,195,74,.9);background:rgba(139,195,74,.1)}.capibara .float-box-container .float-box .dot.c-light-green{background:#8bc34a}.capibara .float-box-container .float-box .dot.c-light-green.outlined{border:1px solid #8bc34a;box-shadow:inset 0 0 0 1px rgba(139,195,74,.7)}.capibara .header-top .tabs-container .tab:not(.disabled).c-light-green.active{background:rgba(139,195,74,.7);border-color:rgba(139,195,74,.7);color:#fff}.capibara .header-top .tabs-container .tab:not(.disabled).c-light-green.active:hover{background:rgba(139,195,74,.8)}.capibara .header-top .tabs-container .tab:not(.disabled).c-light-green:hover{background:rgba(139,195,74,.2);border-color:rgba(139,195,74,.9)}.capibara .input-box .mini-input-section--icon.c-light-green{background:#8bc34a}.capibara.c-lime:not(.dark-theme) ::-webkit-scrollbar-thumb{background:#bac550}.capibara.c-lime:not(.dark-theme) .header-top{background:#f3f3ee}.capibara.c-lime:not(.dark-theme) .corner{background:#f3f3ee;border-color:#e3eb90}.capibara.c-lime:not(.dark-theme) .container-tl header{background:#f3f3ee;border-bottom-color:#e3eb90}.capibara.c-lime:not(.dark-theme) .container-tl header .mes.mes-reduced:after{background:linear-gradient(90deg,transparent,#f9fbe6)!important}.capibara.c-lime:not(.dark-theme) nav.right{border-color:#e3eb90}.capibara.c-lime.dark-theme .header-top,.capibara.c-lime.dark-theme nav.right{border-color:#89951a}.capibara.c-lime.dark-theme .container-tl header,.capibara.c-lime.dark-theme .corner{border-bottom-color:#89951a}.capibara.c-lime.dark-theme .progress-bar,.capibara.c-lime .progress-bar{background-color:rgba(205,220,57,.2)!important}.capibara.c-lime.dark-theme .progress-bar:after,.capibara.c-lime.dark-theme .progress-bar:before,.capibara.c-lime .progress-bar:after,.capibara.c-lime .progress-bar:before{background-color:#cddc39!important}.capibara.c-lime.dark-theme select.tabs-select,.capibara.c-lime select.tabs-select{background-color:rgba(205,220,57,.7)!important;border-color:#cddc39!important}.capibara.c-lime.dark-theme .time,.capibara.c-lime .time{border-color:rgba(205,220,57,.6)}.capibara.c-lime.dark-theme .time .symbol,.capibara.c-lime .time .symbol{color:#cddc39}.capibara.c-lime.dark-theme .time input:active,.capibara.c-lime.dark-theme .time input:focus,.capibara.c-lime .time input:active,.capibara.c-lime .time input:focus{border-color:#cddc39;box-shadow:0 4px 6px rgba(205,220,57,.2)}.capibara.c-lime.dark-theme .input-box,.capibara.c-lime.dark-theme .input-section input.nav-input,.capibara.c-lime .input-box,.capibara.c-lime .input-section input.nav-input{border-color:rgba(205,220,57,.6)}.capibara.c-lime.dark-theme .input-section input.nav-input:active,.capibara.c-lime.dark-theme .input-section input.nav-input:focus,.capibara.c-lime .input-section input.nav-input:active,.capibara.c-lime .input-section input.nav-input:focus{border-color:#cddc39;box-shadow:0 4px 6px rgba(205,220,57,.2)}.capibara.c-lime.dark-theme .input-section.msj-input-container textarea.msj,.capibara.c-lime .input-section.msj-input-container textarea.msj{border:2px solid #cddc39}.capibara.c-lime.dark-theme .input-section.msj-input-container textarea.msj:active,.capibara.c-lime.dark-theme .input-section.msj-input-container textarea.msj:focus,.capibara.c-lime .input-section.msj-input-container textarea.msj:active,.capibara.c-lime .input-section.msj-input-container textarea.msj:focus{box-shadow:0 4px 6px rgba(205,220,57,.2)}.capibara.c-lime .btn-raised,.capibara.c-lime.dark-theme .btn-raised{border-color:#cddc39;background:rgba(205,220,57,.8)}.capibara.c-lime .btn-outline,.capibara.c-lime.dark-theme .btn-outline{border-color:#cddc39;color:#cddc39}.capibara.c-lime.dark-theme .select-container .selected-day,.capibara.c-lime .select-container .selected-day{background:rgba(205,220,57,.3);box-shadow:inset 0 0 10px rgba(205,220,57,.5)}.capibara .c-lime--background{background:#cddc39!important}.capibara .c-lime-d--background{background:#9daa1e!important}.capibara .c-lime-l--background{background:#dde77a!important}.capibara .c-lime--text{color:#cddc39!important}.capibara .c-lime-d--text{color:#9daa1e!important}.capibara .c-lime-l--text{color:#dde77a!important}.capibara .detail-day .list-detail .item-detail.c-lime{background:rgba(205,220,57,.2);border:1px solid #cddc39}.capibara .detail-day .list-detail .item-detail.c-lime .left-icon{background:#cddc39}.capibara .detail-day .list-detail .item-detail.c-lime .left-icon.outlined{border:1px solid #cddc39;box-shadow:inset 0 0 0 1px rgba(205,220,57,.7)}.capibara .detail-day .list-detail .item-detail.c-lime .name{color:#cddc39}.capibara .float-box-container .float-box span.data.c-lime{background:rgba(205,220,57,.8)}.capibara .float-box-container .float-box span.data.shape-outlined.c-lime{border-color:rgba(205,220,57,.9);background:rgba(205,220,57,.1);color:#cddc39}.capibara .float-box-container .float-box span.data.shape-bar.c-lime{background:#cddc39}.capibara .float-box-container .float-box span.data.shape-bar-outlined.c-lime{border-color:rgba(205,220,57,.9);background:rgba(205,220,57,.1)}.capibara .float-box-container .float-box .dot.c-lime{background:#cddc39}.capibara .float-box-container .float-box .dot.c-lime.outlined{border:1px solid #cddc39;box-shadow:inset 0 0 0 1px rgba(205,220,57,.7)}.capibara .header-top .tabs-container .tab:not(.disabled).c-lime.active{background:rgba(205,220,57,.7);border-color:rgba(205,220,57,.7);color:#fff}.capibara .header-top .tabs-container .tab:not(.disabled).c-lime.active:hover{background:rgba(205,220,57,.8)}.capibara .header-top .tabs-container .tab:not(.disabled).c-lime:hover{background:rgba(205,220,57,.2);border-color:rgba(205,220,57,.9)}.capibara .input-box .mini-input-section--icon.c-lime{background:#cddc39}.capibara.c-yellow:not(.dark-theme) ::-webkit-scrollbar-thumb{background:#ebdb4f}.capibara.c-yellow:not(.dark-theme) .header-top{background:#fff}.capibara.c-yellow:not(.dark-theme) .corner{background:#fff;border-color:#fff5a1}.capibara.c-yellow:not(.dark-theme) .container-tl header{background:#fff;border-bottom-color:#fff5a1}.capibara.c-yellow:not(.dark-theme) .container-tl header .mes.mes-reduced:after{background:linear-gradient(90deg,transparent,#fff)!important}.capibara.c-yellow:not(.dark-theme) nav.right{border-color:#fff5a1}.capibara.c-yellow.dark-theme .header-top,.capibara.c-yellow.dark-theme nav.right{border-color:#d4be00}.capibara.c-yellow.dark-theme .container-tl header,.capibara.c-yellow.dark-theme .corner{border-bottom-color:#d4be00}.capibara.c-yellow.dark-theme .progress-bar,.capibara.c-yellow .progress-bar{background-color:rgba(255,235,59,.2)!important}.capibara.c-yellow.dark-theme .progress-bar:after,.capibara.c-yellow.dark-theme .progress-bar:before,.capibara.c-yellow .progress-bar:after,.capibara.c-yellow .progress-bar:before{background-color:#ffeb3b!important}.capibara.c-yellow.dark-theme select.tabs-select,.capibara.c-yellow select.tabs-select{background-color:rgba(255,235,59,.7)!important;border-color:#ffeb3b!important}.capibara.c-yellow.dark-theme .time,.capibara.c-yellow .time{border-color:rgba(255,235,59,.6)}.capibara.c-yellow.dark-theme .time .symbol,.capibara.c-yellow .time .symbol{color:#ffeb3b}.capibara.c-yellow.dark-theme .time input:active,.capibara.c-yellow.dark-theme .time input:focus,.capibara.c-yellow .time input:active,.capibara.c-yellow .time input:focus{border-color:#ffeb3b;box-shadow:0 4px 6px rgba(255,235,59,.2)}.capibara.c-yellow.dark-theme .input-box,.capibara.c-yellow.dark-theme .input-section input.nav-input,.capibara.c-yellow .input-box,.capibara.c-yellow .input-section input.nav-input{border-color:rgba(255,235,59,.6)}.capibara.c-yellow.dark-theme .input-section input.nav-input:active,.capibara.c-yellow.dark-theme .input-section input.nav-input:focus,.capibara.c-yellow .input-section input.nav-input:active,.capibara.c-yellow .input-section input.nav-input:focus{border-color:#ffeb3b;box-shadow:0 4px 6px rgba(255,235,59,.2)}.capibara.c-yellow.dark-theme .input-section.msj-input-container textarea.msj,.capibara.c-yellow .input-section.msj-input-container textarea.msj{border:2px solid #ffeb3b}.capibara.c-yellow.dark-theme .input-section.msj-input-container textarea.msj:active,.capibara.c-yellow.dark-theme .input-section.msj-input-container textarea.msj:focus,.capibara.c-yellow .input-section.msj-input-container textarea.msj:active,.capibara.c-yellow .input-section.msj-input-container textarea.msj:focus{box-shadow:0 4px 6px rgba(255,235,59,.2)}.capibara.c-yellow .btn-raised,.capibara.c-yellow.dark-theme .btn-raised{border-color:#ffeb3b;background:rgba(255,235,59,.8)}.capibara.c-yellow .btn-outline,.capibara.c-yellow.dark-theme .btn-outline{border-color:#ffeb3b;color:#ffeb3b}.capibara.c-yellow.dark-theme .select-container .selected-day,.capibara.c-yellow .select-container .selected-day{background:rgba(255,235,59,.3);box-shadow:inset 0 0 10px rgba(255,235,59,.5)}.capibara .c-yellow--background{background:#ffeb3b!important}.capibara .c-yellow-d--background{background:#eed500!important}.capibara .c-yellow-l--background{background:#fff388!important}.capibara .c-yellow--text{color:#ffeb3b!important}.capibara .c-yellow-d--text{color:#eed500!important}.capibara .c-yellow-l--text{color:#fff388!important}.capibara .detail-day .list-detail .item-detail.c-yellow{background:rgba(255,235,59,.2);border:1px solid #ffeb3b}.capibara .detail-day .list-detail .item-detail.c-yellow .left-icon{background:#ffeb3b}.capibara .detail-day .list-detail .item-detail.c-yellow .left-icon.outlined{border:1px solid #ffeb3b;box-shadow:inset 0 0 0 1px rgba(255,235,59,.7)}.capibara .detail-day .list-detail .item-detail.c-yellow .name{color:#ffeb3b}.capibara .float-box-container .float-box span.data.c-yellow{background:rgba(255,235,59,.8)}.capibara .float-box-container .float-box span.data.shape-outlined.c-yellow{border-color:rgba(255,235,59,.9);background:rgba(255,235,59,.1);color:#ffeb3b}.capibara .float-box-container .float-box span.data.shape-bar.c-yellow{background:#ffeb3b}.capibara .float-box-container .float-box span.data.shape-bar-outlined.c-yellow{border-color:rgba(255,235,59,.9);background:rgba(255,235,59,.1)}.capibara .float-box-container .float-box .dot.c-yellow{background:#ffeb3b}.capibara .float-box-container .float-box .dot.c-yellow.outlined{border:1px solid #ffeb3b;box-shadow:inset 0 0 0 1px rgba(255,235,59,.7)}.capibara .header-top .tabs-container .tab:not(.disabled).c-yellow.active{background:rgba(255,235,59,.7);border-color:rgba(255,235,59,.7);color:#fff}.capibara .header-top .tabs-container .tab:not(.disabled).c-yellow.active:hover{background:rgba(255,235,59,.8)}.capibara .header-top .tabs-container .tab:not(.disabled).c-yellow:hover{background:rgba(255,235,59,.2);border-color:rgba(255,235,59,.9)}.capibara .input-box .mini-input-section--icon.c-yellow{background:#ffeb3b}.capibara.c-amber:not(.dark-theme) ::-webkit-scrollbar-thumb{background:#e6b520}.capibara.c-amber:not(.dark-theme) .header-top{background:#f4efde}.capibara.c-amber:not(.dark-theme) .corner{background:#f4efde;border-color:#ffdb6d}.capibara.c-amber:not(.dark-theme) .container-tl header{background:#f4efde;border-bottom-color:#ffdb6d}.capibara.c-amber:not(.dark-theme) .container-tl header .mes.mes-reduced:after{background:linear-gradient(90deg,transparent,#fff4d3)!important}.capibara.c-amber:not(.dark-theme) nav.right{border-color:#ffdb6d}.capibara.c-amber.dark-theme .header-top,.capibara.c-amber.dark-theme nav.right{border-color:#a07800}.capibara.c-amber.dark-theme .container-tl header,.capibara.c-amber.dark-theme .corner{border-bottom-color:#a07800}.capibara.c-amber.dark-theme .progress-bar,.capibara.c-amber .progress-bar{background-color:rgba(255,193,7,.2)!important}.capibara.c-amber.dark-theme .progress-bar:after,.capibara.c-amber.dark-theme .progress-bar:before,.capibara.c-amber .progress-bar:after,.capibara.c-amber .progress-bar:before{background-color:#ffc107!important}.capibara.c-amber.dark-theme select.tabs-select,.capibara.c-amber select.tabs-select{background-color:rgba(255,193,7,.7)!important;border-color:#ffc107!important}.capibara.c-amber.dark-theme .time,.capibara.c-amber .time{border-color:rgba(255,193,7,.6)}.capibara.c-amber.dark-theme .time .symbol,.capibara.c-amber .time .symbol{color:#ffc107}.capibara.c-amber.dark-theme .time input:active,.capibara.c-amber.dark-theme .time input:focus,.capibara.c-amber .time input:active,.capibara.c-amber .time input:focus{border-color:#ffc107;box-shadow:0 4px 6px rgba(255,193,7,.2)}.capibara.c-amber.dark-theme .input-box,.capibara.c-amber.dark-theme .input-section input.nav-input,.capibara.c-amber .input-box,.capibara.c-amber .input-section input.nav-input{border-color:rgba(255,193,7,.6)}.capibara.c-amber.dark-theme .input-section input.nav-input:active,.capibara.c-amber.dark-theme .input-section input.nav-input:focus,.capibara.c-amber .input-section input.nav-input:active,.capibara.c-amber .input-section input.nav-input:focus{border-color:#ffc107;box-shadow:0 4px 6px rgba(255,193,7,.2)}.capibara.c-amber.dark-theme .input-section.msj-input-container textarea.msj,.capibara.c-amber .input-section.msj-input-container textarea.msj{border:2px solid #ffc107}.capibara.c-amber.dark-theme .input-section.msj-input-container textarea.msj:active,.capibara.c-amber.dark-theme .input-section.msj-input-container textarea.msj:focus,.capibara.c-amber .input-section.msj-input-container textarea.msj:active,.capibara.c-amber .input-section.msj-input-container textarea.msj:focus{box-shadow:0 4px 6px rgba(255,193,7,.2)}.capibara.c-amber .btn-raised,.capibara.c-amber.dark-theme .btn-raised{border-color:#ffc107;background:rgba(255,193,7,.8)}.capibara.c-amber .btn-outline,.capibara.c-amber.dark-theme .btn-outline{border-color:#ffc107;color:#ffc107}.capibara.c-amber.dark-theme .select-container .selected-day,.capibara.c-amber .select-container .selected-day{background:rgba(255,193,7,.3);box-shadow:inset 0 0 10px rgba(255,193,7,.5)}.capibara .c-amber--background{background:#ffc107!important}.capibara .c-amber-d--background{background:#ba8b00!important}.capibara .c-amber-l--background{background:#ffd454!important}.capibara .c-amber--text{color:#ffc107!important}.capibara .c-amber-d--text{color:#ba8b00!important}.capibara .c-amber-l--text{color:#ffd454!important}.capibara .detail-day .list-detail .item-detail.c-amber{background:rgba(255,193,7,.2);border:1px solid #ffc107}.capibara .detail-day .list-detail .item-detail.c-amber .left-icon{background:#ffc107}.capibara .detail-day .list-detail .item-detail.c-amber .left-icon.outlined{border:1px solid #ffc107;box-shadow:inset 0 0 0 1px rgba(255,193,7,.7)}.capibara .detail-day .list-detail .item-detail.c-amber .name{color:#ffc107}.capibara .float-box-container .float-box span.data.c-amber{background:rgba(255,193,7,.8)}.capibara .float-box-container .float-box span.data.shape-outlined.c-amber{border-color:rgba(255,193,7,.9);background:rgba(255,193,7,.1);color:#ffc107}.capibara .float-box-container .float-box span.data.shape-bar.c-amber{background:#ffc107}.capibara .float-box-container .float-box span.data.shape-bar-outlined.c-amber{border-color:rgba(255,193,7,.9);background:rgba(255,193,7,.1)}.capibara .float-box-container .float-box .dot.c-amber{background:#ffc107}.capibara .float-box-container .float-box .dot.c-amber.outlined{border:1px solid #ffc107;box-shadow:inset 0 0 0 1px rgba(255,193,7,.7)}.capibara .header-top .tabs-container .tab:not(.disabled).c-amber.active{background:rgba(255,193,7,.7);border-color:rgba(255,193,7,.7);color:#fff}.capibara .header-top .tabs-container .tab:not(.disabled).c-amber.active:hover{background:rgba(255,193,7,.8)}.capibara .header-top .tabs-container .tab:not(.disabled).c-amber:hover{background:rgba(255,193,7,.2);border-color:rgba(255,193,7,.9)}.capibara .input-box .mini-input-section--icon.c-amber{background:#ffc107}.capibara.c-orange:not(.dark-theme) ::-webkit-scrollbar-thumb{background:#e6931a}.capibara.c-orange:not(.dark-theme) .header-top{background:#f2e8d9}.capibara.c-orange:not(.dark-theme) .corner{background:#f2e8d9;border-color:#ffc166}.capibara.c-orange:not(.dark-theme) .container-tl header{background:#f2e8d9;border-bottom-color:#ffc166}.capibara.c-orange:not(.dark-theme) .container-tl header .mes.mes-reduced:after{background:linear-gradient(90deg,transparent,#ffeacc)!important}.capibara.c-orange:not(.dark-theme) nav.right{border-color:#ffc166}.capibara.c-orange.dark-theme .header-top,.capibara.c-orange.dark-theme nav.right{border-color:#995b00}.capibara.c-orange.dark-theme .container-tl header,.capibara.c-orange.dark-theme .corner{border-bottom-color:#995b00}.capibara.c-orange.dark-theme .progress-bar,.capibara.c-orange .progress-bar{background-color:rgba(255,152,0,.2)!important}.capibara.c-orange.dark-theme .progress-bar:after,.capibara.c-orange.dark-theme .progress-bar:before,.capibara.c-orange .progress-bar:after,.capibara.c-orange .progress-bar:before{background-color:#ff9800!important}.capibara.c-orange.dark-theme select.tabs-select,.capibara.c-orange select.tabs-select{background-color:rgba(255,152,0,.7)!important;border-color:#ff9800!important}.capibara.c-orange.dark-theme .time,.capibara.c-orange .time{border-color:rgba(255,152,0,.6)}.capibara.c-orange.dark-theme .time .symbol,.capibara.c-orange .time .symbol{color:#ff9800}.capibara.c-orange.dark-theme .time input:active,.capibara.c-orange.dark-theme .time input:focus,.capibara.c-orange .time input:active,.capibara.c-orange .time input:focus{border-color:#ff9800;box-shadow:0 4px 6px rgba(255,152,0,.2)}.capibara.c-orange.dark-theme .input-box,.capibara.c-orange.dark-theme .input-section input.nav-input,.capibara.c-orange .input-box,.capibara.c-orange .input-section input.nav-input{border-color:rgba(255,152,0,.6)}.capibara.c-orange.dark-theme .input-section input.nav-input:active,.capibara.c-orange.dark-theme .input-section input.nav-input:focus,.capibara.c-orange .input-section input.nav-input:active,.capibara.c-orange .input-section input.nav-input:focus{border-color:#ff9800;box-shadow:0 4px 6px rgba(255,152,0,.2)}.capibara.c-orange.dark-theme .input-section.msj-input-container textarea.msj,.capibara.c-orange .input-section.msj-input-container textarea.msj{border:2px solid #ff9800}.capibara.c-orange.dark-theme .input-section.msj-input-container textarea.msj:active,.capibara.c-orange.dark-theme .input-section.msj-input-container textarea.msj:focus,.capibara.c-orange .input-section.msj-input-container textarea.msj:active,.capibara.c-orange .input-section.msj-input-container textarea.msj:focus{box-shadow:0 4px 6px rgba(255,152,0,.2)}.capibara.c-orange .btn-raised,.capibara.c-orange.dark-theme .btn-raised{border-color:#ff9800;background:rgba(255,152,0,.8)}.capibara.c-orange .btn-outline,.capibara.c-orange.dark-theme .btn-outline{border-color:#ff9800;color:#ff9800}.capibara.c-orange.dark-theme .select-container .selected-day,.capibara.c-orange .select-container .selected-day{background:rgba(255,152,0,.3);box-shadow:inset 0 0 10px rgba(255,152,0,.5)}.capibara .c-orange--background{background:#ff9800!important}.capibara .c-orange-d--background{background:#b36a00!important}.capibara .c-orange-l--background{background:#ffb74d!important}.capibara .c-orange--text{color:#ff9800!important}.capibara .c-orange-d--text{color:#b36a00!important}.capibara .c-orange-l--text{color:#ffb74d!important}.capibara .detail-day .list-detail .item-detail.c-orange{background:rgba(255,152,0,.2);border:1px solid #ff9800}.capibara .detail-day .list-detail .item-detail.c-orange .left-icon{background:#ff9800}.capibara .detail-day .list-detail .item-detail.c-orange .left-icon.outlined{border:1px solid #ff9800;box-shadow:inset 0 0 0 1px rgba(255,152,0,.7)}.capibara .detail-day .list-detail .item-detail.c-orange .name{color:#ff9800}.capibara .float-box-container .float-box span.data.c-orange{background:rgba(255,152,0,.8)}.capibara .float-box-container .float-box span.data.shape-outlined.c-orange{border-color:rgba(255,152,0,.9);background:rgba(255,152,0,.1);color:#ff9800}.capibara .float-box-container .float-box span.data.shape-bar.c-orange{background:#ff9800}.capibara .float-box-container .float-box span.data.shape-bar-outlined.c-orange{border-color:rgba(255,152,0,.9);background:rgba(255,152,0,.1)}.capibara .float-box-container .float-box .dot.c-orange{background:#ff9800}.capibara .float-box-container .float-box .dot.c-orange.outlined{border:1px solid #ff9800;box-shadow:inset 0 0 0 1px rgba(255,152,0,.7)}.capibara .header-top .tabs-container .tab:not(.disabled).c-orange.active{background:rgba(255,152,0,.7);border-color:rgba(255,152,0,.7);color:#fff}.capibara .header-top .tabs-container .tab:not(.disabled).c-orange.active:hover{background:rgba(255,152,0,.8)}.capibara .header-top .tabs-container .tab:not(.disabled).c-orange:hover{background:rgba(255,152,0,.2);border-color:rgba(255,152,0,.9)}.capibara .input-box .mini-input-section--icon.c-orange{background:#ff9800}.capibara.c-deep-orange:not(.dark-theme) ::-webkit-scrollbar-thumb{background:#cd5733}.capibara.c-deep-orange:not(.dark-theme) .header-top{background:#ede1de}.capibara.c-deep-orange:not(.dark-theme) .corner{background:#ede1de;border-color:#f09275}.capibara.c-deep-orange:not(.dark-theme) .container-tl header{background:#ede1de;border-bottom-color:#f09275}.capibara.c-deep-orange:not(.dark-theme) .container-tl header .mes.mes-reduced:after{background:linear-gradient(90deg,transparent,#fadbd1)!important}.capibara.c-deep-orange:not(.dark-theme) nav.right{border-color:#f09275}.capibara.c-deep-orange.dark-theme .header-top,.capibara.c-deep-orange.dark-theme nav.right{border-color:#8a2c0f}.capibara.c-deep-orange.dark-theme .container-tl header,.capibara.c-deep-orange.dark-theme .corner{border-bottom-color:#8a2c0f}.capibara.c-deep-orange.dark-theme .progress-bar,.capibara.c-deep-orange .progress-bar{background-color:rgba(230,74,25,.2)!important}.capibara.c-deep-orange.dark-theme .progress-bar:after,.capibara.c-deep-orange.dark-theme .progress-bar:before,.capibara.c-deep-orange .progress-bar:after,.capibara.c-deep-orange .progress-bar:before{background-color:#e64a19!important}.capibara.c-deep-orange.dark-theme select.tabs-select,.capibara.c-deep-orange select.tabs-select{background-color:rgba(230,74,25,.7)!important;border-color:#e64a19!important}.capibara.c-deep-orange.dark-theme .time,.capibara.c-deep-orange .time{border-color:rgba(230,74,25,.6)}.capibara.c-deep-orange.dark-theme .time .symbol,.capibara.c-deep-orange .time .symbol{color:#e64a19}.capibara.c-deep-orange.dark-theme .time input:active,.capibara.c-deep-orange.dark-theme .time input:focus,.capibara.c-deep-orange .time input:active,.capibara.c-deep-orange .time input:focus{border-color:#e64a19;box-shadow:0 4px 6px rgba(230,74,25,.2)}.capibara.c-deep-orange.dark-theme .input-box,.capibara.c-deep-orange.dark-theme .input-section input.nav-input,.capibara.c-deep-orange .input-box,.capibara.c-deep-orange .input-section input.nav-input{border-color:rgba(230,74,25,.6)}.capibara.c-deep-orange.dark-theme .input-section input.nav-input:active,.capibara.c-deep-orange.dark-theme .input-section input.nav-input:focus,.capibara.c-deep-orange .input-section input.nav-input:active,.capibara.c-deep-orange .input-section input.nav-input:focus{border-color:#e64a19;box-shadow:0 4px 6px rgba(230,74,25,.2)}.capibara.c-deep-orange.dark-theme .input-section.msj-input-container textarea.msj,.capibara.c-deep-orange .input-section.msj-input-container textarea.msj{border:2px solid #e64a19}.capibara.c-deep-orange.dark-theme .input-section.msj-input-container textarea.msj:active,.capibara.c-deep-orange.dark-theme .input-section.msj-input-container textarea.msj:focus,.capibara.c-deep-orange .input-section.msj-input-container textarea.msj:active,.capibara.c-deep-orange .input-section.msj-input-container textarea.msj:focus{box-shadow:0 4px 6px rgba(230,74,25,.2)}.capibara.c-deep-orange .btn-raised,.capibara.c-deep-orange.dark-theme .btn-raised{border-color:#e64a19;background:rgba(230,74,25,.8)}.capibara.c-deep-orange .btn-outline,.capibara.c-deep-orange.dark-theme .btn-outline{border-color:#e64a19;color:#e64a19}.capibara.c-deep-orange.dark-theme .select-container .selected-day,.capibara.c-deep-orange .select-container .selected-day{background:rgba(230,74,25,.3);box-shadow:inset 0 0 10px rgba(230,74,25,.5)}.capibara .c-deep-orange--background{background:#e64a19!important}.capibara .c-deep-orange-d--background{background:#a13412!important}.capibara .c-deep-orange-l--background{background:#ee805e!important}.capibara .c-deep-orange--text{color:#e64a19!important}.capibara .c-deep-orange-d--text{color:#a13412!important}.capibara .c-deep-orange-l--text{color:#ee805e!important}.capibara .detail-day .list-detail .item-detail.c-deep-orange{background:rgba(230,74,25,.2);border:1px solid #e64a19}.capibara .detail-day .list-detail .item-detail.c-deep-orange .left-icon{background:#e64a19}.capibara .detail-day .list-detail .item-detail.c-deep-orange .left-icon.outlined{border:1px solid #e64a19;box-shadow:inset 0 0 0 1px rgba(230,74,25,.7)}.capibara .detail-day .list-detail .item-detail.c-deep-orange .name{color:#e64a19}.capibara .float-box-container .float-box span.data.c-deep-orange{background:rgba(230,74,25,.8)}.capibara .float-box-container .float-box span.data.shape-outlined.c-deep-orange{border-color:rgba(230,74,25,.9);background:rgba(230,74,25,.1);color:#e64a19}.capibara .float-box-container .float-box span.data.shape-bar.c-deep-orange{background:#e64a19}.capibara .float-box-container .float-box span.data.shape-bar-outlined.c-deep-orange{border-color:rgba(230,74,25,.9);background:rgba(230,74,25,.1)}.capibara .float-box-container .float-box .dot.c-deep-orange{background:#e64a19}.capibara .float-box-container .float-box .dot.c-deep-orange.outlined{border:1px solid #e64a19;box-shadow:inset 0 0 0 1px rgba(230,74,25,.7)}.capibara .header-top .tabs-container .tab:not(.disabled).c-deep-orange.active{background:rgba(230,74,25,.7);border-color:rgba(230,74,25,.7);color:#fff}.capibara .header-top .tabs-container .tab:not(.disabled).c-deep-orange.active:hover{background:rgba(230,74,25,.8)}.capibara .header-top .tabs-container .tab:not(.disabled).c-deep-orange:hover{background:rgba(230,74,25,.2);border-color:rgba(230,74,25,.9)}.capibara .input-box .mini-input-section--icon.c-deep-orange{background:#e64a19}.capibara.c-brown:not(.dark-theme) ::-webkit-scrollbar-thumb{background:#665e5b}.capibara.c-brown:not(.dark-theme) .header-top{background:#c7c7c7}.capibara.c-brown:not(.dark-theme) .corner{background:#c7c7c7;border-color:#af8778}.capibara.c-brown:not(.dark-theme) .container-tl header{background:#c7c7c7;border-bottom-color:#af8778}.capibara.c-brown:not(.dark-theme) .container-tl header .mes.mes-reduced:after{background:linear-gradient(90deg,transparent,#d5c0b8)!important}.capibara.c-brown:not(.dark-theme) nav.right{border-color:#af8778}.capibara.c-brown.dark-theme .header-top,.capibara.c-brown.dark-theme nav.right{border-color:#392822}.capibara.c-brown.dark-theme .container-tl header,.capibara.c-brown.dark-theme .corner{border-bottom-color:#392822}.capibara.c-brown.dark-theme .progress-bar,.capibara.c-brown .progress-bar{background-color:rgba(121,85,72,.2)!important}.capibara.c-brown.dark-theme .progress-bar:after,.capibara.c-brown.dark-theme .progress-bar:before,.capibara.c-brown .progress-bar:after,.capibara.c-brown .progress-bar:before{background-color:#795548!important}.capibara.c-brown.dark-theme select.tabs-select,.capibara.c-brown select.tabs-select{background-color:rgba(121,85,72,.7)!important;border-color:#795548!important}.capibara.c-brown.dark-theme .time,.capibara.c-brown .time{border-color:rgba(121,85,72,.6)}.capibara.c-brown.dark-theme .time .symbol,.capibara.c-brown .time .symbol{color:#795548}.capibara.c-brown.dark-theme .time input:active,.capibara.c-brown.dark-theme .time input:focus,.capibara.c-brown .time input:active,.capibara.c-brown .time input:focus{border-color:#795548;box-shadow:0 4px 6px rgba(121,85,72,.2)}.capibara.c-brown.dark-theme .input-box,.capibara.c-brown.dark-theme .input-section input.nav-input,.capibara.c-brown .input-box,.capibara.c-brown .input-section input.nav-input{border-color:rgba(121,85,72,.6)}.capibara.c-brown.dark-theme .input-section input.nav-input:active,.capibara.c-brown.dark-theme .input-section input.nav-input:focus,.capibara.c-brown .input-section input.nav-input:active,.capibara.c-brown .input-section input.nav-input:focus{border-color:#795548;box-shadow:0 4px 6px rgba(121,85,72,.2)}.capibara.c-brown.dark-theme .input-section.msj-input-container textarea.msj,.capibara.c-brown .input-section.msj-input-container textarea.msj{border:2px solid #795548}.capibara.c-brown.dark-theme .input-section.msj-input-container textarea.msj:active,.capibara.c-brown.dark-theme .input-section.msj-input-container textarea.msj:focus,.capibara.c-brown .input-section.msj-input-container textarea.msj:active,.capibara.c-brown .input-section.msj-input-container textarea.msj:focus{box-shadow:0 4px 6px rgba(121,85,72,.2)}.capibara.c-brown .btn-raised,.capibara.c-brown.dark-theme .btn-raised{border-color:#795548;background:rgba(121,85,72,.8)}.capibara.c-brown .btn-outline,.capibara.c-brown.dark-theme .btn-outline{border-color:#795548;color:#795548}.capibara.c-brown.dark-theme .select-container .selected-day,.capibara.c-brown .select-container .selected-day{background:rgba(121,85,72,.3);box-shadow:inset 0 0 10px rgba(121,85,72,.5)}.capibara .c-brown--background{background:#795548!important}.capibara .c-brown-d--background{background:#49332b!important}.capibara .c-brown-l--background{background:#a57868!important}.capibara .c-brown--text{color:#795548!important}.capibara .c-brown-d--text{color:#49332b!important}.capibara .c-brown-l--text{color:#a57868!important}.capibara .detail-day .list-detail .item-detail.c-brown{background:rgba(121,85,72,.2);border:1px solid #795548}.capibara .detail-day .list-detail .item-detail.c-brown .left-icon{background:#795548}.capibara .detail-day .list-detail .item-detail.c-brown .left-icon.outlined{border:1px solid #795548;box-shadow:inset 0 0 0 1px rgba(121,85,72,.7)}.capibara .detail-day .list-detail .item-detail.c-brown .name{color:#795548}.capibara .float-box-container .float-box span.data.c-brown{background:rgba(121,85,72,.8)}.capibara .float-box-container .float-box span.data.shape-outlined.c-brown{border-color:rgba(121,85,72,.9);background:rgba(121,85,72,.1);color:#795548}.capibara .float-box-container .float-box span.data.shape-bar.c-brown{background:#795548}.capibara .float-box-container .float-box span.data.shape-bar-outlined.c-brown{border-color:rgba(121,85,72,.9);background:rgba(121,85,72,.1)}.capibara .float-box-container .float-box .dot.c-brown{background:#795548}.capibara .float-box-container .float-box .dot.c-brown.outlined{border:1px solid #795548;box-shadow:inset 0 0 0 1px rgba(121,85,72,.7)}.capibara .header-top .tabs-container .tab:not(.disabled).c-brown.active{background:rgba(121,85,72,.7);border-color:rgba(121,85,72,.7);color:#fff}.capibara .header-top .tabs-container .tab:not(.disabled).c-brown.active:hover{background:rgba(121,85,72,.8)}.capibara .header-top .tabs-container .tab:not(.disabled).c-brown:hover{background:rgba(121,85,72,.2);border-color:rgba(121,85,72,.9)}.capibara .input-box .mini-input-section--icon.c-brown{background:#795548}.capibara.c-blue_grey:not(.dark-theme) ::-webkit-scrollbar-thumb{background:#767676}.capibara.c-blue_grey:not(.dark-theme) .header-top{background:#dcdcdc}.capibara.c-blue_grey:not(.dark-theme) .corner{background:#dcdcdc;border-color:#99aeb8}.capibara.c-blue_grey:not(.dark-theme) .container-tl header{background:#dcdcdc;border-bottom-color:#99aeb8}.capibara.c-blue_grey:not(.dark-theme) .container-tl header .mes.mes-reduced:after{background:linear-gradient(90deg,transparent,#d5dee2)!important}.capibara.c-blue_grey:not(.dark-theme) nav.right{border-color:#99aeb8}.capibara.c-blue_grey.dark-theme .header-top,.capibara.c-blue_grey.dark-theme nav.right{border-color:#36474f}.capibara.c-blue_grey.dark-theme .container-tl header,.capibara.c-blue_grey.dark-theme .corner{border-bottom-color:#36474f}.capibara.c-blue_grey.dark-theme .progress-bar,.capibara.c-blue_grey .progress-bar{background-color:rgba(96,125,139,.2)!important}.capibara.c-blue_grey.dark-theme .progress-bar:after,.capibara.c-blue_grey.dark-theme .progress-bar:before,.capibara.c-blue_grey .progress-bar:after,.capibara.c-blue_grey .progress-bar:before{background-color:#607d8b!important}.capibara.c-blue_grey.dark-theme select.tabs-select,.capibara.c-blue_grey select.tabs-select{background-color:rgba(96,125,139,.7)!important;border-color:#607d8b!important}.capibara.c-blue_grey.dark-theme .time,.capibara.c-blue_grey .time{border-color:rgba(96,125,139,.6)}.capibara.c-blue_grey.dark-theme .time .symbol,.capibara.c-blue_grey .time .symbol{color:#607d8b}.capibara.c-blue_grey.dark-theme .time input:active,.capibara.c-blue_grey.dark-theme .time input:focus,.capibara.c-blue_grey .time input:active,.capibara.c-blue_grey .time input:focus{border-color:#607d8b;box-shadow:0 4px 6px rgba(96,125,139,.2)}.capibara.c-blue_grey.dark-theme .input-box,.capibara.c-blue_grey.dark-theme .input-section input.nav-input,.capibara.c-blue_grey .input-box,.capibara.c-blue_grey .input-section input.nav-input{border-color:rgba(96,125,139,.6)}.capibara.c-blue_grey.dark-theme .input-section input.nav-input:active,.capibara.c-blue_grey.dark-theme .input-section input.nav-input:focus,.capibara.c-blue_grey .input-section input.nav-input:active,.capibara.c-blue_grey .input-section input.nav-input:focus{border-color:#607d8b;box-shadow:0 4px 6px rgba(96,125,139,.2)}.capibara.c-blue_grey.dark-theme .input-section.msj-input-container textarea.msj,.capibara.c-blue_grey .input-section.msj-input-container textarea.msj{border:2px solid #607d8b}.capibara.c-blue_grey.dark-theme .input-section.msj-input-container textarea.msj:active,.capibara.c-blue_grey.dark-theme .input-section.msj-input-container textarea.msj:focus,.capibara.c-blue_grey .input-section.msj-input-container textarea.msj:active,.capibara.c-blue_grey .input-section.msj-input-container textarea.msj:focus{box-shadow:0 4px 6px rgba(96,125,139,.2)}.capibara.c-blue_grey .btn-raised,.capibara.c-blue_grey.dark-theme .btn-raised{border-color:#607d8b;background:rgba(96,125,139,.8)}.capibara.c-blue_grey .btn-outline,.capibara.c-blue_grey.dark-theme .btn-outline{border-color:#607d8b;color:#607d8b}.capibara.c-blue_grey.dark-theme .select-container .selected-day,.capibara.c-blue_grey .select-container .selected-day{background:rgba(96,125,139,.3);box-shadow:inset 0 0 10px rgba(96,125,139,.5)}.capibara .c-blue_grey--background{background:#607d8b!important}.capibara .c-blue_grey-d--background{background:#41545e!important}.capibara .c-blue_grey-l--background{background:#8aa2ae!important}.capibara .c-blue_grey--text{color:#607d8b!important}.capibara .c-blue_grey-d--text{color:#41545e!important}.capibara .c-blue_grey-l--text{color:#8aa2ae!important}.capibara .detail-day .list-detail .item-detail.c-blue_grey{background:rgba(96,125,139,.2);border:1px solid #607d8b}.capibara .detail-day .list-detail .item-detail.c-blue_grey .left-icon{background:#607d8b}.capibara .detail-day .list-detail .item-detail.c-blue_grey .left-icon.outlined{border:1px solid #607d8b;box-shadow:inset 0 0 0 1px rgba(96,125,139,.7)}.capibara .detail-day .list-detail .item-detail.c-blue_grey .name{color:#607d8b}.capibara .float-box-container .float-box span.data.c-blue_grey{background:rgba(96,125,139,.8)}.capibara .float-box-container .float-box span.data.shape-outlined.c-blue_grey{border-color:rgba(96,125,139,.9);background:rgba(96,125,139,.1);color:#607d8b}.capibara .float-box-container .float-box span.data.shape-bar.c-blue_grey{background:#607d8b}.capibara .float-box-container .float-box span.data.shape-bar-outlined.c-blue_grey{border-color:rgba(96,125,139,.9);background:rgba(96,125,139,.1)}.capibara .float-box-container .float-box .dot.c-blue_grey{background:#607d8b}.capibara .float-box-container .float-box .dot.c-blue_grey.outlined{border:1px solid #607d8b;box-shadow:inset 0 0 0 1px rgba(96,125,139,.7)}.capibara .header-top .tabs-container .tab:not(.disabled).c-blue_grey.active{background:rgba(96,125,139,.7);border-color:rgba(96,125,139,.7);color:#fff}.capibara .header-top .tabs-container .tab:not(.disabled).c-blue_grey.active:hover{background:rgba(96,125,139,.8)}.capibara .header-top .tabs-container .tab:not(.disabled).c-blue_grey:hover{background:rgba(96,125,139,.2);border-color:rgba(96,125,139,.9)}.capibara .input-box .mini-input-section--icon.c-blue_grey{background:#607d8b}.capibara *,.capibara :after,.capibara :before{box-sizing:border-box}.capibara input{outline:none}.capibara input[type=number]{-moz-appearance:textfield}.capibara input[type=number]::-webkit-inner-spin-button,.capibara input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.capibara input[type=number]::-moz-placeholder{opacity:1}.capibara input[type=number]:-ms-input-placeholder{opacity:1}.capibara input[type=number]::placeholder{opacity:1}.capibara.dark-theme .hide-dark,.capibara:not(.dark-theme) .hide-light{display:none!important}.capibara .truncate{width:100%;display:inline-block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.capibara .hide{display:none!important}.capibara .text-title{font-size:1em;font-weight:700;margin:.3em}.capibara .text-subtitle{font-size:.875em;font-weight:700;margin:.3em}.capibara .d-inline-block{display:inline-block}.capibara .d-block{display:block}@media screen and (min-width:960px){.capibara .c-d-desktop-none{display:none!important}.capibara .c-d-desktop-inline-block{display:inline-block!important}.capibara .c-d-desktop-block{display:block!important}.capibara .c-d-desktop-flex{display:flex!important}}@media screen and (max-width:959px){.capibara .c-d-mobile-none{display:none!important}.capibara .c-d-mobile-block{display:block!important}.capibara .c-d-mobile-inline-block{display:inline-block!important}.capibara .c-d-mobile-flex{display:flex!important}}.capibara ::-webkit-scrollbar{width:12px;height:12px;opacity:.5}.capibara ::-webkit-scrollbar-corner,.capibara ::-webkit-scrollbar-track{background:transparent}.capibara ::-webkit-scrollbar-thumb{border-radius:5px;background:grey}.capibara.dark-theme ::-webkit-scrollbar-corner,.capibara.dark-theme ::-webkit-scrollbar-track{background:transparent}.capibara.dark-theme ::-webkit-scrollbar-thumb{background:#bdbdbd}.capibara{position:relative;font-family:Roboto,sans-serif;height:inherit;max-height:inherit;overflow:hidden;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;line-height:normal;font-size:var(--font-size);color:#37474f;background:#f5f5f5}.capibara.dark-theme{color:#f0f0f0;background:#222837}.capibara .container-tl{width:100%;height:calc(100% - var(--header-top-height));max-height:calc(100% - var(--header-top-height));position:relative;overflow:scroll;margin:0}.capibara.extended-right .container-tl{width:calc(100% - var(--nav-right-width))}.capibara .container-tl{background:#f5f5f5}.capibara.dark-theme .container-tl{background:#222837}.capibara .container-tl .today-line{height:0;width:0;position:-webkit-sticky;position:sticky;top:var(--header-height)}.capibara .container-tl .today-line.disable-line,.capibara .container-tl .today-line.disable-line:after{display:none!important}.capibara .container-tl .today-line:after{margin-left:calc(var(--nav-width) + var(--initial-nav-width) + var(--ex-nav-width) + var(--btn-nav-width) + 1px);position:absolute;display:block;left:0;top:0;content:\\\"\\\";width:2px;height:calc(100vh - var(--header-height) - var(--header-top-height));background:rgba(183,28,28,.4)}.capibara .container-tl.header-extended .container-tl .today-line:after{height:calc(100vh - var(--header-height) + var(--ex-header-height) + var(--header-top-height))}.capibara .corner{position:absolute;top:var(--header-top-height);z-index:4;height:var(--header-height);border:solid rgba(0,0,0,.4);border-width:0 0 2px;padding-left:8px}.capibara .corner:not(.right){left:0;border-right-width:1px;width:calc(var(--nav-width) + var(--initial-nav-width) + var(--ex-nav-width) + var(--btn-nav-width))}.capibara .corner.right{right:0;width:var(--nav-right-width);display:none}.capibara .corner>div:not([class]){width:inherit;height:inherit}.capibara .corner .corner-title{height:inherit;display:block;text-align:left;position:relative}.capibara .corner .corner-title span.bottom-text{position:absolute;left:35px;bottom:8px}.capibara .corner .initial-corner{position:absolute;left:var(--nav-width);top:0;width:var(--initial-nav-width);height:var(--header-height);overflow:hidden;display:block}.capibara .corner .initial-corner .initial-corner-title{height:inherit;width:inherit;display:inline-block;margin-right:-1px;box-sizing:border-box;vertical-align:top;position:relative}.capibara .corner .initial-corner .initial-corner-title .bottom-container{position:absolute;left:0;bottom:8px;width:100%;box-sizing:border-box;display:flex;align-items:center}.capibara .corner .initial-corner .initial-corner-title .bottom-container .item-col{flex:0 0 var(--nav-item-col-width);text-align:center;display:inline-block;font-size:.75em}.capibara .corner .extend-corner{position:absolute;left:calc(var(--nav-width) + var(--initial-nav-width));top:0;width:var(--ex-nav-width);height:var(--header-height);overflow:hidden;display:block}.capibara .corner .extend-corner .ex-corner-title{height:inherit;width:inherit;display:inline-block;margin-right:-1px;box-sizing:border-box;vertical-align:top;position:relative}.capibara .corner .extend-corner .ex-corner-title .bottom-container{position:absolute;left:0;bottom:8px;width:100%;box-sizing:border-box;display:flex;align-items:center}.capibara .corner .extend-corner .ex-corner-title .bottom-container .item-col{flex:0 0 var(--nav-item-col-width);text-align:center;display:inline-block;font-size:.75em}.capibara .corner .btn-nav-corner{position:absolute;right:0;top:0;width:var(--btn-nav-width);height:var(--header-height);padding-top:var(--header-labels-height)}.capibara .corner .btn-nav-corner .input-titles{text-align:right;display:flex;flex-direction:column;position:absolute;right:0;top:var(--header-labels-height)}.capibara .corner .btn-nav-corner .input-titles .input-title-container{position:relative}.capibara .corner .btn-nav-corner .input-titles .input-title-container:not(.persistent){display:none}.capibara .corner .btn-nav-corner .input-titles .input-title-container span.average{font-weight:700;margin-right:4px}.capibara .corner .btn-nav-corner .input-titles .input-title-container .average-box{position:absolute;right:3em;top:0;font-size:.875em;background:#fff;border-right:none;padding:3px 12px 3px 8px;z-index:2;border-radius:5px;height:18px;box-shadow:2px 0 5px 2px rgba(0,0,0,.2);line-height:13px;color:#000!important;min-width:4rem}.capibara .corner .btn-nav-corner .input-titles .input-title-container .average-box:after{content:\\\"\\\";transform:rotate(45deg);position:absolute;right:-3px;top:3px;background:#fff;width:12px;height:12px}.capibara .corner .btn-nav-corner .input-titles .input-title-container .average-box .symbol{font-weight:700}.capibara .corner .btn-nav-corner .input-titles .input-title-container .input-title{height:calc(var(--header-input-height) + 2px);line-height:calc(var(--header-input-height) + 2px);padding-right:8px;display:inline-block;font-size:.75em}.capibara.extended-right .corner.right{display:block}.capibara.header-extended .corner,.capibara.header-extended .corner .btn-nav-corner,.capibara.header-extended .corner .extend-corner,.capibara.header-extended .corner .initial-corner{height:calc(var(--header-height) + var(--ex-header-height))}.capibara.header-extended .corner .btn-nav-corner .input-titles .input-title-container:not(.persistent){display:unset}.capibara.header-extended .corner .btn-nav-corner .input-titles .input-title-container:not(.persistent) .average-box{visibility:visible}.capibara.header-extended .corner .btn-nav-corner .input-titles .input-title-container:not(.persistent) .input-title{visibility:visible;height:auto}.capibara .corner{background:#f1fffe}.capibara.dark-theme .corner{background:#313b50;border-color:rgba(64,78,105,.6)}.capibara.dark-theme .corner .input-titles .input-title-container .input-title{color:hsla(0,0%,100%,.8)!important}.capibara .header-top{position:relative;width:100%;height:var(--header-top-height);padding-right:8px;display:flex;flex-flow:row wrap}.capibara .header-top .spacer{flex:1 0 auto}.capibara .header-top .tabs-container{display:flex;padding:0 16px}.capibara .header-top .tabs-container .tab{cursor:pointer;padding:3px 18px;font-weight:700;border:1px solid transparent;margin:8px;border-radius:30px;transition:background .2s ease}.capibara .header-top .tabs-container .tab.disabled{color:grey}.capibara .header-top .tabs-container .tab:hover{border-color:grey}.capibara .header-top{background:#f1fffe}.capibara .header-top .tabs-container .tab{color:#313b50}.capibara .header-top .tabs-container .tab.disabled{color:rgba(49,59,80,.5)}.capibara.dark-theme .header-top{background:#313b50}.capibara.dark-theme .header-top .tabs-container .tab{color:hsla(0,0%,100%,.8)}.capibara.dark-theme .header-top .tabs-container .tab.disabled{color:hsla(0,0%,100%,.4)}.capibara .corner-footer{position:-webkit-sticky;position:sticky;left:0;bottom:0;z-index:3;width:calc(var(--nav-width) + var(--initial-nav-width) + var(--ex-nav-width) + var(--btn-nav-width));height:var(--item-height);margin-bottom:calc(var(--item-height)*-1);box-sizing:border-box}.capibara .corner-footer .corner-title{line-height:30px;height:inherit;display:block;text-align:left;box-sizing:border-box;position:relative;font-weight:700;padding:4px 8px}.capibara .corner-footer{background:#78909c;color:#fff}.capibara.dark-theme .corner-footer{background:#313b50;color:#f0f0f0}.capibara nav.right{position:absolute;right:0;top:calc(var(--header-height) + var(--header-top-height));height:calc(100% - var(--header-height) - var(--header-top-height));overflow-y:scroll;overflow-x:hidden;z-index:5;display:none;border-left:1px solid red}.capibara nav.right,.capibara nav.right .child-nav-item,.capibara nav.right .nav-item{width:var(--nav-right-width)}.capibara nav.right .nav-input-container{text-align:center}.capibara nav.right .nav-input-container .button-section{padding-bottom:.75em;padding-top:.75em;position:-webkit-sticky;position:sticky;bottom:0}.capibara nav.left{min-height:calc(100% - var(--header-height));position:-webkit-sticky;position:sticky;left:0;width:calc(var(--nav-width) + var(--initial-nav-width) + var(--ex-nav-width) + var(--btn-nav-width));height:auto;z-index:2;border-right:1px solid #b0bec5;overflow:visible;box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12)}.capibara nav.left .child-nav-item,.capibara nav.left .nav-item{width:var(--nav-width)}.capibara nav.left .detail-nav-item{max-width:300px;width:-webkit-max-content;width:-moz-max-content;width:max-content;min-height:70px;position:absolute;left:3rem;top:0;border:1px solid grey;z-index:2;border-radius:5px;padding:16px;transition:all .3s ease;flex-flow:column nowrap;box-shadow:0 6px 6px -3px rgba(0,0,0,.2),0 10px 14px 1px rgba(0,0,0,.14),0 4px 18px 3px rgba(0,0,0,.12);transform:translateY(calc(.5rem + var(--item-height)))}.capibara nav.left .detail-nav-item.to-bottom{transform:translateY(calc(-100% - .5rem))}.capibara nav.left .detail-nav-item .header-detail .title{font-size:1.125em;font-weight:700;margin-bottom:8px;max-width:calc(100% - 80px)}.capibara nav.left .detail-nav-item .header-detail .subtitle{font-size:.875;margin-bottom:8px}.capibara nav.left .detail-nav-item .header-detail .header-chip{position:absolute;right:16px;top:16px;padding:2px 8px;border:3px solid grey;border-radius:5px}.capibara nav.left .detail-nav-item .detail-container>div{margin:6px 0}.capibara nav.left .initial-nav-list{width:var(--initial-nav-width);position:absolute;left:var(--nav-width);top:0;overflow:hidden;display:block}.capibara nav.left .initial-nav-list .child-initial-nav-item,.capibara nav.left .initial-nav-list .initial-nav-item{border-bottom:1px solid #b0bec5;height:var(--item-height);box-sizing:border-box;display:flex;line-height:34px}.capibara nav.left .initial-nav-list .child-initial-nav-item .item-title,.capibara nav.left .initial-nav-list .initial-nav-item .item-title{flex:1 0 auto;padding:4px 8px}.capibara nav.left .initial-nav-list .child-initial-nav-item .item-col,.capibara nav.left .initial-nav-list .initial-nav-item .item-col{flex:0 0 var(--nav-item-col-width);text-align:center;padding:4px 8px}.capibara nav.left .initial-nav-list .child-initial-nav-item .item-col.has-input,.capibara nav.left .initial-nav-list .initial-nav-item .item-col.has-input{padding:0}.capibara nav.left .initial-nav-list .child-initial-nav-item .item-col.has-input>.hour-input,.capibara nav.left .initial-nav-list .initial-nav-item .item-col.has-input>.hour-input{font-size:.875em;width:calc(100% - 8px);border:1px solid grey;border-radius:3px;height:24px}.capibara nav.left .initial-nav-list .child-initial-nav-item .item-col.has-input>input,.capibara nav.left .initial-nav-list .initial-nav-item .item-col.has-input>input{text-align:center;font-size:.875em;width:calc(100% - 8px);display:block;border:1px solid grey;border-radius:3px;height:24px;margin:8px 4px 4px;background:hsla(0,0%,100%,.2)}.capibara nav.left .initial-nav-list .child-initial-nav-item .item-col.has-input>input:active,.capibara nav.left .initial-nav-list .child-initial-nav-item .item-col.has-input>input:focus,.capibara nav.left .initial-nav-list .initial-nav-item .item-col.has-input>input:active,.capibara nav.left .initial-nav-list .initial-nav-item .item-col.has-input>input:focus{background:hsla(0,0%,100%,.8)}.capibara nav.left .extend-nav-list{width:var(--ex-nav-width);position:absolute;left:calc(var(--nav-width) + var(--initial-nav-width));top:0;overflow:hidden;display:block}.capibara nav.left .extend-nav-list .child-ex-nav-item,.capibara nav.left .extend-nav-list .ex-nav-item{border-bottom:1px solid #b0bec5;height:var(--item-height);box-sizing:border-box;display:flex;line-height:1.75rem}.capibara nav.left .extend-nav-list .child-ex-nav-item .item-title,.capibara nav.left .extend-nav-list .ex-nav-item .item-title{flex:1 0 auto;padding:4px 8px}.capibara nav.left .extend-nav-list .child-ex-nav-item .item-col,.capibara nav.left .extend-nav-list .ex-nav-item .item-col{flex:0 0 var(--nav-item-col-width);text-align:center;padding:4px 8px}.capibara nav.left .extend-nav-list .child-ex-nav-item .item-col.has-input,.capibara nav.left .extend-nav-list .ex-nav-item .item-col.has-input{padding:0}.capibara nav.left .extend-nav-list .child-ex-nav-item .item-col.has-input>input,.capibara nav.left .extend-nav-list .ex-nav-item .item-col.has-input>input{text-align:center;font-size:.875em;width:calc(100% - 8px);display:block;border:1px solid grey;border-radius:3px;height:24px;margin:8px 4px 4px;background:hsla(0,0%,100%,.2)}.capibara nav.left .extend-nav-list .child-ex-nav-item .item-col.has-input>input:active,.capibara nav.left .extend-nav-list .child-ex-nav-item .item-col.has-input>input:focus,.capibara nav.left .extend-nav-list .ex-nav-item .item-col.has-input>input:active,.capibara nav.left .extend-nav-list .ex-nav-item .item-col.has-input>input:focus{background:hsla(0,0%,100%,.8)}.capibara nav.left .btn-nav-list{left:calc(var(--nav-width) + var(--initial-nav-width) + var(--ex-nav-width));width:var(--btn-nav-width);position:absolute;top:0;overflow:hidden}.capibara nav.left .btn-nav-list .btn-child-nav-item .btn-nav-item-content,.capibara nav.left .btn-nav-list .btn-nav-item .btn-nav-item-content{height:var(--item-height);width:inherit;padding:4px 6px;border-bottom:1px solid #b0bec5;text-align:right}.capibara nav.left .nav-item-total-footer{padding-top:3px}.capibara nav .btn-nav-item.parent,.capibara nav .ex-nav-item.parent,.capibara nav .initial-nav-item.parent,.capibara nav .nav-item-container.parent{background:rgba(25,118,210,.1)}.capibara nav .btn-nav-item.parent>.item-title,.capibara nav .ex-nav-item.parent>.item-title,.capibara nav .initial-nav-item.parent>.item-title,.capibara nav .nav-item-container.parent>.item-title{max-width:calc(var(--nav-width) + var(--ex-nav-width) + var(--initial-nav-width) + var(--btn-nav-width) - 60px);width:auto}.capibara nav .nav-item-list .child-nav-item,.capibara nav .nav-item-list .nav-item{min-height:var(--item-height);box-sizing:border-box;position:relative}.capibara nav .nav-item-list .child-nav-item .nav-item-container,.capibara nav .nav-item-list .nav-item .nav-item-container{display:flex;border-bottom:1px solid #b0bec5;height:var(--item-height)}.capibara nav .nav-item-list .child-nav-item .nav-item-container .tree-icon,.capibara nav .nav-item-list .nav-item .nav-item-container .tree-icon{transition:all .5s ease;background:transparent;border:none;width:34px;flex:0 0 34px;font-size:1.5em;text-align:center;cursor:pointer}.capibara nav .nav-item-list .child-nav-item .nav-item-container .nav-item-icon,.capibara nav .nav-item-list .nav-item .nav-item-container .nav-item-icon{flex:0 0 34px;font-size:1.125em;vertical-align:middle;text-align:center;line-height:40px;margin-top:12px}.capibara nav .nav-item-list .child-nav-item .nav-item-container .nav-item-icon path,.capibara nav .nav-item-list .nav-item .nav-item-container .nav-item-icon path{width:20px;height:20px}.capibara nav .nav-item-list .child-nav-item .nav-item-container .item-title,.capibara nav .nav-item-list .nav-item .nav-item-container .item-title{flex:1 1 auto;display:grid;font-size:1em;line-height:34px;padding:4px 8px}.capibara nav .nav-item-list .child-nav-item .nav-item-container .item-title.full-width,.capibara nav .nav-item-list .nav-item .nav-item-container .item-title.full-width{flex:1 0 auto;display:inline-block}.capibara nav .nav-item-list .child-nav-item .nav-item-container .item-title.clickeable,.capibara nav .nav-item-list .nav-item .nav-item-container .item-title.clickeable{cursor:pointer}.capibara nav .nav-item-list .child-nav-item .nav-item-container .item-title.clickeable:hover,.capibara nav .nav-item-list .nav-item .nav-item-container .item-title.clickeable:hover{background:hsla(0,0%,39.2%,.2)!important;text-decoration:underline}.capibara.extended-right nav.right{display:block}.capibara.header-extended nav.left{min-height:calc(100% - var(--header-height) + var(--ex-header-height))}.capibara.header-extended nav.right{top:calc(var(--header-height) + var(--header-top-height) + var(--ex-header-height));height:calc(100% - var(--header-height) - var(--header-top-height) - var(--ex-header-height))}.capibara nav.left,.capibara nav.right,.capibara nav.right .button-section{background:#fafafa}.capibara nav.left .detail-nav-item{border-color:rgba(0,0,0,.2);background:#fff}.capibara nav.left .detail-nav-item .header-chip.red-light{border-color:#d32f2f}.capibara nav.left .detail-nav-item .header-chip.yellow-light{border-color:#fdd835}.capibara nav.left .detail-nav-item .header-chip.green-light{border-color:#2e7d32}.capibara nav .nav-item-list .child-nav-item .nav-item-container .tree-icon,.capibara nav .nav-item-list .nav-item .nav-item-container .tree-icon{color:#37474f}.capibara nav .nav-item-list .child-nav-item .nav-item-container .nav-item-icon,.capibara nav .nav-item-list .nav-item .nav-item-container .nav-item-icon{color:rgba(55,71,79,.2)}.capibara.dark-theme nav.right,.capibara.dark-theme nav.right .button-section{background:#222837}.capibara.dark-theme nav.left{background:#222837;border-color:rgba(64,78,105,.6)}.capibara.dark-theme nav.left .detail-nav-item{border-color:#404e69;background:#222837}.capibara.dark-theme nav.left .detail-nav-item .header-chip{color:#f0f0f0}.capibara.dark-theme nav.left .detail-nav-item .header-chip.red-light{border-color:#b71c1c}.capibara.dark-theme nav.left .detail-nav-item .header-chip.yellow-light{border-color:#fb8c00}.capibara.dark-theme nav.left .detail-nav-item .header-chip.green-light{border-color:#388e3c}.capibara.dark-theme nav.left .extend-nav-list .child-ex-nav-item,.capibara.dark-theme nav.left .extend-nav-list .child-initial-nav-item,.capibara.dark-theme nav.left .extend-nav-list .ex-nav-item,.capibara.dark-theme nav.left .extend-nav-list .initial-nav-item,.capibara.dark-theme nav.left .initial-nav-list .child-ex-nav-item,.capibara.dark-theme nav.left .initial-nav-list .child-initial-nav-item,.capibara.dark-theme nav.left .initial-nav-list .ex-nav-item,.capibara.dark-theme nav.left .initial-nav-list .initial-nav-item{border-color:rgba(64,78,105,.6)}.capibara.dark-theme nav.left .extend-nav-list .child-ex-nav-item .item-col.has-input .hour-input,.capibara.dark-theme nav.left .extend-nav-list .child-ex-nav-item .item-col.has-input input,.capibara.dark-theme nav.left .extend-nav-list .child-initial-nav-item .item-col.has-input .hour-input,.capibara.dark-theme nav.left .extend-nav-list .child-initial-nav-item .item-col.has-input input,.capibara.dark-theme nav.left .extend-nav-list .ex-nav-item .item-col.has-input .hour-input,.capibara.dark-theme nav.left .extend-nav-list .ex-nav-item .item-col.has-input input,.capibara.dark-theme nav.left .extend-nav-list .initial-nav-item .item-col.has-input .hour-input,.capibara.dark-theme nav.left .extend-nav-list .initial-nav-item .item-col.has-input input,.capibara.dark-theme nav.left .initial-nav-list .child-ex-nav-item .item-col.has-input .hour-input,.capibara.dark-theme nav.left .initial-nav-list .child-ex-nav-item .item-col.has-input input,.capibara.dark-theme nav.left .initial-nav-list .child-initial-nav-item .item-col.has-input .hour-input,.capibara.dark-theme nav.left .initial-nav-list .child-initial-nav-item .item-col.has-input input,.capibara.dark-theme nav.left .initial-nav-list .ex-nav-item .item-col.has-input .hour-input,.capibara.dark-theme nav.left .initial-nav-list .ex-nav-item .item-col.has-input input,.capibara.dark-theme nav.left .initial-nav-list .initial-nav-item .item-col.has-input .hour-input,.capibara.dark-theme nav.left .initial-nav-list .initial-nav-item .item-col.has-input input{background:#404e69;color:#f0f0f0}.capibara.dark-theme nav.left .extend-nav-list .child-ex-nav-item .item-col.has-input .hour-input:active,.capibara.dark-theme nav.left .extend-nav-list .child-ex-nav-item .item-col.has-input .hour-input:focus,.capibara.dark-theme nav.left .extend-nav-list .child-ex-nav-item .item-col.has-input input:active,.capibara.dark-theme nav.left .extend-nav-list .child-ex-nav-item .item-col.has-input input:focus,.capibara.dark-theme nav.left .extend-nav-list .child-initial-nav-item .item-col.has-input .hour-input:active,.capibara.dark-theme nav.left .extend-nav-list .child-initial-nav-item .item-col.has-input .hour-input:focus,.capibara.dark-theme nav.left .extend-nav-list .child-initial-nav-item .item-col.has-input input:active,.capibara.dark-theme nav.left .extend-nav-list .child-initial-nav-item .item-col.has-input input:focus,.capibara.dark-theme nav.left .extend-nav-list .ex-nav-item .item-col.has-input .hour-input:active,.capibara.dark-theme nav.left .extend-nav-list .ex-nav-item .item-col.has-input .hour-input:focus,.capibara.dark-theme nav.left .extend-nav-list .ex-nav-item .item-col.has-input input:active,.capibara.dark-theme nav.left .extend-nav-list .ex-nav-item .item-col.has-input input:focus,.capibara.dark-theme nav.left .extend-nav-list .initial-nav-item .item-col.has-input .hour-input:active,.capibara.dark-theme nav.left .extend-nav-list .initial-nav-item .item-col.has-input .hour-input:focus,.capibara.dark-theme nav.left .extend-nav-list .initial-nav-item .item-col.has-input input:active,.capibara.dark-theme nav.left .extend-nav-list .initial-nav-item .item-col.has-input input:focus,.capibara.dark-theme nav.left .initial-nav-list .child-ex-nav-item .item-col.has-input .hour-input:active,.capibara.dark-theme nav.left .initial-nav-list .child-ex-nav-item .item-col.has-input .hour-input:focus,.capibara.dark-theme nav.left .initial-nav-list .child-ex-nav-item .item-col.has-input input:active,.capibara.dark-theme nav.left .initial-nav-list .child-ex-nav-item .item-col.has-input input:focus,.capibara.dark-theme nav.left .initial-nav-list .child-initial-nav-item .item-col.has-input .hour-input:active,.capibara.dark-theme nav.left .initial-nav-list .child-initial-nav-item .item-col.has-input .hour-input:focus,.capibara.dark-theme nav.left .initial-nav-list .child-initial-nav-item .item-col.has-input input:active,.capibara.dark-theme nav.left .initial-nav-list .child-initial-nav-item .item-col.has-input input:focus,.capibara.dark-theme nav.left .initial-nav-list .ex-nav-item .item-col.has-input .hour-input:active,.capibara.dark-theme nav.left .initial-nav-list .ex-nav-item .item-col.has-input .hour-input:focus,.capibara.dark-theme nav.left .initial-nav-list .ex-nav-item .item-col.has-input input:active,.capibara.dark-theme nav.left .initial-nav-list .ex-nav-item .item-col.has-input input:focus,.capibara.dark-theme nav.left .initial-nav-list .initial-nav-item .item-col.has-input .hour-input:active,.capibara.dark-theme nav.left .initial-nav-list .initial-nav-item .item-col.has-input .hour-input:focus,.capibara.dark-theme nav.left .initial-nav-list .initial-nav-item .item-col.has-input input:active,.capibara.dark-theme nav.left .initial-nav-list .initial-nav-item .item-col.has-input input:focus{background:hsla(0,0%,100%,.2)}.capibara.dark-theme nav.left .btn-nav-list .btn-child-nav-item .btn-nav-item-content,.capibara.dark-theme nav.left .btn-nav-list .btn-nav-item .btn-nav-item-content,.capibara.dark-theme nav .nav-item-list .child-nav-item .nav-item-container,.capibara.dark-theme nav .nav-item-list .nav-item .nav-item-container{border-color:rgba(64,78,105,.6)}.capibara.dark-theme nav .nav-item-list .child-nav-item .nav-item-container .tree-icon,.capibara.dark-theme nav .nav-item-list .nav-item .nav-item-container .tree-icon{color:#f0f0f0}.capibara.dark-theme nav .nav-item-list .child-nav-item .nav-item-container .nav-item-icon,.capibara.dark-theme nav .nav-item-list .nav-item .nav-item-container .nav-item-icon{color:hsla(0,0%,94.1%,.2)}.capibara .container-tl header{height:var(--header-height);width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;top:0;min-width:100%;position:-webkit-sticky;position:sticky;z-index:3;border-bottom:2px solid grey;box-sizing:border-box;box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12)}.capibara .container-tl header .header-container-extended{height:auto;position:relative;padding-left:calc(var(--nav-width) + var(--initial-nav-width) + var(--ex-nav-width) + var(--btn-nav-width));width:100%;box-sizing:border-box;display:flex;flex-direction:column}.capibara .container-tl header .header-container-extended .input-list{padding:1px 0;flex:0 0 auto;display:flex;flex-direction:row}.capibara .container-tl header .header-container-extended .input-list:not(.persistent){display:none}.capibara .container-tl header .header-container-extended .input-list>div{width:var(--day-width)}.capibara .container-tl header .header-container-extended .input-list>div>span{display:block;width:inherit;line-height:var(--header-input-height);height:var(--header-input-height);text-align:center;font-size:.875em}.capibara .container-tl header .header-container-extended .input-list .dia-input input{width:inherit;height:var(--header-input-height);border:1px solid grey;border-left-width:0;border-radius:0;background:hsla(0,0%,100%,.5);text-align:center;font-size:.875em}.capibara .container-tl header .header-container-extended .input-list .dia-input input:active,.capibara .container-tl header .header-container-extended .input-list .dia-input input:focus{background:hsla(0,0%,100%,.8)}.capibara .container-tl header .header-container{position:relative;padding-left:calc(var(--nav-width) + var(--initial-nav-width) + var(--ex-nav-width) + var(--btn-nav-width));width:100%;display:flex;height:var(--header-labels-height)}.capibara .container-tl header .header-container .header-item{padding:6px 8px;min-width:var(--item-min-width);height:var(--header-height);text-align:center;box-sizing:border-box;position:relative;border-left:1px solid rgba(0,0,0,.1)}.capibara .container-tl header .header-container .header-item span.bottom-text{position:absolute;left:0;bottom:8px;width:100%}.capibara .container-tl header .agno-calendario{display:inline-block;width:-webkit-max-content;width:-moz-max-content;width:max-content}.capibara .container-tl header .agno-calendario .agno{position:-webkit-sticky;position:sticky;left:calc(var(--nav-width) + var(--initial-nav-width) + var(--ex-nav-width) + var(--btn-nav-width));display:inline-block;padding-left:8px;padding-right:32px;font-size:.75em;margin-top:4px}.capibara .container-tl header .agno-calendario .meses{display:block;display:flex}.capibara .container-tl header .agno-calendario .mes-calendario{display:inline-block;min-width:var(--day-width)}.capibara .container-tl header .agno-calendario .mes-calendario .mes{display:inline-block;position:-webkit-sticky;position:sticky;left:calc(var(--nav-width) + var(--initial-nav-width) + var(--btn-nav-width));padding-left:.5em;padding-right:2em;font-size:.875em;margin-top:6px}.capibara .container-tl header .agno-calendario .mes-calendario .mes.mes-reduced{width:var(--day-width);max-width:var(--day-width);overflow:hidden}.capibara .container-tl header .agno-calendario .mes-calendario .mes.mes-reduced.mes-reduced-2{width:calc(var(--day-width)*2)}.capibara .container-tl header .agno-calendario .mes-calendario .mes.mes-reduced.mes-reduced-3{width:calc(var(--day-width)*3)}.capibara .container-tl header .agno-calendario .mes-calendario .mes.mes-reduced .mes-label{width:-webkit-max-content;width:-moz-max-content;width:max-content}.capibara .container-tl header .agno-calendario .mes-calendario .mes.mes-reduced:after{content:\\\"\\\";background:linear-gradient(90deg,transparent,red);position:absolute;right:0;top:0;height:100%;width:calc(var(--day-width)/2)}.capibara .container-tl header .agno-calendario .mes-calendario .dias{display:flex;margin-top:5px}.capibara .container-tl header .agno-calendario .mes-calendario .dias .dia-calendario{width:var(--day-width);height:var(--header-day-height);vertical-align:bottom;font-size:.875em;border-right:1px solid rgba(0,0,0,.1);box-sizing:border-box;padding:4px 6px;text-align:center}.capibara .container-tl header .agno-calendario .mes-calendario .dias .dia-calendario.is-clickeable{cursor:pointer}.capibara.header-extended .container-tl header{height:calc(var(--header-height) + var(--ex-header-height))}.capibara.header-extended .container-tl header .header-container-extended .input-list:not(.persistent){display:flex}.capibara .container-tl header{background:#f1fffe;color:#37474f}.capibara .container-tl header .agno-calendario .mes-calendario .mes.mes-reduced:after{background:linear-gradient(90deg,transparent,#f1fffe)}.capibara .container-tl header .agno-calendario .mes-calendario .dias .dia-calendario.weekend{background:rgba(0,0,0,.1);color:#263238}.capibara .container-tl header .agno-calendario .mes-calendario .dias .dia-calendario.today{background:rgba(229,57,53,.9);color:#fff}.capibara .container-tl header .agno-calendario .mes-calendario .dias .dia-calendario.active{background:green;color:#fff}.capibara .container-tl header .agno-calendario .mes-calendario .dias .dia-calendario.is-clickeable:hover{background:hsla(0,0%,39.2%,.4)}.capibara .container-tl header .agno-calendario .mes-calendario .dias .dia-calendario.is-clickeable:active{background:hsla(0,0%,39.2%,.6)}.capibara .container-tl header .header-container-extended .input-list .dia-input input,.capibara .container-tl header .header-container-extended .input-list div>span{color:#313b50}.capibara.dark-theme .container-tl header{background:#313b50;color:#f0f0f0;border-color:rgba(64,78,105,.6)}.capibara.dark-theme .container-tl header .agno-calendario .mes-calendario .mes.mes-reduced:after{background:linear-gradient(90deg,transparent,#313b50)}.capibara.dark-theme .container-tl header .agno-calendario .mes-calendario .dias .dia-calendario{border-color:rgba(64,78,105,.6)}.capibara.dark-theme .container-tl header .agno-calendario .mes-calendario .dias .dia-calendario.weekend{background:#222837;color:#f0f0f0}.capibara.dark-theme .container-tl header .agno-calendario .mes-calendario .dias .dia-calendario.today{background:rgba(183,28,28,.6);color:#f0f0f0}.capibara.dark-theme .container-tl header .agno-calendario .mes-calendario .dias .dia-calendario.active{background:rgba(56,142,60,.6);color:#f0f0f0}.capibara.dark-theme .container-tl header .agno-calendario .mes-calendario .dias .dia-calendario.is-clickeable:hover{background:hsla(0,0%,39.2%,.4)}.capibara.dark-theme .container-tl header .agno-calendario .mes-calendario .dias .dia-calendario.is-clickeable:active{background:hsla(0,0%,39.2%,.6)}.capibara.dark-theme .container-tl header .header-container-extended .input-list div>span{color:hsla(0,0%,100%,.8)!important}.capibara.dark-theme .container-tl header .header-container-extended .input-list .dia-input input{background:rgba(64,78,105,.6);color:hsla(0,0%,100%,.8)!important;border-color:#313b50}.capibara.dark-theme .container-tl header .header-container-extended .input-list .dia-input input:active,.capibara.dark-theme .container-tl header .header-container-extended .input-list .dia-input input:focus{background:hsla(0,0%,100%,.2)}.capibara .container-tl .plot-vertical-container{height:0;width:0;position:-webkit-sticky;position:sticky;top:var(--header-height);margin-left:calc(var(--nav-width) + var(--initial-nav-width) + var(--ex-nav-width) + var(--btn-nav-width))}.capibara .container-tl .plot-vertical-container .plot-vertical{background:rgba(0,0,0,.3);width:var(--day-width);height:calc(100vh - var(--header-height) - var(--header-top-height));position:absolute;top:0;left:0}.capibara .container-tl .plot-vertical-container .plot-vertical.rain{background:-webkit-repeating-linear-gradient(54deg,rgba(3,155,229,.2),rgba(3,155,229,.2) 5px,transparent 0,transparent 12px);background:repeating-linear-gradient(54deg,rgba(3,155,229,.2),rgba(3,155,229,.2) 5px,transparent 0,transparent 12px)}.capibara .container-tl .plot-horizontal-container{height:0;width:0;position:-webkit-sticky;position:sticky;left:calc(var(--nav-width) + var(--initial-nav-width) + var(--ex-nav-width) + var(--btn-nav-width))}.capibara .container-tl .plot-horizontal-container .plot-horizontal{background:rgba(0,0,0,.3);width:100vw;height:var(--item-height);position:absolute;top:0;left:0}.capibara .container-tl .plot-horizontal-container .plot-horizontal.plot-parent{background:rgba(25,118,210,.1)}.capibara .container-tl.extended-right .container-tl .plot-container .plot-vertical{height:calc(100vh - var(--header-height) + var(--ex-header-height) + var(--header-top-height))}.capibara .container-tl footer{width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;bottom:0;min-width:100%;height:var(--item-height);position:-webkit-sticky;position:sticky;z-index:2;box-sizing:border-box}.capibara .container-tl footer .footer-container{position:relative;padding-left:calc(var(--nav-width) + var(--initial-nav-width) + var(--ex-nav-width) + var(--btn-nav-width));box-sizing:border-box;min-width:100%;display:flex}.capibara .container-tl footer .footer-container .footer-item{padding:10px 2px;width:var(--day-width);cursor:default;border-left:1px solid rgba(0,0,0,.1);box-sizing:border-box;height:var(--item-height);text-align:center}.capibara .container-tl footer{background:#78909c;color:#fff}.capibara .container-tl.dark-theme footer{background:#313b50;color:#f0f0f0}.capibara .container-tl .table{position:absolute;left:calc(var(--nav-width) + var(--initial-nav-width) + var(--ex-nav-width) + var(--btn-nav-width));top:var(--header-height);width:calc(100% - var(--nav-width) - var(--initial-nav-width) - var(--ex-nav-width) - var(--btn-nav-width));max-height:calc(100% - var(--header-height));margin-top:-1px}.capibara .container-tl .table .day-mouse-over{position:absolute;left:0;top:0;width:var(--day-width);height:var(--item-height);border:3px solid rgba(245,124,0,.5);box-shadow:0 0 2px #f57c00,inset 0 0 3px #f57c00;transition:transform .1s ease;overflow:visible}.capibara .container-tl .table .day-mouse-over:after,.capibara .container-tl .table .day-mouse-over:before{position:absolute;background:rgba(245,124,0,.1);content:\\\"\\\";display:block}.capibara .container-tl .table .day-mouse-over:after{width:var(--day-width);height:100vh;right:-4px;bottom:calc(var(--item-height) - 2px)}.capibara .container-tl .table .day-mouse-over:before{height:var(--item-height);width:100vw;right:calc(var(--day-width) - 2px);bottom:-4px}.capibara .container-tl .table .background-grid{width:calc(var(--day-width)*20);height:calc(var(--item-height)*20);position:absolute;left:0;top:1px;background-repeat:repeat;background-size:var(--day-width) var(--item-height),calc(var(--day-width)*7) var(--item-height),calc(var(--day-width)*7) var(--item-height);background-image:linear-gradient(90deg,rgba(80,80,80,.3) 1px,transparent 0),linear-gradient(0deg,rgba(80,80,80,.3) 1px,transparent 0),linear-gradient(90deg,transparent calc(var(--day-width)*5),rgba(80,80,80,.1) 0);background-position:0 0,0 0,0 0}.capibara .container-tl .table .draw-box{position:relative}.capibara .container-tl .table .draw-box canvas{position:absolute;left:0;top:0}.capibara.header-extended .container-tl .table{top:calc(var(--header-height) + var(--ex-header-height))}.capibara .select-container{overflow:visible;position:absolute;left:0;top:0;width:0;height:0}.capibara .select-container .selected-day{width:var(--day-width);height:var(--item-height);position:absolute;background:hsla(0,0%,74.1%,.4);box-shadow:inset 0 0 5px hsla(0,0%,74.1%,.8)}.capibara .select-container .selected-day[selected-index]:after{content:attr(selected-index);display:block;position:absolute;left:-2px;top:-2px;background:red;font-size:.75em;color:#fff;width:1.3em;height:1.3em;border-radius:50%;border:1px solid #00f;z-index:2;text-align:center;font-weight:700}.capibara .detail-day{min-height:50px;min-width:250px;max-width:300px;border:1px solid grey;padding:1em;display:flex;flex-flow:column nowrap;margin:0 0 0 1em;box-sizing:border-box;box-shadow:0 6px 6px -3px rgba(0,0,0,.2),0 10px 14px 1px rgba(0,0,0,.14),0 4px 18px 3px rgba(0,0,0,.12);position:absolute;border-radius:5px;transition:all .3s ease;transform:translateY(calc(var(--item-height)/2*-1));z-index:4;opacity:1}.capibara .detail-day:after{content:\\\"\\\";background:inherit;width:20px;height:20px;display:block;position:absolute;left:-11px;top:calc(var(--item-height)/2 + 7px);transform:rotate(45deg);border-color:grey;border-style:solid;border-width:0 0 1px 1px}.capibara .detail-day.dd-hide{display:none}.capibara .detail-day.has-right-arrow{margin:0 16px 0 0;transform:translateX(calc(-100% - 20px - var(--day-width))) translateY(calc(var(--item-height)/2*-1))}.capibara .detail-day.has-right-arrow:after{border-width:1px 1px 0 0;left:unset;right:-11px}.capibara .detail-day.has-ceil-arrow{transform:translateY(-7px)}.capibara .detail-day.has-ceil-arrow:after{top:6px}.capibara .detail-day.has-ceil-arrow.has-right-arrow{transform:translateX(calc(-100% - 20px - var(--day-width))) translateY(-7px)}.capibara .detail-day.has-ceil-arrow.has-right-arrow:after{left:unset;right:-11px}.capibara .detail-day.has-middle-arrow{transform:translateY(calc(-50% + var(--item-height)/2))}.capibara .detail-day.has-middle-arrow:after{top:calc(50% - 10px)}.capibara .detail-day.has-middle-arrow.has-right-arrow{transform:translateX(calc(-100% - 20px - var(--day-width))) translateY(calc(-50% + var(--item-height)/2))}.capibara .detail-day.has-middle-arrow.has-right-arrow:after{left:unset;right:-11px}.capibara .detail-day.has-bottom-arrow{transform:translateY(calc(-100% + var(--item-height)))}.capibara .detail-day.has-bottom-arrow:after{top:unset;bottom:4px}.capibara .detail-day.has-bottom-arrow.has-right-arrow{transform:translateX(calc(-100% - 20px - var(--day-width))) translateY(calc(-100% + var(--item-height)))}.capibara .detail-day.has-bottom-arrow.has-right-arrow:after{left:unset;right:-11px}.capibara .detail-day .header-detail .title{font-size:1.25em;font-weight:700;margin-bottom:.5em;min-width:10em;max-width:20em}.capibara .detail-day .header-detail .subtitle{font-size:.875em;margin-bottom:8px;min-width:10em}.capibara .detail-day .list-detail{margin:0;flex:0 0 auto}.capibara .detail-day .list-detail.list .item-detail{margin:0;font-size:.875em;position:relative;padding:.5em .5em .5em 1em;border-radius:0;box-sizing:border-box;overflow:hidden;background:transparent;border:unset;border-top:1px solid rgba(0,0,0,.1);display:flex;flex-direction:row}.capibara .detail-day .list-detail.list .item-detail .left-icon{width:8px;height:8px;min-height:unset!important;left:1px;top:10px;border-radius:50%}.capibara .detail-day .list-detail.list .item-detail .left-icon.diamond{border-radius:0;transform:rotate(45deg) skew(10deg,10deg)}.capibara .detail-day .list-detail.list .item-detail .left-icon.outlined{background:transparent}.capibara .detail-day .list-detail.list .item-detail .name{flex:1 1 40%;font-weight:700;margin-bottom:0;margin-right:1em}.capibara .detail-day .list-detail.list .item-detail .item-description{flex:1 1 60%;text-align:right}.capibara .detail-day .list-detail.list .item-detail .item-description .desc{position:flex;flex-direction:row}.capibara .detail-day .list-detail.list .item-detail .item-description .desc .label{display:inline-block;min-width:36px;font-weight:700;text-align:right;margin-right:.5em}.capibara .detail-day .list-detail.flex{display:flex;flex-flow:row wrap;align-content:flex-start;display:inline-flex;flex-flow:wrap;-ms-writing-mode:tb-lr;writing-mode:vertical-lr;max-height:25%}.capibara .detail-day .list-detail.flex .item-detail{flex:0 0 auto;min-width:8em;-ms-writing-mode:lr-tb;writing-mode:horizontal-tb}.capibara .detail-day .list-detail.column{-moz-columns:7em 3;columns:7em 3;min-width:30em}.capibara .detail-day .list-detail.column .item-detail{display:inline-block;width:100%}.capibara .detail-day .list-detail .item-detail{margin:4px;position:relative;padding:.5em 1em;border-radius:6px;box-sizing:border-box;overflow:hidden}.capibara .detail-day .list-detail .item-detail .name{font-weight:700;margin-bottom:.5em}.capibara .detail-day .list-detail .item-detail .item-description .desc .label{display:inline-block;min-width:36px;font-weight:700}.capibara .detail-day .list-detail .item-detail .left-icon{width:6px;min-height:10px;height:100%;position:absolute;left:0;top:0}.capibara .detail-day .elements-detail{padding:.5em 0 .25em;display:flex;flex-wrap:wrap}.capibara .detail-day .elements-detail .name{flex:1 0 100%;font-weight:700}.capibara .detail-day .elements-detail .elements-list{margin:4px -4px}.capibara .detail-day .elements-detail .elements-list .element-detail{display:inline-block;padding:.25em .875em;border-radius:3px;color:#fff;margin:.25em}.capibara .detail-day .alert{padding:.5em 0 .25em 2em;position:relative;min-width:15em;min-width:10em;max-width:30em}.capibara .detail-day .alert .alert-icon{max-width:2em;font-size:1.75em;position:absolute;left:0;top:.5em;color:grey}.capibara .detail-day .alert .red{color:#f44336}.capibara .detail-day .msj-container{margin:.5em -1em -1em;border:1px solid grey;z-index:2}.capibara .detail-day .msj-container .msj{min-width:10em;max-width:30em;margin:0 0 .5em;padding:14px;font-size:.875em}.capibara .detail-day .msj-container .msj-detail{display:flex;flex-direction:column;padding:.25em .5em}.capibara .detail-day .msj-container .msj-detail .email{font-size:.875em;font-style:italic;opacity:.5}.capibara .detail-day .msj-container .msj-detail .date{font-size:.725em}.capibara .detail-day{background:#fff}.capibara .detail-day,.capibara .detail-day .list-detail.list .item-detail,.capibara .detail-day:after{border-color:rgba(0,0,0,.2)}.capibara .detail-day .elements-detail .elements-list .element-detail{background:rgba(55,71,79,.8)}.capibara .detail-day .msj-container{background:#ffecb3;border-color:#ffca28}.capibara .detail-day .msj-container .msj-detail{background:#ffe082;border-color:#ffca28}.capibara.dark-theme .detail-day{border-color:#404e69;background:#222837}.capibara.dark-theme .detail-day:after{border-color:#404e69}.capibara.dark-theme .detail-day .list-detail .item-detail{background:transparent!important}.capibara.dark-theme .detail-day .list-detail.list .item-detail{border-color:#404e69}.capibara.dark-theme .detail-day .elements-detail .elements-list .element-detail{background:#293243}.capibara.dark-theme .detail-day .msj-container{background:#293243;border-color:rgba(251,192,45,.4)}.capibara.dark-theme .detail-day .msj-container .msj-detail{background:rgba(251,192,45,.1)}.capibara .cap-context-menu-container{position:absolute;left:0;top:0;z-index:10}.capibara .cap-context-menu-container.cm-hide .cap-context-menu{visibility:hidden;opacity:0}.capibara .cap-context-menu-container .cap-context-menu{position:absolute;min-width:150px;z-index:2;border-radius:3px;border:1px solid grey;box-shadow:0 3px 5px -1px rgba(0,0,0,.2),0 6px 10px 0 rgba(0,0,0,.14),0 1px 18px 0 rgba(0,0,0,.12);font-size:.75em;transition:all .1s linear;visibility:visible;opacity:1;padding:.4em 0}.capibara .cap-context-menu-container .cap-context-menu--item{padding:.5em 1em}.capibara .cap-context-menu-container .cap-context-menu--item:hover{background:rgba(20,20,20,.2)}.capibara .cap-context-menu-container .cap-context-menu--item.is-disabled{opacity:.5}.capibara .cap-context-menu-container .cap-context-menu{border-color:rgba(0,0,0,.2);background:#fff}.capibara.dark-theme .cap-context-menu-container .cap-context-menu{border-color:#404e69;background:#222837}.capibara .hour-input{border:1px solid grey;border-radius:3px;display:flex;justify-content:center;align-items:center;height:24px;margin:8px 4px;overflow:hidden}.capibara .hour-input input{width:50%;height:inherit;border:1px solid transparent;background:transparent;font-size:.875em}.capibara .hour-input input:active,.capibara .hour-input input:focus{border:1px solid rgba(0,0,0,.1)}.capibara .hour-input span{width:8px;text-align:center}.capibara .hour-input .hh{text-align:right}.capibara .time{border-radius:6px;display:inline-block;font-size:0}.capibara .time .symbol{display:inline-block;height:auto;width:20px;font-size:2rem;text-align:center;vertical-align:center}.capibara .time input{border-radius:6px;border:2px solid transparent;width:52px;text-align:center;font-size:2rem;position:relative;transition:all .1s ease;outline:none;background:transparent;padding:6px}.capibara .time input:active,.capibara .time input:focus{transform:scale(1.03)}.capibara .input-box{margin:0 16px;min-height:180px;border:2px solid grey;border-radius:6px;overflow-y:scroll;padding-bottom:60px}.capibara .input-box .mini-input-section{padding:8px 16px;text-align:left;width:100%;position:relative}.capibara .input-box .mini-input-section:nth-child(odd){background:hsla(0,0%,39.2%,.1)}.capibara .input-box .mini-input-section--tooltip{position:absolute;left:0;top:1.5em;display:none;padding:.5em;margin:1em;color:#000;border-radius:3px;z-index:2;box-shadow:0 2px 5px rgba(0,0,0,.3)}.capibara .input-box .mini-input-section--icon{display:inline-block;width:.75em;height:.75em;border-radius:50%;background:grey;box-shadow:0 1px 3px rgba(0,0,0,.3);margin:0 .25em 0 0}.capibara .input-box .mini-input-section:hover .mini-input-section--tooltip{display:block}.capibara .input-box .mini-input-section input{text-align:center;width:60px;margin-right:.5em;border:1px solid grey;border-radius:3px;background:hsla(0,0%,100%,.2);font-size:1em}.capibara .input-box .mini-input-section input:active,.capibara .input-box .mini-input-section input:focus{background:hsla(0,0%,100%,.8)}.capibara .input-section{margin:16px}.capibara .input-section-flex{display:flex;flex-wrap:wrap}.capibara .input-section .text-subtitle{flex:1 1 100%}.capibara .input-section input.nav-input{border:2px solid hsla(0,0%,50.2%,.7);border-radius:6px;width:50%;min-width:130px;font-size:2em;text-align:center;padding:3px 6px;background:transparent;outline:none;transition:all .1s ease}.capibara .input-section input.nav-input:active,.capibara .input-section input.nav-input:focus{border:2px solid grey;box-shadow:0 4px 6px hsla(0,0%,50.2%,.2)}.capibara .input-section .input-section-col{width:auto;position:relative;flex:1 1 10%}.capibara .input-section .input-section-col input.nav-input{min-width:unset;width:calc(100% - 1rem);max-width:7rem}.capibara .input-section.msj-input-container textarea.msj{outline:none;border-radius:6px;border:2px solid grey;width:100%;min-width:100%;max-width:100%;min-height:100px;transition:all .1s ease;padding:8px;box-sizing:border-box}.capibara .input-section.msj-input-container textarea.msj:active,.capibara .input-section.msj-input-container textarea.msj:focus{box-shadow:0 4px 6px rgba(255,160,0,.2)}.capibara .input-section input[type=checkbox]{width:18px;height:18px;vertical-align:middle}.capibara .time{border:2px solid rgba(0,128,0,.7);color:green}.capibara .time .symbol,.capibara .time input{color:#37474f}.capibara .time input:active,.capibara .time input:focus{border-color:green;box-shadow:0 4px 6px rgba(0,128,0,.2)}.capibara .input-box{color:#37474f;border:2px solid green}.capibara .input-box .mini-input-section input:active,.capibara .input-box .mini-input-section input:focus{background:#fafafa}.capibara .input-box .mini-input-section--tooltip{background:#fafafa;color:#37474f;border:1px solid #37474f}.capibara .input-section input.nav-input{color:#37474f;border:2px solid rgba(0,128,0,.7)}.capibara .input-section input.nav-input:active,.capibara .input-section input.nav-input:focus{border:2px solid green;box-shadow:0 4px 6px rgba(0,128,0,.2)}.capibara .input-section.msj-input-container textarea.msj{background:rgba(255,249,196,.6);border:2px solid rgba(0,0,0,.4)}.capibara .input-section.msj-input-container textarea.msj:active,.capibara .input-section.msj-input-container textarea.msj:focus{background:rgba(255,249,196,.8);box-shadow:0 4px 6px transparent}.capibara.dark-theme .time{border:2px solid rgba(64,78,105,.7);color:#404e69}.capibara.dark-theme .time .symbol,.capibara.dark-theme .time input{color:#f0f0f0}.capibara.dark-theme .time input:active,.capibara.dark-theme .time input:focus{border-color:#404e69;box-shadow:0 4px 6px rgba(64,78,105,.2)}.capibara.dark-theme .input-box{color:#f0f0f0;border:2px solid #404e69}.capibara.dark-theme .input-box .mini-input-section input{background:#404e69;color:#f0f0f0}.capibara.dark-theme .input-box .mini-input-section input:active,.capibara.dark-theme .input-box .mini-input-section input:focus{background:#222837}.capibara.dark-theme .input-box .mini-input-section--tooltip{background:#222837;color:#f0f0f0;border:1px solid #f0f0f0}.capibara.dark-theme .input-section input.nav-input{color:#f0f0f0;border:2px solid rgba(64,78,105,.7)}.capibara.dark-theme .input-section input.nav-input:active,.capibara.dark-theme .input-section input.nav-input:focus{border:2px solid #404e69;box-shadow:0 4px 6px rgba(64,78,105,.2)}.capibara.dark-theme .input-section.msj-input-container textarea.msj{background:rgba(251,192,45,.1);border:2px solid #9e9e9e;color:#f0f0f0}.capibara.dark-theme .input-section.msj-input-container textarea.msj:active,.capibara.dark-theme .input-section.msj-input-container textarea.msj:focus{background:rgba(251,192,45,.3);box-shadow:0 4px 6px hsla(0,0%,62%,.2)}.capibara button{outline:none}.capibara button.rotate .mdi:before,.capibara button.rotate svg{transform:rotate(180deg)}.capibara .btn-raised{background:grey}.capibara .btn-outline,.capibara .btn-raised{cursor:pointer;padding:8px 16px;margin:0 8px;border-radius:6px;border:2px solid grey;font-weight:700}.capibara .btn-outline{color:grey}.capibara .btn-icon{display:inline-block;height:32px;width:32px;outline:none;cursor:pointer;vertical-align:middle;margin-right:16px;margin-top:4px;background:transparent;border:none;padding:0;font-size:18px;color:grey;border-radius:50%}.capibara .btn-icon svg{fill:grey}.capibara .btn-icon.btn-icon-raised{background:#fff;border:none}.capibara .btn-icon.btn-icon-outline{border:1px solid grey}.capibara .btn-icon.btn-toggle-sidebar{position:absolute;right:10px;top:10px;z-index:2;margin:0}.capibara .btn-icon .mdi{font-size:24px}.capibara .btn-icon .loading-icon,.capibara .btn-icon.loading>:not(.loading-icon){display:none}.capibara .btn-icon.loading .loading-icon{display:unset}.capibara .btn-shape{display:inline-block;width:24px;height:24px;outline:none;cursor:pointer;vertical-align:middle;margin:4px;background:transparent;border:none;padding:0;font-size:14px}.capibara .btn-shape .mdi{font-size:24px}.capibara .btn-shape.btn-circle{position:relative;border:none;padding:0}.capibara .btn-shape.btn-circle:before{content:\\\"\\\";display:block;position:absolute;left:2px;top:2px;border-radius:50%;background:grey;width:22px;height:22px}.capibara .btn-shape.btn-circle span{position:absolute;left:1px;top:6px;width:100%;display:inline-block;color:#fff;text-align:center}.capibara .btn-shape.btn-circle-outline{position:relative;border:none;padding:0}.capibara .btn-shape.btn-circle-outline:before{content:\\\"\\\";display:block;position:absolute;left:2px;top:3px;border-radius:50%;border:2px solid grey;width:22px;height:22px}.capibara .btn-shape.btn-circle-outline span{position:absolute;left:1px;top:6px;width:100%;display:inline-block;color:grey;text-align:center}.capibara .btn-shape.btn-drop{position:relative;border:none;padding:0}.capibara .btn-shape.btn-drop:before{content:\\\"\\\";display:block;position:absolute;left:4px;top:0;border-radius:0 50% 50% 50%;background:grey;width:20px;height:20px;transform:translate(-2px,4px) rotate(45deg)}.capibara .btn-shape.btn-drop span{position:absolute;left:0;top:6px;width:100%;display:inline-block;color:#fff;text-align:center}.capibara.extended-right [toggle-sidebar-right] svg,.capibara.header-extended [toggle-header] svg{transform:rotate(180deg)}.capibara .btn-raised{background:#00f;border:2px solid #00f;color:#fff}.capibara .btn-outline{background:transparent;border:2px solid #00f;color:#00f}.capibara .btn-shape{color:#37474f}.capibara .btn-shape.btn-circle,.capibara .btn-shape.btn-drop{color:#fff}.capibara .btn-shape.btn-circle:before,.capibara .btn-shape.btn-drop:before{background:#388e3c}.capibara .btn-shape.btn-circle-outline:before{border-color:#388e3c}.capibara .btn-icon,.capibara .btn-shape.btn-circle-outline span{color:#37474f}.capibara .btn-icon.btn-icon-raised{background:rgba(84,110,122,.1);border-color:#546e7a;color:#546e7a}.capibara .btn-icon.btn-icon-raised:active{background:#546e7a}.capibara .btn-icon.btn-icon-raised:focus,.capibara .btn-icon.btn-icon-raised:hover{background:rgba(84,110,122,.3)}.capibara .btn-icon.btn-icon-outline{background:transparent;border-color:#546e7a;color:#546e7a}.capibara .btn-icon.btn-icon-outline:active{background:rgba(84,110,122,.3)}.capibara .btn-icon.btn-icon-outline:focus,.capibara .btn-icon.btn-icon-outline:hover{background:rgba(84,110,122,.1)}.capibara.dark-theme .btn-raised{background:#404e69;border:2px solid #f0f0f0;color:#f0f0f0}.capibara.dark-theme .btn-outline{background:transparent;border:2px solid #f0f0f0;color:#f0f0f0}.capibara.dark-theme .btn-shape,.capibara.dark-theme .btn-shape.btn-circle,.capibara.dark-theme .btn-shape.btn-drop{color:hsla(0,0%,94.1%,.8)}.capibara.dark-theme .btn-shape.btn-circle:before,.capibara.dark-theme .btn-shape.btn-drop:before{background:#2e7d32}.capibara.dark-theme .btn-shape.btn-circle-outline:before{border-color:#2e7d32}.capibara.dark-theme .btn-icon,.capibara.dark-theme .btn-shape.btn-circle-outline span{color:hsla(0,0%,94.1%,.8)}.capibara.dark-theme .btn-icon.btn-icon-raised{background:hsla(0,0%,94.1%,.1);border-color:hsla(0,0%,94.1%,.8);color:hsla(0,0%,94.1%,.8)}.capibara.dark-theme .btn-icon.btn-icon-raised:active{background:#f0f0f0}.capibara.dark-theme .btn-icon.btn-icon-raised:focus,.capibara.dark-theme .btn-icon.btn-icon-raised:hover{background:hsla(0,0%,94.1%,.3)}.capibara.dark-theme .btn-icon.btn-icon-outline{background:transparent;border-color:hsla(0,0%,94.1%,.8);color:hsla(0,0%,94.1%,.8)}.capibara.dark-theme .btn-icon.btn-icon-outline:active{background:hsla(0,0%,94.1%,.1)}.capibara.dark-theme .btn-icon.btn-icon-outline:focus,.capibara.dark-theme .btn-icon.btn-icon-outline:hover{background:hsla(0,0%,94.1%,0)}.capibara [cap-tooltip]{position:relative;display:inline-block}.capibara [cap-tooltip]:hover:before{padding:8px;opacity:1;border-width:1px;height:auto}.capibara [cap-tooltip]:before{opacity:.3;height:0;padding:0 8px;text-align:left;overflow:hidden;font-size:14px;font-weight:400;position:absolute;top:calc(100% + 18px);left:50%;transform:translatex(-50%);background-color:rgba(0,0,0,.7);border:0 solid #000;border-radius:5px;color:#fff;content:attr(cap-tooltip);text-transform:none;transition:all .2s ease;min-width:100px;z-index:5}.capibara .float-box-container{overflow:visible;position:absolute;left:0;top:0;width:0;height:0}.capibara .float-box-container .float-box{width:var(--day-width);max-width:var(--day-width);min-width:var(--day-width);height:var(--item-height);max-height:var(--item-height);min-height:var(--item-height);position:absolute;overflow:hidden;cursor:default}.capibara .float-box-container .float-box.has-message:after{content:\\\"\\\";display:block;position:absolute;width:0;height:0;right:0;top:0;border-color:#000 #000 transparent transparent;border-style:solid;border-width:6px;-webkit-animation:pulseMessage 1s infinite alternate;animation:pulseMessage 1s infinite alternate}.capibara .float-box-container .float-box.has-errors:before{content:\\\"\\\";display:block;position:absolute;width:7px;height:7px;left:1px;top:1px;border-radius:50%;-webkit-animation:pulseBackground 1s infinite alternate;animation:pulseBackground 1s infinite alternate}.capibara .float-box-container .float-box .dot-container-bottom,.capibara .float-box-container .float-box .dot-container-middle,.capibara .float-box-container .float-box .dot-container-top{position:absolute;left:0;width:100%;overflow:visible;height:0;display:flex;justify-content:center}.capibara .float-box-container .float-box .dot-container-top{top:1px}.capibara .float-box-container .float-box .dot-container-top .dot{border-radius:0 0 50% 50%}.capibara .float-box-container .float-box .dot-container-middle{top:calc(50% - 4px)}.capibara .float-box-container .float-box .dot-container-bottom{bottom:5px}.capibara .float-box-container .float-box .dot-container-bottom .dot{border-radius:0 0 50% 50%}.capibara .float-box-container .float-box .dot{width:8px;min-width:8px;height:8px;border-radius:50%;background:#0ff;margin:1px;vertical-align:middle;border:1px solid hsla(0,0%,100%,.8);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.capibara .float-box-container .float-box .dot.diamond{border-radius:0;transform:rotate(45deg) skew(10deg,10deg)}.capibara .float-box-container .float-box .dot.outlined{background-color:transparent}.capibara .float-box-container .float-box span.data{width:100%;display:block;font-size:.875em;text-align:center;box-sizing:border-box;height:calc(var(--item-height)/2);line-height:calc(var(--item-height)/2);margin-bottom:2px;font-weight:700;box-shadow:inset 0 0 10px hsla(0,0%,100%,.2);border-radius:3px;color:#fff}.capibara .float-box-container .float-box span.data:not(.shape-outlined){border:1px solid hsla(0,0%,100%,.2)}.capibara .float-box-container .float-box span.data.shape-outlined{background:transparent;border:2px solid grey;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.capibara .float-box-container .float-box span.data.shape-bar{height:calc(var(--item-height)/4);line-height:calc(var(--item-height)/4 + 1);color:transparent;border-radius:1px;border:1px solid #fff;margin:0 0 -1px}.capibara .float-box-container .float-box span.data.shape-bar-outlined{height:calc(var(--item-height)/4);line-height:0;color:transparent;border-radius:1px;margin:0 0 -1px;border:2px solid grey;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.capibara .float-box-container .float-box span.data.shape-bar{border-color:#fff}.capibara.dark-theme .float-box-container .float-box span.data.shape-bar{border-color:#313b50}.capibara .progress-bar{width:100%;height:4px;background-color:hsla(0,0%,86.7%,.2);overflow:hidden;position:absolute;left:0;bottom:0;transition:height 1s ease}.capibara .progress-bar.hide-progress{height:0}.capibara .progress-bar:before{-webkit-animation-name:loading-fast1;animation-name:loading-fast1;-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}.capibara .progress-bar:after,.capibara .progress-bar:before{content:\\\"\\\";position:absolute;transform:translateX(-100%);width:62.5%;height:100%;background-color:#292929;-webkit-animation-duration:2s;animation-duration:2s}.capibara .progress-bar:after{-webkit-animation-name:loading-fast2;animation-name:loading-fast2;-webkit-animation-delay:1.3s;animation-delay:1.3s;-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}span.mdi{min-width:14px;min-height:14px;display:inline-block}span.mdi.mdi-subdirectory-arrow-right{color:rgba(0,0,0,.2)}.capibara .light{display:block;width:18px;height:18px;flex:0 0 18px;border-radius:50%;margin:12px 8px;border:2px solid rgba(0,0,0,.3);border-color:hsla(0,0%,100%,.8)}.capibara .light.red-light{background:#d32f2f}.capibara .light.yellow-light{background:#fdd835}.capibara .light.green-light{background:#2e7d32}.capibara.dark-theme .light{border-color:#404e69}.capibara.dark-theme .light.red-light{background:#b71c1c}.capibara.dark-theme .light.yellow-light{background:#fb8c00}.capibara.dark-theme .light.green-light{background:#388e3c}.capibara select.tabs-select{background:grey;color:#fff;font-size:16px;outline:none;width:100px;padding:3px 18px;font-weight:700;border:1px solid transparent;margin:8px;border-radius:30px;transition:background .2s ease;-webkit-appearance:none;-moz-appearance:none;appearance:none}.capibara select.tabs-select option{color:grey;background:#fff;padding:15px}.capibara select.tabs-select:after{content:\\\"\\\";display:block;position:absolute;right:10px;top:4px;border-width:4px;border-color:#fff;z-index:2}.capibara select.tabs-select.disabled{color:grey}.capibara select.tabs-select:hover{border-color:grey}\", \"\"]);\n// Exports\nmodule.exports = exports;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9zcmMvaW5kZXguanMhLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9zcmMvc2Nzcy9zdHlsZS5zY3NzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQ2FwaWJhcmEvLi9zcmMvc2Nzcy9zdHlsZS5zY3NzPzQxM2YiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gSW1wb3J0c1xudmFyIF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyA9IHJlcXVpcmUoXCIuLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCIpO1xuZXhwb3J0cyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhmYWxzZSk7XG5leHBvcnRzLnB1c2goW21vZHVsZS5pZCwgXCJAaW1wb3J0IHVybChodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2NzczI/ZmFtaWx5PVJvYm90bzppdGFsLHdnaHRAMCwzMDA7MCw0MDA7MCw1MDA7MCw3MDA7MCw5MDA7MSwzMDA7MSw0MDA7MSw1MDA7MSw3MDA7MSw5MDAmZGlzcGxheT1zd2FwKTtcIl0pO1xuLy8gTW9kdWxlXG5leHBvcnRzLnB1c2goW21vZHVsZS5pZCwgXCI6cm9vdHstLWhlYWRlci10b3AtaGVpZ2h0OjQwcHg7LS1oZWFkZXItaGVpZ2h0Ojk4cHg7LS1oZWFkZXItbGFiZWxzLWhlaWdodDo1MHB4Oy0taGVhZGVyLWRheS1oZWlnaHQ6MjRweDstLWV4LWhlYWRlci1oZWlnaHQ6MTEwcHg7LS1oZWFkZXItaW5wdXQtaGVpZ2h0OjIwcHg7LS1uYXYtd2lkdGg6MjAwcHg7LS1uYXYtaXRlbS1jb2wtd2lkdGg6NjBweDstLWluaXRpYWwtbmF2LXdpZHRoOjBweDstLWV4LW5hdi13aWR0aDowcHg7LS1idG4tbmF2LXdpZHRoOjExN3B4Oy0tbmF2LXJpZ2h0LXdpZHRoOjMwMHB4Oy0taXRlbS1taW4td2lkdGg6MTAwcHg7LS1pdGVtLWhlaWdodDo0NXB4Oy0tZGF5LXdpZHRoOjQ1cHg7LS1mb250LXNpemU6MTZweH1ALXdlYmtpdC1rZXlmcmFtZXMgcHVsc2VNZXNzYWdlezAle2JvcmRlci1jb2xvcjpyZ2JhKDIxMSw0Nyw0NywuMykgcmdiYSgyMTEsNDcsNDcsLjMpIHRyYW5zcGFyZW50IHRyYW5zcGFyZW50fXRve2JvcmRlci1jb2xvcjojZDMyZjJmICNkMzJmMmYgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnR9fUBrZXlmcmFtZXMgcHVsc2VNZXNzYWdlezAle2JvcmRlci1jb2xvcjpyZ2JhKDIxMSw0Nyw0NywuMykgcmdiYSgyMTEsNDcsNDcsLjMpIHRyYW5zcGFyZW50IHRyYW5zcGFyZW50fXRve2JvcmRlci1jb2xvcjojZDMyZjJmICNkMzJmMmYgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnR9fUAtd2Via2l0LWtleWZyYW1lcyBwdWxzZUJhY2tncm91bmR7MCV7YmFja2dyb3VuZDpyZ2JhKDIxMSw0Nyw0NywuMyl9dG97YmFja2dyb3VuZDojZDMyZjJmfX1Aa2V5ZnJhbWVzIHB1bHNlQmFja2dyb3VuZHswJXtiYWNrZ3JvdW5kOnJnYmEoMjExLDQ3LDQ3LC4zKX10b3tiYWNrZ3JvdW5kOiNkMzJmMmZ9fUAtd2Via2l0LWtleWZyYW1lcyBsb2FkaW5nLWZhc3QxezAle3RyYW5zZm9ybTp0cmFuc2xhdGVYKC0xMDAlKX00MCV7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTEwMCUpfXRve3RyYW5zZm9ybTp0cmFuc2xhdGVYKDIwMCUpfX1Aa2V5ZnJhbWVzIGxvYWRpbmctZmFzdDF7MCV7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTEwMCUpfTQwJXt0cmFuc2Zvcm06dHJhbnNsYXRlWCgtMTAwJSl9dG97dHJhbnNmb3JtOnRyYW5zbGF0ZVgoMjAwJSl9fUAtd2Via2l0LWtleWZyYW1lcyBsb2FkaW5nLWZhc3QyezAle3RyYW5zZm9ybTp0cmFuc2xhdGVYKC0xMDAlKX0xNSV7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTEwMCUpfXRve3RyYW5zZm9ybTp0cmFuc2xhdGVYKDIwMCUpfX1Aa2V5ZnJhbWVzIGxvYWRpbmctZmFzdDJ7MCV7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTEwMCUpfTE1JXt0cmFuc2Zvcm06dHJhbnNsYXRlWCgtMTAwJSl9dG97dHJhbnNmb3JtOnRyYW5zbGF0ZVgoMjAwJSl9fS5jYXBpYmFyYS5jLXJlZDpub3QoLmRhcmstdGhlbWUpIDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWJ7YmFja2dyb3VuZDojZGY1NTRifS5jYXBpYmFyYS5jLXJlZDpub3QoLmRhcmstdGhlbWUpIC5oZWFkZXItdG9we2JhY2tncm91bmQ6I2ZkZmFmOX0uY2FwaWJhcmEuYy1yZWQ6bm90KC5kYXJrLXRoZW1lKSAuY29ybmVye2JhY2tncm91bmQ6I2ZkZmFmOTtib3JkZXItY29sb3I6I2Y5OWQ5N30uY2FwaWJhcmEuYy1yZWQ6bm90KC5kYXJrLXRoZW1lKSAuY29udGFpbmVyLXRsIGhlYWRlcntiYWNrZ3JvdW5kOiNmZGZhZjk7Ym9yZGVyLWJvdHRvbS1jb2xvcjojZjk5ZDk3fS5jYXBpYmFyYS5jLXJlZDpub3QoLmRhcmstdGhlbWUpIC5jb250YWluZXItdGwgaGVhZGVyIC5tZXMubWVzLXJlZHVjZWQ6YWZ0ZXJ7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoOTBkZWcsdHJhbnNwYXJlbnQsI2ZmZjhmNykhaW1wb3J0YW50fS5jYXBpYmFyYS5jLXJlZDpub3QoLmRhcmstdGhlbWUpIG5hdi5yaWdodHtib3JkZXItY29sb3I6I2Y5OWQ5N30uY2FwaWJhcmEuYy1yZWQuZGFyay10aGVtZSAuaGVhZGVyLXRvcCwuY2FwaWJhcmEuYy1yZWQuZGFyay10aGVtZSBuYXYucmlnaHR7Ym9yZGVyLWNvbG9yOiNiYTE2MGF9LmNhcGliYXJhLmMtcmVkLmRhcmstdGhlbWUgLmNvbnRhaW5lci10bCBoZWFkZXIsLmNhcGliYXJhLmMtcmVkLmRhcmstdGhlbWUgLmNvcm5lcntib3JkZXItYm90dG9tLWNvbG9yOiNiYTE2MGF9LmNhcGliYXJhLmMtcmVkLmRhcmstdGhlbWUgLnByb2dyZXNzLWJhciwuY2FwaWJhcmEuYy1yZWQgLnByb2dyZXNzLWJhcntiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjQ0LDY3LDU0LC4yKSFpbXBvcnRhbnR9LmNhcGliYXJhLmMtcmVkLmRhcmstdGhlbWUgLnByb2dyZXNzLWJhcjphZnRlciwuY2FwaWJhcmEuYy1yZWQuZGFyay10aGVtZSAucHJvZ3Jlc3MtYmFyOmJlZm9yZSwuY2FwaWJhcmEuYy1yZWQgLnByb2dyZXNzLWJhcjphZnRlciwuY2FwaWJhcmEuYy1yZWQgLnByb2dyZXNzLWJhcjpiZWZvcmV7YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2IWltcG9ydGFudH0uY2FwaWJhcmEuYy1yZWQuZGFyay10aGVtZSBzZWxlY3QudGFicy1zZWxlY3QsLmNhcGliYXJhLmMtcmVkIHNlbGVjdC50YWJzLXNlbGVjdHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjQ0LDY3LDU0LC43KSFpbXBvcnRhbnQ7Ym9yZGVyLWNvbG9yOiNmNDQzMzYhaW1wb3J0YW50fS5jYXBpYmFyYS5jLXJlZC5kYXJrLXRoZW1lIC50aW1lLC5jYXBpYmFyYS5jLXJlZCAudGltZXtib3JkZXItY29sb3I6cmdiYSgyNDQsNjcsNTQsLjYpfS5jYXBpYmFyYS5jLXJlZC5kYXJrLXRoZW1lIC50aW1lIC5zeW1ib2wsLmNhcGliYXJhLmMtcmVkIC50aW1lIC5zeW1ib2x7Y29sb3I6I2Y0NDMzNn0uY2FwaWJhcmEuYy1yZWQuZGFyay10aGVtZSAudGltZSBpbnB1dDphY3RpdmUsLmNhcGliYXJhLmMtcmVkLmRhcmstdGhlbWUgLnRpbWUgaW5wdXQ6Zm9jdXMsLmNhcGliYXJhLmMtcmVkIC50aW1lIGlucHV0OmFjdGl2ZSwuY2FwaWJhcmEuYy1yZWQgLnRpbWUgaW5wdXQ6Zm9jdXN7Ym9yZGVyLWNvbG9yOiNmNDQzMzY7Ym94LXNoYWRvdzowIDRweCA2cHggcmdiYSgyNDQsNjcsNTQsLjIpfS5jYXBpYmFyYS5jLXJlZC5kYXJrLXRoZW1lIC5pbnB1dC1ib3gsLmNhcGliYXJhLmMtcmVkLmRhcmstdGhlbWUgLmlucHV0LXNlY3Rpb24gaW5wdXQubmF2LWlucHV0LC5jYXBpYmFyYS5jLXJlZCAuaW5wdXQtYm94LC5jYXBpYmFyYS5jLXJlZCAuaW5wdXQtc2VjdGlvbiBpbnB1dC5uYXYtaW5wdXR7Ym9yZGVyLWNvbG9yOnJnYmEoMjQ0LDY3LDU0LC42KX0uY2FwaWJhcmEuYy1yZWQuZGFyay10aGVtZSAuaW5wdXQtc2VjdGlvbiBpbnB1dC5uYXYtaW5wdXQ6YWN0aXZlLC5jYXBpYmFyYS5jLXJlZC5kYXJrLXRoZW1lIC5pbnB1dC1zZWN0aW9uIGlucHV0Lm5hdi1pbnB1dDpmb2N1cywuY2FwaWJhcmEuYy1yZWQgLmlucHV0LXNlY3Rpb24gaW5wdXQubmF2LWlucHV0OmFjdGl2ZSwuY2FwaWJhcmEuYy1yZWQgLmlucHV0LXNlY3Rpb24gaW5wdXQubmF2LWlucHV0OmZvY3Vze2JvcmRlci1jb2xvcjojZjQ0MzM2O2JveC1zaGFkb3c6MCA0cHggNnB4IHJnYmEoMjQ0LDY3LDU0LC4yKX0uY2FwaWJhcmEuYy1yZWQuZGFyay10aGVtZSAuaW5wdXQtc2VjdGlvbi5tc2otaW5wdXQtY29udGFpbmVyIHRleHRhcmVhLm1zaiwuY2FwaWJhcmEuYy1yZWQgLmlucHV0LXNlY3Rpb24ubXNqLWlucHV0LWNvbnRhaW5lciB0ZXh0YXJlYS5tc2p7Ym9yZGVyOjJweCBzb2xpZCAjZjQ0MzM2fS5jYXBpYmFyYS5jLXJlZC5kYXJrLXRoZW1lIC5pbnB1dC1zZWN0aW9uLm1zai1pbnB1dC1jb250YWluZXIgdGV4dGFyZWEubXNqOmFjdGl2ZSwuY2FwaWJhcmEuYy1yZWQuZGFyay10aGVtZSAuaW5wdXQtc2VjdGlvbi5tc2otaW5wdXQtY29udGFpbmVyIHRleHRhcmVhLm1zajpmb2N1cywuY2FwaWJhcmEuYy1yZWQgLmlucHV0LXNlY3Rpb24ubXNqLWlucHV0LWNvbnRhaW5lciB0ZXh0YXJlYS5tc2o6YWN0aXZlLC5jYXBpYmFyYS5jLXJlZCAuaW5wdXQtc2VjdGlvbi5tc2otaW5wdXQtY29udGFpbmVyIHRleHRhcmVhLm1zajpmb2N1c3tib3gtc2hhZG93OjAgNHB4IDZweCByZ2JhKDI0NCw2Nyw1NCwuMil9LmNhcGliYXJhLmMtcmVkIC5idG4tcmFpc2VkLC5jYXBpYmFyYS5jLXJlZC5kYXJrLXRoZW1lIC5idG4tcmFpc2Vke2JvcmRlci1jb2xvcjojZjQ0MzM2O2JhY2tncm91bmQ6cmdiYSgyNDQsNjcsNTQsLjgpfS5jYXBpYmFyYS5jLXJlZCAuYnRuLW91dGxpbmUsLmNhcGliYXJhLmMtcmVkLmRhcmstdGhlbWUgLmJ0bi1vdXRsaW5le2JvcmRlci1jb2xvcjojZjQ0MzM2O2NvbG9yOiNmNDQzMzZ9LmNhcGliYXJhLmMtcmVkLmRhcmstdGhlbWUgLnNlbGVjdC1jb250YWluZXIgLnNlbGVjdGVkLWRheSwuY2FwaWJhcmEuYy1yZWQgLnNlbGVjdC1jb250YWluZXIgLnNlbGVjdGVkLWRheXtiYWNrZ3JvdW5kOnJnYmEoMjQ0LDY3LDU0LC4zKTtib3gtc2hhZG93Omluc2V0IDAgMCAxMHB4IHJnYmEoMjQ0LDY3LDU0LC41KX0uY2FwaWJhcmEgLmMtcmVkLS1iYWNrZ3JvdW5ke2JhY2tncm91bmQ6I2Y0NDMzNiFpbXBvcnRhbnR9LmNhcGliYXJhIC5jLXJlZC1kLS1iYWNrZ3JvdW5ke2JhY2tncm91bmQ6I2QyMTkwYiFpbXBvcnRhbnR9LmNhcGliYXJhIC5jLXJlZC1sLS1iYWNrZ3JvdW5ke2JhY2tncm91bmQ6I2Y4ODc3ZiFpbXBvcnRhbnR9LmNhcGliYXJhIC5jLXJlZC0tdGV4dHtjb2xvcjojZjQ0MzM2IWltcG9ydGFudH0uY2FwaWJhcmEgLmMtcmVkLWQtLXRleHR7Y29sb3I6I2QyMTkwYiFpbXBvcnRhbnR9LmNhcGliYXJhIC5jLXJlZC1sLS10ZXh0e2NvbG9yOiNmODg3N2YhaW1wb3J0YW50fS5jYXBpYmFyYSAuZGV0YWlsLWRheSAubGlzdC1kZXRhaWwgLml0ZW0tZGV0YWlsLmMtcmVke2JhY2tncm91bmQ6cmdiYSgyNDQsNjcsNTQsLjIpO2JvcmRlcjoxcHggc29saWQgI2Y0NDMzNn0uY2FwaWJhcmEgLmRldGFpbC1kYXkgLmxpc3QtZGV0YWlsIC5pdGVtLWRldGFpbC5jLXJlZCAubGVmdC1pY29ue2JhY2tncm91bmQ6I2Y0NDMzNn0uY2FwaWJhcmEgLmRldGFpbC1kYXkgLmxpc3QtZGV0YWlsIC5pdGVtLWRldGFpbC5jLXJlZCAubGVmdC1pY29uLm91dGxpbmVke2JvcmRlcjoxcHggc29saWQgI2Y0NDMzNjtib3gtc2hhZG93Omluc2V0IDAgMCAwIDFweCByZ2JhKDI0NCw2Nyw1NCwuNyl9LmNhcGliYXJhIC5kZXRhaWwtZGF5IC5saXN0LWRldGFpbCAuaXRlbS1kZXRhaWwuYy1yZWQgLm5hbWV7Y29sb3I6I2Y0NDMzNn0uY2FwaWJhcmEgLmZsb2F0LWJveC1jb250YWluZXIgLmZsb2F0LWJveCBzcGFuLmRhdGEuYy1yZWR7YmFja2dyb3VuZDpyZ2JhKDI0NCw2Nyw1NCwuOCl9LmNhcGliYXJhIC5mbG9hdC1ib3gtY29udGFpbmVyIC5mbG9hdC1ib3ggc3Bhbi5kYXRhLnNoYXBlLW91dGxpbmVkLmMtcmVke2JvcmRlci1jb2xvcjpyZ2JhKDI0NCw2Nyw1NCwuOSk7YmFja2dyb3VuZDpyZ2JhKDI0NCw2Nyw1NCwuMSk7Y29sb3I6I2Y0NDMzNn0uY2FwaWJhcmEgLmZsb2F0LWJveC1jb250YWluZXIgLmZsb2F0LWJveCBzcGFuLmRhdGEuc2hhcGUtYmFyLmMtcmVke2JhY2tncm91bmQ6I2Y0NDMzNn0uY2FwaWJhcmEgLmZsb2F0LWJveC1jb250YWluZXIgLmZsb2F0LWJveCBzcGFuLmRhdGEuc2hhcGUtYmFyLW91dGxpbmVkLmMtcmVke2JvcmRlci1jb2xvcjpyZ2JhKDI0NCw2Nyw1NCwuOSk7YmFja2dyb3VuZDpyZ2JhKDI0NCw2Nyw1NCwuMSl9LmNhcGliYXJhIC5mbG9hdC1ib3gtY29udGFpbmVyIC5mbG9hdC1ib3ggLmRvdC5jLXJlZHtiYWNrZ3JvdW5kOiNmNDQzMzZ9LmNhcGliYXJhIC5mbG9hdC1ib3gtY29udGFpbmVyIC5mbG9hdC1ib3ggLmRvdC5jLXJlZC5vdXRsaW5lZHtib3JkZXI6MXB4IHNvbGlkICNmNDQzMzY7Ym94LXNoYWRvdzppbnNldCAwIDAgMCAxcHggcmdiYSgyNDQsNjcsNTQsLjcpfS5jYXBpYmFyYSAuaGVhZGVyLXRvcCAudGFicy1jb250YWluZXIgLnRhYjpub3QoLmRpc2FibGVkKS5jLXJlZC5hY3RpdmV7YmFja2dyb3VuZDpyZ2JhKDI0NCw2Nyw1NCwuNyk7Ym9yZGVyLWNvbG9yOnJnYmEoMjQ0LDY3LDU0LC43KTtjb2xvcjojZmZmfS5jYXBpYmFyYSAuaGVhZGVyLXRvcCAudGFicy1jb250YWluZXIgLnRhYjpub3QoLmRpc2FibGVkKS5jLXJlZC5hY3RpdmU6aG92ZXJ7YmFja2dyb3VuZDpyZ2JhKDI0NCw2Nyw1NCwuOCl9LmNhcGliYXJhIC5oZWFkZXItdG9wIC50YWJzLWNvbnRhaW5lciAudGFiOm5vdCguZGlzYWJsZWQpLmMtcmVkOmhvdmVye2JhY2tncm91bmQ6cmdiYSgyNDQsNjcsNTQsLjIpO2JvcmRlci1jb2xvcjpyZ2JhKDI0NCw2Nyw1NCwuOSl9LmNhcGliYXJhIC5pbnB1dC1ib3ggLm1pbmktaW5wdXQtc2VjdGlvbi0taWNvbi5jLXJlZHtiYWNrZ3JvdW5kOiNmNDQzMzZ9LmNhcGliYXJhLmMtcGluazpub3QoLmRhcmstdGhlbWUpIDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWJ7YmFja2dyb3VuZDojZDAzNzZifS5jYXBpYmFyYS5jLXBpbms6bm90KC5kYXJrLXRoZW1lKSAuaGVhZGVyLXRvcHtiYWNrZ3JvdW5kOiNmMGUzZTd9LmNhcGliYXJhLmMtcGluazpub3QoLmRhcmstdGhlbWUpIC5jb3JuZXJ7YmFja2dyb3VuZDojZjBlM2U3O2JvcmRlci1jb2xvcjojZjI3YmEzfS5jYXBpYmFyYS5jLXBpbms6bm90KC5kYXJrLXRoZW1lKSAuY29udGFpbmVyLXRsIGhlYWRlcntiYWNrZ3JvdW5kOiNmMGUzZTc7Ym9yZGVyLWJvdHRvbS1jb2xvcjojZjI3YmEzfS5jYXBpYmFyYS5jLXBpbms6bm90KC5kYXJrLXRoZW1lKSAuY29udGFpbmVyLXRsIGhlYWRlciAubWVzLm1lcy1yZWR1Y2VkOmFmdGVye2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDkwZGVnLHRyYW5zcGFyZW50LCNmYmQ4ZTQpIWltcG9ydGFudH0uY2FwaWJhcmEuYy1waW5rOm5vdCguZGFyay10aGVtZSkgbmF2LnJpZ2h0e2JvcmRlci1jb2xvcjojZjI3YmEzfS5jYXBpYmFyYS5jLXBpbmsuZGFyay10aGVtZSAuaGVhZGVyLXRvcCwuY2FwaWJhcmEuYy1waW5rLmRhcmstdGhlbWUgbmF2LnJpZ2h0e2JvcmRlci1jb2xvcjojOTMwZTNifS5jYXBpYmFyYS5jLXBpbmsuZGFyay10aGVtZSAuY29udGFpbmVyLXRsIGhlYWRlciwuY2FwaWJhcmEuYy1waW5rLmRhcmstdGhlbWUgLmNvcm5lcntib3JkZXItYm90dG9tLWNvbG9yOiM5MzBlM2J9LmNhcGliYXJhLmMtcGluay5kYXJrLXRoZW1lIC5wcm9ncmVzcy1iYXIsLmNhcGliYXJhLmMtcGluayAucHJvZ3Jlc3MtYmFye2JhY2tncm91bmQtY29sb3I6cmdiYSgyMzMsMzAsOTksLjIpIWltcG9ydGFudH0uY2FwaWJhcmEuYy1waW5rLmRhcmstdGhlbWUgLnByb2dyZXNzLWJhcjphZnRlciwuY2FwaWJhcmEuYy1waW5rLmRhcmstdGhlbWUgLnByb2dyZXNzLWJhcjpiZWZvcmUsLmNhcGliYXJhLmMtcGluayAucHJvZ3Jlc3MtYmFyOmFmdGVyLC5jYXBpYmFyYS5jLXBpbmsgLnByb2dyZXNzLWJhcjpiZWZvcmV7YmFja2dyb3VuZC1jb2xvcjojZTkxZTYzIWltcG9ydGFudH0uY2FwaWJhcmEuYy1waW5rLmRhcmstdGhlbWUgc2VsZWN0LnRhYnMtc2VsZWN0LC5jYXBpYmFyYS5jLXBpbmsgc2VsZWN0LnRhYnMtc2VsZWN0e2JhY2tncm91bmQtY29sb3I6cmdiYSgyMzMsMzAsOTksLjcpIWltcG9ydGFudDtib3JkZXItY29sb3I6I2U5MWU2MyFpbXBvcnRhbnR9LmNhcGliYXJhLmMtcGluay5kYXJrLXRoZW1lIC50aW1lLC5jYXBpYmFyYS5jLXBpbmsgLnRpbWV7Ym9yZGVyLWNvbG9yOnJnYmEoMjMzLDMwLDk5LC42KX0uY2FwaWJhcmEuYy1waW5rLmRhcmstdGhlbWUgLnRpbWUgLnN5bWJvbCwuY2FwaWJhcmEuYy1waW5rIC50aW1lIC5zeW1ib2x7Y29sb3I6I2U5MWU2M30uY2FwaWJhcmEuYy1waW5rLmRhcmstdGhlbWUgLnRpbWUgaW5wdXQ6YWN0aXZlLC5jYXBpYmFyYS5jLXBpbmsuZGFyay10aGVtZSAudGltZSBpbnB1dDpmb2N1cywuY2FwaWJhcmEuYy1waW5rIC50aW1lIGlucHV0OmFjdGl2ZSwuY2FwaWJhcmEuYy1waW5rIC50aW1lIGlucHV0OmZvY3Vze2JvcmRlci1jb2xvcjojZTkxZTYzO2JveC1zaGFkb3c6MCA0cHggNnB4IHJnYmEoMjMzLDMwLDk5LC4yKX0uY2FwaWJhcmEuYy1waW5rLmRhcmstdGhlbWUgLmlucHV0LWJveCwuY2FwaWJhcmEuYy1waW5rLmRhcmstdGhlbWUgLmlucHV0LXNlY3Rpb24gaW5wdXQubmF2LWlucHV0LC5jYXBpYmFyYS5jLXBpbmsgLmlucHV0LWJveCwuY2FwaWJhcmEuYy1waW5rIC5pbnB1dC1zZWN0aW9uIGlucHV0Lm5hdi1pbnB1dHtib3JkZXItY29sb3I6cmdiYSgyMzMsMzAsOTksLjYpfS5jYXBpYmFyYS5jLXBpbmsuZGFyay10aGVtZSAuaW5wdXQtc2VjdGlvbiBpbnB1dC5uYXYtaW5wdXQ6YWN0aXZlLC5jYXBpYmFyYS5jLXBpbmsuZGFyay10aGVtZSAuaW5wdXQtc2VjdGlvbiBpbnB1dC5uYXYtaW5wdXQ6Zm9jdXMsLmNhcGliYXJhLmMtcGluayAuaW5wdXQtc2VjdGlvbiBpbnB1dC5uYXYtaW5wdXQ6YWN0aXZlLC5jYXBpYmFyYS5jLXBpbmsgLmlucHV0LXNlY3Rpb24gaW5wdXQubmF2LWlucHV0OmZvY3Vze2JvcmRlci1jb2xvcjojZTkxZTYzO2JveC1zaGFkb3c6MCA0cHggNnB4IHJnYmEoMjMzLDMwLDk5LC4yKX0uY2FwaWJhcmEuYy1waW5rLmRhcmstdGhlbWUgLmlucHV0LXNlY3Rpb24ubXNqLWlucHV0LWNvbnRhaW5lciB0ZXh0YXJlYS5tc2osLmNhcGliYXJhLmMtcGluayAuaW5wdXQtc2VjdGlvbi5tc2otaW5wdXQtY29udGFpbmVyIHRleHRhcmVhLm1zantib3JkZXI6MnB4IHNvbGlkICNlOTFlNjN9LmNhcGliYXJhLmMtcGluay5kYXJrLXRoZW1lIC5pbnB1dC1zZWN0aW9uLm1zai1pbnB1dC1jb250YWluZXIgdGV4dGFyZWEubXNqOmFjdGl2ZSwuY2FwaWJhcmEuYy1waW5rLmRhcmstdGhlbWUgLmlucHV0LXNlY3Rpb24ubXNqLWlucHV0LWNvbnRhaW5lciB0ZXh0YXJlYS5tc2o6Zm9jdXMsLmNhcGliYXJhLmMtcGluayAuaW5wdXQtc2VjdGlvbi5tc2otaW5wdXQtY29udGFpbmVyIHRleHRhcmVhLm1zajphY3RpdmUsLmNhcGliYXJhLmMtcGluayAuaW5wdXQtc2VjdGlvbi5tc2otaW5wdXQtY29udGFpbmVyIHRleHRhcmVhLm1zajpmb2N1c3tib3gtc2hhZG93OjAgNHB4IDZweCByZ2JhKDIzMywzMCw5OSwuMil9LmNhcGliYXJhLmMtcGluayAuYnRuLXJhaXNlZCwuY2FwaWJhcmEuYy1waW5rLmRhcmstdGhlbWUgLmJ0bi1yYWlzZWR7Ym9yZGVyLWNvbG9yOiNlOTFlNjM7YmFja2dyb3VuZDpyZ2JhKDIzMywzMCw5OSwuOCl9LmNhcGliYXJhLmMtcGluayAuYnRuLW91dGxpbmUsLmNhcGliYXJhLmMtcGluay5kYXJrLXRoZW1lIC5idG4tb3V0bGluZXtib3JkZXItY29sb3I6I2U5MWU2Mztjb2xvcjojZTkxZTYzfS5jYXBpYmFyYS5jLXBpbmsuZGFyay10aGVtZSAuc2VsZWN0LWNvbnRhaW5lciAuc2VsZWN0ZWQtZGF5LC5jYXBpYmFyYS5jLXBpbmsgLnNlbGVjdC1jb250YWluZXIgLnNlbGVjdGVkLWRheXtiYWNrZ3JvdW5kOnJnYmEoMjMzLDMwLDk5LC4zKTtib3gtc2hhZG93Omluc2V0IDAgMCAxMHB4IHJnYmEoMjMzLDMwLDk5LC41KX0uY2FwaWJhcmEgLmMtcGluay0tYmFja2dyb3VuZHtiYWNrZ3JvdW5kOiNlOTFlNjMhaW1wb3J0YW50fS5jYXBpYmFyYSAuYy1waW5rLWQtLWJhY2tncm91bmR7YmFja2dyb3VuZDojYWExMTQ1IWltcG9ydGFudH0uY2FwaWJhcmEgLmMtcGluay1sLS1iYWNrZ3JvdW5ke2JhY2tncm91bmQ6I2YwNjQ5MyFpbXBvcnRhbnR9LmNhcGliYXJhIC5jLXBpbmstLXRleHR7Y29sb3I6I2U5MWU2MyFpbXBvcnRhbnR9LmNhcGliYXJhIC5jLXBpbmstZC0tdGV4dHtjb2xvcjojYWExMTQ1IWltcG9ydGFudH0uY2FwaWJhcmEgLmMtcGluay1sLS10ZXh0e2NvbG9yOiNmMDY0OTMhaW1wb3J0YW50fS5jYXBpYmFyYSAuZGV0YWlsLWRheSAubGlzdC1kZXRhaWwgLml0ZW0tZGV0YWlsLmMtcGlua3tiYWNrZ3JvdW5kOnJnYmEoMjMzLDMwLDk5LC4yKTtib3JkZXI6MXB4IHNvbGlkICNlOTFlNjN9LmNhcGliYXJhIC5kZXRhaWwtZGF5IC5saXN0LWRldGFpbCAuaXRlbS1kZXRhaWwuYy1waW5rIC5sZWZ0LWljb257YmFja2dyb3VuZDojZTkxZTYzfS5jYXBpYmFyYSAuZGV0YWlsLWRheSAubGlzdC1kZXRhaWwgLml0ZW0tZGV0YWlsLmMtcGluayAubGVmdC1pY29uLm91dGxpbmVke2JvcmRlcjoxcHggc29saWQgI2U5MWU2Mztib3gtc2hhZG93Omluc2V0IDAgMCAwIDFweCByZ2JhKDIzMywzMCw5OSwuNyl9LmNhcGliYXJhIC5kZXRhaWwtZGF5IC5saXN0LWRldGFpbCAuaXRlbS1kZXRhaWwuYy1waW5rIC5uYW1le2NvbG9yOiNlOTFlNjN9LmNhcGliYXJhIC5mbG9hdC1ib3gtY29udGFpbmVyIC5mbG9hdC1ib3ggc3Bhbi5kYXRhLmMtcGlua3tiYWNrZ3JvdW5kOnJnYmEoMjMzLDMwLDk5LC44KX0uY2FwaWJhcmEgLmZsb2F0LWJveC1jb250YWluZXIgLmZsb2F0LWJveCBzcGFuLmRhdGEuc2hhcGUtb3V0bGluZWQuYy1waW5re2JvcmRlci1jb2xvcjpyZ2JhKDIzMywzMCw5OSwuOSk7YmFja2dyb3VuZDpyZ2JhKDIzMywzMCw5OSwuMSk7Y29sb3I6I2U5MWU2M30uY2FwaWJhcmEgLmZsb2F0LWJveC1jb250YWluZXIgLmZsb2F0LWJveCBzcGFuLmRhdGEuc2hhcGUtYmFyLmMtcGlua3tiYWNrZ3JvdW5kOiNlOTFlNjN9LmNhcGliYXJhIC5mbG9hdC1ib3gtY29udGFpbmVyIC5mbG9hdC1ib3ggc3Bhbi5kYXRhLnNoYXBlLWJhci1vdXRsaW5lZC5jLXBpbmt7Ym9yZGVyLWNvbG9yOnJnYmEoMjMzLDMwLDk5LC45KTtiYWNrZ3JvdW5kOnJnYmEoMjMzLDMwLDk5LC4xKX0uY2FwaWJhcmEgLmZsb2F0LWJveC1jb250YWluZXIgLmZsb2F0LWJveCAuZG90LmMtcGlua3tiYWNrZ3JvdW5kOiNlOTFlNjN9LmNhcGliYXJhIC5mbG9hdC1ib3gtY29udGFpbmVyIC5mbG9hdC1ib3ggLmRvdC5jLXBpbmsub3V0bGluZWR7Ym9yZGVyOjFweCBzb2xpZCAjZTkxZTYzO2JveC1zaGFkb3c6aW5zZXQgMCAwIDAgMXB4IHJnYmEoMjMzLDMwLDk5LC43KX0uY2FwaWJhcmEgLmhlYWRlci10b3AgLnRhYnMtY29udGFpbmVyIC50YWI6bm90KC5kaXNhYmxlZCkuYy1waW5rLmFjdGl2ZXtiYWNrZ3JvdW5kOnJnYmEoMjMzLDMwLDk5LC43KTtib3JkZXItY29sb3I6cmdiYSgyMzMsMzAsOTksLjcpO2NvbG9yOiNmZmZ9LmNhcGliYXJhIC5oZWFkZXItdG9wIC50YWJzLWNvbnRhaW5lciAudGFiOm5vdCguZGlzYWJsZWQpLmMtcGluay5hY3RpdmU6aG92ZXJ7YmFja2dyb3VuZDpyZ2JhKDIzMywzMCw5OSwuOCl9LmNhcGliYXJhIC5oZWFkZXItdG9wIC50YWJzLWNvbnRhaW5lciAudGFiOm5vdCguZGlzYWJsZWQpLmMtcGluazpob3ZlcntiYWNrZ3JvdW5kOnJnYmEoMjMzLDMwLDk5LC4yKTtib3JkZXItY29sb3I6cmdiYSgyMzMsMzAsOTksLjkpfS5jYXBpYmFyYSAuaW5wdXQtYm94IC5taW5pLWlucHV0LXNlY3Rpb24tLWljb24uYy1waW5re2JhY2tncm91bmQ6I2U5MWU2M30uY2FwaWJhcmEuYy1wdXJwbGU6bm90KC5kYXJrLXRoZW1lKSA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1ie2JhY2tncm91bmQ6IzhkM2Q5Yn0uY2FwaWJhcmEuYy1wdXJwbGU6bm90KC5kYXJrLXRoZW1lKSAuaGVhZGVyLXRvcHtiYWNrZ3JvdW5kOiNkNmNiZDh9LmNhcGliYXJhLmMtcHVycGxlOm5vdCguZGFyay10aGVtZSkgLmNvcm5lcntiYWNrZ3JvdW5kOiNkNmNiZDg7Ym9yZGVyLWNvbG9yOiNjYTYxZGN9LmNhcGliYXJhLmMtcHVycGxlOm5vdCguZGFyay10aGVtZSkgLmNvbnRhaW5lci10bCBoZWFkZXJ7YmFja2dyb3VuZDojZDZjYmQ4O2JvcmRlci1ib3R0b20tY29sb3I6I2NhNjFkY30uY2FwaWJhcmEuYy1wdXJwbGU6bm90KC5kYXJrLXRoZW1lKSAuY29udGFpbmVyLXRsIGhlYWRlciAubWVzLm1lcy1yZWR1Y2VkOmFmdGVye2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDkwZGVnLHRyYW5zcGFyZW50LCNlNmI1ZWUpIWltcG9ydGFudH0uY2FwaWJhcmEuYy1wdXJwbGU6bm90KC5kYXJrLXRoZW1lKSBuYXYucmlnaHR7Ym9yZGVyLWNvbG9yOiNjYTYxZGN9LmNhcGliYXJhLmMtcHVycGxlLmRhcmstdGhlbWUgLmhlYWRlci10b3AsLmNhcGliYXJhLmMtcHVycGxlLmRhcmstdGhlbWUgbmF2LnJpZ2h0e2JvcmRlci1jb2xvcjojNTIxNDVkfS5jYXBpYmFyYS5jLXB1cnBsZS5kYXJrLXRoZW1lIC5jb250YWluZXItdGwgaGVhZGVyLC5jYXBpYmFyYS5jLXB1cnBsZS5kYXJrLXRoZW1lIC5jb3JuZXJ7Ym9yZGVyLWJvdHRvbS1jb2xvcjojNTIxNDVkfS5jYXBpYmFyYS5jLXB1cnBsZS5kYXJrLXRoZW1lIC5wcm9ncmVzcy1iYXIsLmNhcGliYXJhLmMtcHVycGxlIC5wcm9ncmVzcy1iYXJ7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDE1NiwzOSwxNzYsLjIpIWltcG9ydGFudH0uY2FwaWJhcmEuYy1wdXJwbGUuZGFyay10aGVtZSAucHJvZ3Jlc3MtYmFyOmFmdGVyLC5jYXBpYmFyYS5jLXB1cnBsZS5kYXJrLXRoZW1lIC5wcm9ncmVzcy1iYXI6YmVmb3JlLC5jYXBpYmFyYS5jLXB1cnBsZSAucHJvZ3Jlc3MtYmFyOmFmdGVyLC5jYXBpYmFyYS5jLXB1cnBsZSAucHJvZ3Jlc3MtYmFyOmJlZm9yZXtiYWNrZ3JvdW5kLWNvbG9yOiM5YzI3YjAhaW1wb3J0YW50fS5jYXBpYmFyYS5jLXB1cnBsZS5kYXJrLXRoZW1lIHNlbGVjdC50YWJzLXNlbGVjdCwuY2FwaWJhcmEuYy1wdXJwbGUgc2VsZWN0LnRhYnMtc2VsZWN0e2JhY2tncm91bmQtY29sb3I6cmdiYSgxNTYsMzksMTc2LC43KSFpbXBvcnRhbnQ7Ym9yZGVyLWNvbG9yOiM5YzI3YjAhaW1wb3J0YW50fS5jYXBpYmFyYS5jLXB1cnBsZS5kYXJrLXRoZW1lIC50aW1lLC5jYXBpYmFyYS5jLXB1cnBsZSAudGltZXtib3JkZXItY29sb3I6cmdiYSgxNTYsMzksMTc2LC42KX0uY2FwaWJhcmEuYy1wdXJwbGUuZGFyay10aGVtZSAudGltZSAuc3ltYm9sLC5jYXBpYmFyYS5jLXB1cnBsZSAudGltZSAuc3ltYm9se2NvbG9yOiM5YzI3YjB9LmNhcGliYXJhLmMtcHVycGxlLmRhcmstdGhlbWUgLnRpbWUgaW5wdXQ6YWN0aXZlLC5jYXBpYmFyYS5jLXB1cnBsZS5kYXJrLXRoZW1lIC50aW1lIGlucHV0OmZvY3VzLC5jYXBpYmFyYS5jLXB1cnBsZSAudGltZSBpbnB1dDphY3RpdmUsLmNhcGliYXJhLmMtcHVycGxlIC50aW1lIGlucHV0OmZvY3Vze2JvcmRlci1jb2xvcjojOWMyN2IwO2JveC1zaGFkb3c6MCA0cHggNnB4IHJnYmEoMTU2LDM5LDE3NiwuMil9LmNhcGliYXJhLmMtcHVycGxlLmRhcmstdGhlbWUgLmlucHV0LWJveCwuY2FwaWJhcmEuYy1wdXJwbGUuZGFyay10aGVtZSAuaW5wdXQtc2VjdGlvbiBpbnB1dC5uYXYtaW5wdXQsLmNhcGliYXJhLmMtcHVycGxlIC5pbnB1dC1ib3gsLmNhcGliYXJhLmMtcHVycGxlIC5pbnB1dC1zZWN0aW9uIGlucHV0Lm5hdi1pbnB1dHtib3JkZXItY29sb3I6cmdiYSgxNTYsMzksMTc2LC42KX0uY2FwaWJhcmEuYy1wdXJwbGUuZGFyay10aGVtZSAuaW5wdXQtc2VjdGlvbiBpbnB1dC5uYXYtaW5wdXQ6YWN0aXZlLC5jYXBpYmFyYS5jLXB1cnBsZS5kYXJrLXRoZW1lIC5pbnB1dC1zZWN0aW9uIGlucHV0Lm5hdi1pbnB1dDpmb2N1cywuY2FwaWJhcmEuYy1wdXJwbGUgLmlucHV0LXNlY3Rpb24gaW5wdXQubmF2LWlucHV0OmFjdGl2ZSwuY2FwaWJhcmEuYy1wdXJwbGUgLmlucHV0LXNlY3Rpb24gaW5wdXQubmF2LWlucHV0OmZvY3Vze2JvcmRlci1jb2xvcjojOWMyN2IwO2JveC1zaGFkb3c6MCA0cHggNnB4IHJnYmEoMTU2LDM5LDE3NiwuMil9LmNhcGliYXJhLmMtcHVycGxlLmRhcmstdGhlbWUgLmlucHV0LXNlY3Rpb24ubXNqLWlucHV0LWNvbnRhaW5lciB0ZXh0YXJlYS5tc2osLmNhcGliYXJhLmMtcHVycGxlIC5pbnB1dC1zZWN0aW9uLm1zai1pbnB1dC1jb250YWluZXIgdGV4dGFyZWEubXNqe2JvcmRlcjoycHggc29saWQgIzljMjdiMH0uY2FwaWJhcmEuYy1wdXJwbGUuZGFyay10aGVtZSAuaW5wdXQtc2VjdGlvbi5tc2otaW5wdXQtY29udGFpbmVyIHRleHRhcmVhLm1zajphY3RpdmUsLmNhcGliYXJhLmMtcHVycGxlLmRhcmstdGhlbWUgLmlucHV0LXNlY3Rpb24ubXNqLWlucHV0LWNvbnRhaW5lciB0ZXh0YXJlYS5tc2o6Zm9jdXMsLmNhcGliYXJhLmMtcHVycGxlIC5pbnB1dC1zZWN0aW9uLm1zai1pbnB1dC1jb250YWluZXIgdGV4dGFyZWEubXNqOmFjdGl2ZSwuY2FwaWJhcmEuYy1wdXJwbGUgLmlucHV0LXNlY3Rpb24ubXNqLWlucHV0LWNvbnRhaW5lciB0ZXh0YXJlYS5tc2o6Zm9jdXN7Ym94LXNoYWRvdzowIDRweCA2cHggcmdiYSgxNTYsMzksMTc2LC4yKX0uY2FwaWJhcmEuYy1wdXJwbGUgLmJ0bi1yYWlzZWQsLmNhcGliYXJhLmMtcHVycGxlLmRhcmstdGhlbWUgLmJ0bi1yYWlzZWR7Ym9yZGVyLWNvbG9yOiM5YzI3YjA7YmFja2dyb3VuZDpyZ2JhKDE1NiwzOSwxNzYsLjgpfS5jYXBpYmFyYS5jLXB1cnBsZSAuYnRuLW91dGxpbmUsLmNhcGliYXJhLmMtcHVycGxlLmRhcmstdGhlbWUgLmJ0bi1vdXRsaW5le2JvcmRlci1jb2xvcjojOWMyN2IwO2NvbG9yOiM5YzI3YjB9LmNhcGliYXJhLmMtcHVycGxlLmRhcmstdGhlbWUgLnNlbGVjdC1jb250YWluZXIgLnNlbGVjdGVkLWRheSwuY2FwaWJhcmEuYy1wdXJwbGUgLnNlbGVjdC1jb250YWluZXIgLnNlbGVjdGVkLWRheXtiYWNrZ3JvdW5kOnJnYmEoMTU2LDM5LDE3NiwuMyk7Ym94LXNoYWRvdzppbnNldCAwIDAgMTBweCByZ2JhKDE1NiwzOSwxNzYsLjUpfS5jYXBpYmFyYSAuYy1wdXJwbGUtLWJhY2tncm91bmR7YmFja2dyb3VuZDojOWMyN2IwIWltcG9ydGFudH0uY2FwaWJhcmEgLmMtcHVycGxlLWQtLWJhY2tncm91bmR7YmFja2dyb3VuZDojNjQxOTcxIWltcG9ydGFudH0uY2FwaWJhcmEgLmMtcHVycGxlLWwtLWJhY2tncm91bmR7YmFja2dyb3VuZDojYzM0Y2Q3IWltcG9ydGFudH0uY2FwaWJhcmEgLmMtcHVycGxlLS10ZXh0e2NvbG9yOiM5YzI3YjAhaW1wb3J0YW50fS5jYXBpYmFyYSAuYy1wdXJwbGUtZC0tdGV4dHtjb2xvcjojNjQxOTcxIWltcG9ydGFudH0uY2FwaWJhcmEgLmMtcHVycGxlLWwtLXRleHR7Y29sb3I6I2MzNGNkNyFpbXBvcnRhbnR9LmNhcGliYXJhIC5kZXRhaWwtZGF5IC5saXN0LWRldGFpbCAuaXRlbS1kZXRhaWwuYy1wdXJwbGV7YmFja2dyb3VuZDpyZ2JhKDE1NiwzOSwxNzYsLjIpO2JvcmRlcjoxcHggc29saWQgIzljMjdiMH0uY2FwaWJhcmEgLmRldGFpbC1kYXkgLmxpc3QtZGV0YWlsIC5pdGVtLWRldGFpbC5jLXB1cnBsZSAubGVmdC1pY29ue2JhY2tncm91bmQ6IzljMjdiMH0uY2FwaWJhcmEgLmRldGFpbC1kYXkgLmxpc3QtZGV0YWlsIC5pdGVtLWRldGFpbC5jLXB1cnBsZSAubGVmdC1pY29uLm91dGxpbmVke2JvcmRlcjoxcHggc29saWQgIzljMjdiMDtib3gtc2hhZG93Omluc2V0IDAgMCAwIDFweCByZ2JhKDE1NiwzOSwxNzYsLjcpfS5jYXBpYmFyYSAuZGV0YWlsLWRheSAubGlzdC1kZXRhaWwgLml0ZW0tZGV0YWlsLmMtcHVycGxlIC5uYW1le2NvbG9yOiM5YzI3YjB9LmNhcGliYXJhIC5mbG9hdC1ib3gtY29udGFpbmVyIC5mbG9hdC1ib3ggc3Bhbi5kYXRhLmMtcHVycGxle2JhY2tncm91bmQ6cmdiYSgxNTYsMzksMTc2LC44KX0uY2FwaWJhcmEgLmZsb2F0LWJveC1jb250YWluZXIgLmZsb2F0LWJveCBzcGFuLmRhdGEuc2hhcGUtb3V0bGluZWQuYy1wdXJwbGV7Ym9yZGVyLWNvbG9yOnJnYmEoMTU2LDM5LDE3NiwuOSk7YmFja2dyb3VuZDpyZ2JhKDE1NiwzOSwxNzYsLjEpO2NvbG9yOiM5YzI3YjB9LmNhcGliYXJhIC5mbG9hdC1ib3gtY29udGFpbmVyIC5mbG9hdC1ib3ggc3Bhbi5kYXRhLnNoYXBlLWJhci5jLXB1cnBsZXtiYWNrZ3JvdW5kOiM5YzI3YjB9LmNhcGliYXJhIC5mbG9hdC1ib3gtY29udGFpbmVyIC5mbG9hdC1ib3ggc3Bhbi5kYXRhLnNoYXBlLWJhci1vdXRsaW5lZC5jLXB1cnBsZXtib3JkZXItY29sb3I6cmdiYSgxNTYsMzksMTc2LC45KTtiYWNrZ3JvdW5kOnJnYmEoMTU2LDM5LDE3NiwuMSl9LmNhcGliYXJhIC5mbG9hdC1ib3gtY29udGFpbmVyIC5mbG9hdC1ib3ggLmRvdC5jLXB1cnBsZXtiYWNrZ3JvdW5kOiM5YzI3YjB9LmNhcGliYXJhIC5mbG9hdC1ib3gtY29udGFpbmVyIC5mbG9hdC1ib3ggLmRvdC5jLXB1cnBsZS5vdXRsaW5lZHtib3JkZXI6MXB4IHNvbGlkICM5YzI3YjA7Ym94LXNoYWRvdzppbnNldCAwIDAgMCAxcHggcmdiYSgxNTYsMzksMTc2LC43KX0uY2FwaWJhcmEgLmhlYWRlci10b3AgLnRhYnMtY29udGFpbmVyIC50YWI6bm90KC5kaXNhYmxlZCkuYy1wdXJwbGUuYWN0aXZle2JhY2tncm91bmQ6cmdiYSgxNTYsMzksMTc2LC43KTtib3JkZXItY29sb3I6cmdiYSgxNTYsMzksMTc2LC43KTtjb2xvcjojZmZmfS5jYXBpYmFyYSAuaGVhZGVyLXRvcCAudGFicy1jb250YWluZXIgLnRhYjpub3QoLmRpc2FibGVkKS5jLXB1cnBsZS5hY3RpdmU6aG92ZXJ7YmFja2dyb3VuZDpyZ2JhKDE1NiwzOSwxNzYsLjgpfS5jYXBpYmFyYSAuaGVhZGVyLXRvcCAudGFicy1jb250YWluZXIgLnRhYjpub3QoLmRpc2FibGVkKS5jLXB1cnBsZTpob3ZlcntiYWNrZ3JvdW5kOnJnYmEoMTU2LDM5LDE3NiwuMik7Ym9yZGVyLWNvbG9yOnJnYmEoMTU2LDM5LDE3NiwuOSl9LmNhcGliYXJhIC5pbnB1dC1ib3ggLm1pbmktaW5wdXQtc2VjdGlvbi0taWNvbi5jLXB1cnBsZXtiYWNrZ3JvdW5kOiM5YzI3YjB9LmNhcGliYXJhLmMtZGVlcC1wdXJwbGU6bm90KC5kYXJrLXRoZW1lKSA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1ie2JhY2tncm91bmQ6IzZlNTI5Zn0uY2FwaWJhcmEuYy1kZWVwLXB1cnBsZTpub3QoLmRhcmstdGhlbWUpIC5oZWFkZXItdG9we2JhY2tncm91bmQ6I2RlZGVkZn0uY2FwaWJhcmEuYy1kZWVwLXB1cnBsZTpub3QoLmRhcmstdGhlbWUpIC5jb3JuZXJ7YmFja2dyb3VuZDojZGVkZWRmO2JvcmRlci1jb2xvcjojOWY4MGQ3fS5jYXBpYmFyYS5jLWRlZXAtcHVycGxlOm5vdCguZGFyay10aGVtZSkgLmNvbnRhaW5lci10bCBoZWFkZXJ7YmFja2dyb3VuZDojZGVkZWRmO2JvcmRlci1ib3R0b20tY29sb3I6IzlmODBkN30uY2FwaWJhcmEuYy1kZWVwLXB1cnBsZTpub3QoLmRhcmstdGhlbWUpIC5jb250YWluZXItdGwgaGVhZGVyIC5tZXMubWVzLXJlZHVjZWQ6YWZ0ZXJ7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoOTBkZWcsdHJhbnNwYXJlbnQsI2RhY2VlZikhaW1wb3J0YW50fS5jYXBpYmFyYS5jLWRlZXAtcHVycGxlOm5vdCguZGFyay10aGVtZSkgbmF2LnJpZ2h0e2JvcmRlci1jb2xvcjojOWY4MGQ3fS5jYXBpYmFyYS5jLWRlZXAtcHVycGxlLmRhcmstdGhlbWUgLmhlYWRlci10b3AsLmNhcGliYXJhLmMtZGVlcC1wdXJwbGUuZGFyay10aGVtZSBuYXYucmlnaHR7Ym9yZGVyLWNvbG9yOiMzYjIxNmF9LmNhcGliYXJhLmMtZGVlcC1wdXJwbGUuZGFyay10aGVtZSAuY29udGFpbmVyLXRsIGhlYWRlciwuY2FwaWJhcmEuYy1kZWVwLXB1cnBsZS5kYXJrLXRoZW1lIC5jb3JuZXJ7Ym9yZGVyLWJvdHRvbS1jb2xvcjojM2IyMTZhfS5jYXBpYmFyYS5jLWRlZXAtcHVycGxlLmRhcmstdGhlbWUgLnByb2dyZXNzLWJhciwuY2FwaWJhcmEuYy1kZWVwLXB1cnBsZSAucHJvZ3Jlc3MtYmFye2JhY2tncm91bmQtY29sb3I6cmdiYSgxMDMsNTgsMTgzLC4yKSFpbXBvcnRhbnR9LmNhcGliYXJhLmMtZGVlcC1wdXJwbGUuZGFyay10aGVtZSAucHJvZ3Jlc3MtYmFyOmFmdGVyLC5jYXBpYmFyYS5jLWRlZXAtcHVycGxlLmRhcmstdGhlbWUgLnByb2dyZXNzLWJhcjpiZWZvcmUsLmNhcGliYXJhLmMtZGVlcC1wdXJwbGUgLnByb2dyZXNzLWJhcjphZnRlciwuY2FwaWJhcmEuYy1kZWVwLXB1cnBsZSAucHJvZ3Jlc3MtYmFyOmJlZm9yZXtiYWNrZ3JvdW5kLWNvbG9yOiM2NzNhYjchaW1wb3J0YW50fS5jYXBpYmFyYS5jLWRlZXAtcHVycGxlLmRhcmstdGhlbWUgc2VsZWN0LnRhYnMtc2VsZWN0LC5jYXBpYmFyYS5jLWRlZXAtcHVycGxlIHNlbGVjdC50YWJzLXNlbGVjdHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMTAzLDU4LDE4MywuNykhaW1wb3J0YW50O2JvcmRlci1jb2xvcjojNjczYWI3IWltcG9ydGFudH0uY2FwaWJhcmEuYy1kZWVwLXB1cnBsZS5kYXJrLXRoZW1lIC50aW1lLC5jYXBpYmFyYS5jLWRlZXAtcHVycGxlIC50aW1le2JvcmRlci1jb2xvcjpyZ2JhKDEwMyw1OCwxODMsLjYpfS5jYXBpYmFyYS5jLWRlZXAtcHVycGxlLmRhcmstdGhlbWUgLnRpbWUgLnN5bWJvbCwuY2FwaWJhcmEuYy1kZWVwLXB1cnBsZSAudGltZSAuc3ltYm9se2NvbG9yOiM2NzNhYjd9LmNhcGliYXJhLmMtZGVlcC1wdXJwbGUuZGFyay10aGVtZSAudGltZSBpbnB1dDphY3RpdmUsLmNhcGliYXJhLmMtZGVlcC1wdXJwbGUuZGFyay10aGVtZSAudGltZSBpbnB1dDpmb2N1cywuY2FwaWJhcmEuYy1kZWVwLXB1cnBsZSAudGltZSBpbnB1dDphY3RpdmUsLmNhcGliYXJhLmMtZGVlcC1wdXJwbGUgLnRpbWUgaW5wdXQ6Zm9jdXN7Ym9yZGVyLWNvbG9yOiM2NzNhYjc7Ym94LXNoYWRvdzowIDRweCA2cHggcmdiYSgxMDMsNTgsMTgzLC4yKX0uY2FwaWJhcmEuYy1kZWVwLXB1cnBsZS5kYXJrLXRoZW1lIC5pbnB1dC1ib3gsLmNhcGliYXJhLmMtZGVlcC1wdXJwbGUuZGFyay10aGVtZSAuaW5wdXQtc2VjdGlvbiBpbnB1dC5uYXYtaW5wdXQsLmNhcGliYXJhLmMtZGVlcC1wdXJwbGUgLmlucHV0LWJveCwuY2FwaWJhcmEuYy1kZWVwLXB1cnBsZSAuaW5wdXQtc2VjdGlvbiBpbnB1dC5uYXYtaW5wdXR7Ym9yZGVyLWNvbG9yOnJnYmEoMTAzLDU4LDE4MywuNil9LmNhcGliYXJhLmMtZGVlcC1wdXJwbGUuZGFyay10aGVtZSAuaW5wdXQtc2VjdGlvbiBpbnB1dC5uYXYtaW5wdXQ6YWN0aXZlLC5jYXBpYmFyYS5jLWRlZXAtcHVycGxlLmRhcmstdGhlbWUgLmlucHV0LXNlY3Rpb24gaW5wdXQubmF2LWlucHV0OmZvY3VzLC5jYXBpYmFyYS5jLWRlZXAtcHVycGxlIC5pbnB1dC1zZWN0aW9uIGlucHV0Lm5hdi1pbnB1dDphY3RpdmUsLmNhcGliYXJhLmMtZGVlcC1wdXJwbGUgLmlucHV0LXNlY3Rpb24gaW5wdXQubmF2LWlucHV0OmZvY3Vze2JvcmRlci1jb2xvcjojNjczYWI3O2JveC1zaGFkb3c6MCA0cHggNnB4IHJnYmEoMTAzLDU4LDE4MywuMil9LmNhcGliYXJhLmMtZGVlcC1wdXJwbGUuZGFyay10aGVtZSAuaW5wdXQtc2VjdGlvbi5tc2otaW5wdXQtY29udGFpbmVyIHRleHRhcmVhLm1zaiwuY2FwaWJhcmEuYy1kZWVwLXB1cnBsZSAuaW5wdXQtc2VjdGlvbi5tc2otaW5wdXQtY29udGFpbmVyIHRleHRhcmVhLm1zantib3JkZXI6MnB4IHNvbGlkICM2NzNhYjd9LmNhcGliYXJhLmMtZGVlcC1wdXJwbGUuZGFyay10aGVtZSAuaW5wdXQtc2VjdGlvbi5tc2otaW5wdXQtY29udGFpbmVyIHRleHRhcmVhLm1zajphY3RpdmUsLmNhcGliYXJhLmMtZGVlcC1wdXJwbGUuZGFyay10aGVtZSAuaW5wdXQtc2VjdGlvbi5tc2otaW5wdXQtY29udGFpbmVyIHRleHRhcmVhLm1zajpmb2N1cywuY2FwaWJhcmEuYy1kZWVwLXB1cnBsZSAuaW5wdXQtc2VjdGlvbi5tc2otaW5wdXQtY29udGFpbmVyIHRleHRhcmVhLm1zajphY3RpdmUsLmNhcGliYXJhLmMtZGVlcC1wdXJwbGUgLmlucHV0LXNlY3Rpb24ubXNqLWlucHV0LWNvbnRhaW5lciB0ZXh0YXJlYS5tc2o6Zm9jdXN7Ym94LXNoYWRvdzowIDRweCA2cHggcmdiYSgxMDMsNTgsMTgzLC4yKX0uY2FwaWJhcmEuYy1kZWVwLXB1cnBsZSAuYnRuLXJhaXNlZCwuY2FwaWJhcmEuYy1kZWVwLXB1cnBsZS5kYXJrLXRoZW1lIC5idG4tcmFpc2Vke2JvcmRlci1jb2xvcjojNjczYWI3O2JhY2tncm91bmQ6cmdiYSgxMDMsNTgsMTgzLC44KX0uY2FwaWJhcmEuYy1kZWVwLXB1cnBsZSAuYnRuLW91dGxpbmUsLmNhcGliYXJhLmMtZGVlcC1wdXJwbGUuZGFyay10aGVtZSAuYnRuLW91dGxpbmV7Ym9yZGVyLWNvbG9yOiM2NzNhYjc7Y29sb3I6IzY3M2FiN30uY2FwaWJhcmEuYy1kZWVwLXB1cnBsZS5kYXJrLXRoZW1lIC5zZWxlY3QtY29udGFpbmVyIC5zZWxlY3RlZC1kYXksLmNhcGliYXJhLmMtZGVlcC1wdXJwbGUgLnNlbGVjdC1jb250YWluZXIgLnNlbGVjdGVkLWRheXtiYWNrZ3JvdW5kOnJnYmEoMTAzLDU4LDE4MywuMyk7Ym94LXNoYWRvdzppbnNldCAwIDAgMTBweCByZ2JhKDEwMyw1OCwxODMsLjUpfS5jYXBpYmFyYSAuYy1kZWVwLXB1cnBsZS0tYmFja2dyb3VuZHtiYWNrZ3JvdW5kOiM2NzNhYjchaW1wb3J0YW50fS5jYXBpYmFyYSAuYy1kZWVwLXB1cnBsZS1kLS1iYWNrZ3JvdW5ke2JhY2tncm91bmQ6IzQ2Mjg3ZCFpbXBvcnRhbnR9LmNhcGliYXJhIC5jLWRlZXAtcHVycGxlLWwtLWJhY2tncm91bmR7YmFja2dyb3VuZDojOTE2ZGQxIWltcG9ydGFudH0uY2FwaWJhcmEgLmMtZGVlcC1wdXJwbGUtLXRleHR7Y29sb3I6IzY3M2FiNyFpbXBvcnRhbnR9LmNhcGliYXJhIC5jLWRlZXAtcHVycGxlLWQtLXRleHR7Y29sb3I6IzQ2Mjg3ZCFpbXBvcnRhbnR9LmNhcGliYXJhIC5jLWRlZXAtcHVycGxlLWwtLXRleHR7Y29sb3I6IzkxNmRkMSFpbXBvcnRhbnR9LmNhcGliYXJhIC5kZXRhaWwtZGF5IC5saXN0LWRldGFpbCAuaXRlbS1kZXRhaWwuYy1kZWVwLXB1cnBsZXtiYWNrZ3JvdW5kOnJnYmEoMTAzLDU4LDE4MywuMik7Ym9yZGVyOjFweCBzb2xpZCAjNjczYWI3fS5jYXBpYmFyYSAuZGV0YWlsLWRheSAubGlzdC1kZXRhaWwgLml0ZW0tZGV0YWlsLmMtZGVlcC1wdXJwbGUgLmxlZnQtaWNvbntiYWNrZ3JvdW5kOiM2NzNhYjd9LmNhcGliYXJhIC5kZXRhaWwtZGF5IC5saXN0LWRldGFpbCAuaXRlbS1kZXRhaWwuYy1kZWVwLXB1cnBsZSAubGVmdC1pY29uLm91dGxpbmVke2JvcmRlcjoxcHggc29saWQgIzY3M2FiNztib3gtc2hhZG93Omluc2V0IDAgMCAwIDFweCByZ2JhKDEwMyw1OCwxODMsLjcpfS5jYXBpYmFyYSAuZGV0YWlsLWRheSAubGlzdC1kZXRhaWwgLml0ZW0tZGV0YWlsLmMtZGVlcC1wdXJwbGUgLm5hbWV7Y29sb3I6IzY3M2FiN30uY2FwaWJhcmEgLmZsb2F0LWJveC1jb250YWluZXIgLmZsb2F0LWJveCBzcGFuLmRhdGEuYy1kZWVwLXB1cnBsZXtiYWNrZ3JvdW5kOnJnYmEoMTAzLDU4LDE4MywuOCl9LmNhcGliYXJhIC5mbG9hdC1ib3gtY29udGFpbmVyIC5mbG9hdC1ib3ggc3Bhbi5kYXRhLnNoYXBlLW91dGxpbmVkLmMtZGVlcC1wdXJwbGV7Ym9yZGVyLWNvbG9yOnJnYmEoMTAzLDU4LDE4MywuOSk7YmFja2dyb3VuZDpyZ2JhKDEwMyw1OCwxODMsLjEpO2NvbG9yOiM2NzNhYjd9LmNhcGliYXJhIC5mbG9hdC1ib3gtY29udGFpbmVyIC5mbG9hdC1ib3ggc3Bhbi5kYXRhLnNoYXBlLWJhci5jLWRlZXAtcHVycGxle2JhY2tncm91bmQ6IzY3M2FiN30uY2FwaWJhcmEgLmZsb2F0LWJveC1jb250YWluZXIgLmZsb2F0LWJveCBzcGFuLmRhdGEuc2hhcGUtYmFyLW91dGxpbmVkLmMtZGVlcC1wdXJwbGV7Ym9yZGVyLWNvbG9yOnJnYmEoMTAzLDU4LDE4MywuOSk7YmFja2dyb3VuZDpyZ2JhKDEwMyw1OCwxODMsLjEpfS5jYXBpYmFyYSAuZmxvYXQtYm94LWNvbnRhaW5lciAuZmxvYXQtYm94IC5kb3QuYy1kZWVwLXB1cnBsZXtiYWNrZ3JvdW5kOiM2NzNhYjd9LmNhcGliYXJhIC5mbG9hdC1ib3gtY29udGFpbmVyIC5mbG9hdC1ib3ggLmRvdC5jLWRlZXAtcHVycGxlLm91dGxpbmVke2JvcmRlcjoxcHggc29saWQgIzY3M2FiNztib3gtc2hhZG93Omluc2V0IDAgMCAwIDFweCByZ2JhKDEwMyw1OCwxODMsLjcpfS5jYXBpYmFyYSAuaGVhZGVyLXRvcCAudGFicy1jb250YWluZXIgLnRhYjpub3QoLmRpc2FibGVkKS5jLWRlZXAtcHVycGxlLmFjdGl2ZXtiYWNrZ3JvdW5kOnJnYmEoMTAzLDU4LDE4MywuNyk7Ym9yZGVyLWNvbG9yOnJnYmEoMTAzLDU4LDE4MywuNyk7Y29sb3I6I2ZmZn0uY2FwaWJhcmEgLmhlYWRlci10b3AgLnRhYnMtY29udGFpbmVyIC50YWI6bm90KC5kaXNhYmxlZCkuYy1kZWVwLXB1cnBsZS5hY3RpdmU6aG92ZXJ7YmFja2dyb3VuZDpyZ2JhKDEwMyw1OCwxODMsLjgpfS5jYXBpYmFyYSAuaGVhZGVyLXRvcCAudGFicy1jb250YWluZXIgLnRhYjpub3QoLmRpc2FibGVkKS5jLWRlZXAtcHVycGxlOmhvdmVye2JhY2tncm91bmQ6cmdiYSgxMDMsNTgsMTgzLC4yKTtib3JkZXItY29sb3I6cmdiYSgxMDMsNTgsMTgzLC45KX0uY2FwaWJhcmEgLmlucHV0LWJveCAubWluaS1pbnB1dC1zZWN0aW9uLS1pY29uLmMtZGVlcC1wdXJwbGV7YmFja2dyb3VuZDojNjczYWI3fS5jYXBpYmFyYS5jLWluZGlnbzpub3QoLmRhcmstdGhlbWUpIDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWJ7YmFja2dyb3VuZDojNTc2MjlkfS5jYXBpYmFyYS5jLWluZGlnbzpub3QoLmRhcmstdGhlbWUpIC5oZWFkZXItdG9we2JhY2tncm91bmQ6I2UwZTBlMH0uY2FwaWJhcmEuYy1pbmRpZ286bm90KC5kYXJrLXRoZW1lKSAuY29ybmVye2JhY2tncm91bmQ6I2UwZTBlMDtib3JkZXItY29sb3I6Izg1OTFkNX0uY2FwaWJhcmEuYy1pbmRpZ286bm90KC5kYXJrLXRoZW1lKSAuY29udGFpbmVyLXRsIGhlYWRlcntiYWNrZ3JvdW5kOiNlMGUwZTA7Ym9yZGVyLWJvdHRvbS1jb2xvcjojODU5MWQ1fS5jYXBpYmFyYS5jLWluZGlnbzpub3QoLmRhcmstdGhlbWUpIC5jb250YWluZXItdGwgaGVhZGVyIC5tZXMubWVzLXJlZHVjZWQ6YWZ0ZXJ7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoOTBkZWcsdHJhbnNwYXJlbnQsI2QxZDZlZikhaW1wb3J0YW50fS5jYXBpYmFyYS5jLWluZGlnbzpub3QoLmRhcmstdGhlbWUpIG5hdi5yaWdodHtib3JkZXItY29sb3I6Izg1OTFkNX0uY2FwaWJhcmEuYy1pbmRpZ28uZGFyay10aGVtZSAuaGVhZGVyLXRvcCwuY2FwaWJhcmEuYy1pbmRpZ28uZGFyay10aGVtZSBuYXYucmlnaHR7Ym9yZGVyLWNvbG9yOiMyNTJmNjl9LmNhcGliYXJhLmMtaW5kaWdvLmRhcmstdGhlbWUgLmNvbnRhaW5lci10bCBoZWFkZXIsLmNhcGliYXJhLmMtaW5kaWdvLmRhcmstdGhlbWUgLmNvcm5lcntib3JkZXItYm90dG9tLWNvbG9yOiMyNTJmNjl9LmNhcGliYXJhLmMtaW5kaWdvLmRhcmstdGhlbWUgLnByb2dyZXNzLWJhciwuY2FwaWJhcmEuYy1pbmRpZ28gLnByb2dyZXNzLWJhcntiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoNjMsODEsMTgxLC4yKSFpbXBvcnRhbnR9LmNhcGliYXJhLmMtaW5kaWdvLmRhcmstdGhlbWUgLnByb2dyZXNzLWJhcjphZnRlciwuY2FwaWJhcmEuYy1pbmRpZ28uZGFyay10aGVtZSAucHJvZ3Jlc3MtYmFyOmJlZm9yZSwuY2FwaWJhcmEuYy1pbmRpZ28gLnByb2dyZXNzLWJhcjphZnRlciwuY2FwaWJhcmEuYy1pbmRpZ28gLnByb2dyZXNzLWJhcjpiZWZvcmV7YmFja2dyb3VuZC1jb2xvcjojM2Y1MWI1IWltcG9ydGFudH0uY2FwaWJhcmEuYy1pbmRpZ28uZGFyay10aGVtZSBzZWxlY3QudGFicy1zZWxlY3QsLmNhcGliYXJhLmMtaW5kaWdvIHNlbGVjdC50YWJzLXNlbGVjdHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoNjMsODEsMTgxLC43KSFpbXBvcnRhbnQ7Ym9yZGVyLWNvbG9yOiMzZjUxYjUhaW1wb3J0YW50fS5jYXBpYmFyYS5jLWluZGlnby5kYXJrLXRoZW1lIC50aW1lLC5jYXBpYmFyYS5jLWluZGlnbyAudGltZXtib3JkZXItY29sb3I6cmdiYSg2Myw4MSwxODEsLjYpfS5jYXBpYmFyYS5jLWluZGlnby5kYXJrLXRoZW1lIC50aW1lIC5zeW1ib2wsLmNhcGliYXJhLmMtaW5kaWdvIC50aW1lIC5zeW1ib2x7Y29sb3I6IzNmNTFiNX0uY2FwaWJhcmEuYy1pbmRpZ28uZGFyay10aGVtZSAudGltZSBpbnB1dDphY3RpdmUsLmNhcGliYXJhLmMtaW5kaWdvLmRhcmstdGhlbWUgLnRpbWUgaW5wdXQ6Zm9jdXMsLmNhcGliYXJhLmMtaW5kaWdvIC50aW1lIGlucHV0OmFjdGl2ZSwuY2FwaWJhcmEuYy1pbmRpZ28gLnRpbWUgaW5wdXQ6Zm9jdXN7Ym9yZGVyLWNvbG9yOiMzZjUxYjU7Ym94LXNoYWRvdzowIDRweCA2cHggcmdiYSg2Myw4MSwxODEsLjIpfS5jYXBpYmFyYS5jLWluZGlnby5kYXJrLXRoZW1lIC5pbnB1dC1ib3gsLmNhcGliYXJhLmMtaW5kaWdvLmRhcmstdGhlbWUgLmlucHV0LXNlY3Rpb24gaW5wdXQubmF2LWlucHV0LC5jYXBpYmFyYS5jLWluZGlnbyAuaW5wdXQtYm94LC5jYXBpYmFyYS5jLWluZGlnbyAuaW5wdXQtc2VjdGlvbiBpbnB1dC5uYXYtaW5wdXR7Ym9yZGVyLWNvbG9yOnJnYmEoNjMsODEsMTgxLC42KX0uY2FwaWJhcmEuYy1pbmRpZ28uZGFyay10aGVtZSAuaW5wdXQtc2VjdGlvbiBpbnB1dC5uYXYtaW5wdXQ6YWN0aXZlLC5jYXBpYmFyYS5jLWluZGlnby5kYXJrLXRoZW1lIC5pbnB1dC1zZWN0aW9uIGlucHV0Lm5hdi1pbnB1dDpmb2N1cywuY2FwaWJhcmEuYy1pbmRpZ28gLmlucHV0LXNlY3Rpb24gaW5wdXQubmF2LWlucHV0OmFjdGl2ZSwuY2FwaWJhcmEuYy1pbmRpZ28gLmlucHV0LXNlY3Rpb24gaW5wdXQubmF2LWlucHV0OmZvY3Vze2JvcmRlci1jb2xvcjojM2Y1MWI1O2JveC1zaGFkb3c6MCA0cHggNnB4IHJnYmEoNjMsODEsMTgxLC4yKX0uY2FwaWJhcmEuYy1pbmRpZ28uZGFyay10aGVtZSAuaW5wdXQtc2VjdGlvbi5tc2otaW5wdXQtY29udGFpbmVyIHRleHRhcmVhLm1zaiwuY2FwaWJhcmEuYy1pbmRpZ28gLmlucHV0LXNlY3Rpb24ubXNqLWlucHV0LWNvbnRhaW5lciB0ZXh0YXJlYS5tc2p7Ym9yZGVyOjJweCBzb2xpZCAjM2Y1MWI1fS5jYXBpYmFyYS5jLWluZGlnby5kYXJrLXRoZW1lIC5pbnB1dC1zZWN0aW9uLm1zai1pbnB1dC1jb250YWluZXIgdGV4dGFyZWEubXNqOmFjdGl2ZSwuY2FwaWJhcmEuYy1pbmRpZ28uZGFyay10aGVtZSAuaW5wdXQtc2VjdGlvbi5tc2otaW5wdXQtY29udGFpbmVyIHRleHRhcmVhLm1zajpmb2N1cywuY2FwaWJhcmEuYy1pbmRpZ28gLmlucHV0LXNlY3Rpb24ubXNqLWlucHV0LWNvbnRhaW5lciB0ZXh0YXJlYS5tc2o6YWN0aXZlLC5jYXBpYmFyYS5jLWluZGlnbyAuaW5wdXQtc2VjdGlvbi5tc2otaW5wdXQtY29udGFpbmVyIHRleHRhcmVhLm1zajpmb2N1c3tib3gtc2hhZG93OjAgNHB4IDZweCByZ2JhKDYzLDgxLDE4MSwuMil9LmNhcGliYXJhLmMtaW5kaWdvIC5idG4tcmFpc2VkLC5jYXBpYmFyYS5jLWluZGlnby5kYXJrLXRoZW1lIC5idG4tcmFpc2Vke2JvcmRlci1jb2xvcjojM2Y1MWI1O2JhY2tncm91bmQ6cmdiYSg2Myw4MSwxODEsLjgpfS5jYXBpYmFyYS5jLWluZGlnbyAuYnRuLW91dGxpbmUsLmNhcGliYXJhLmMtaW5kaWdvLmRhcmstdGhlbWUgLmJ0bi1vdXRsaW5le2JvcmRlci1jb2xvcjojM2Y1MWI1O2NvbG9yOiMzZjUxYjV9LmNhcGliYXJhLmMtaW5kaWdvLmRhcmstdGhlbWUgLnNlbGVjdC1jb250YWluZXIgLnNlbGVjdGVkLWRheSwuY2FwaWJhcmEuYy1pbmRpZ28gLnNlbGVjdC1jb250YWluZXIgLnNlbGVjdGVkLWRheXtiYWNrZ3JvdW5kOnJnYmEoNjMsODEsMTgxLC4zKTtib3gtc2hhZG93Omluc2V0IDAgMCAxMHB4IHJnYmEoNjMsODEsMTgxLC41KX0uY2FwaWJhcmEgLmMtaW5kaWdvLS1iYWNrZ3JvdW5ke2JhY2tncm91bmQ6IzNmNTFiNSFpbXBvcnRhbnR9LmNhcGliYXJhIC5jLWluZGlnby1kLS1iYWNrZ3JvdW5ke2JhY2tncm91bmQ6IzJiMzg3YyFpbXBvcnRhbnR9LmNhcGliYXJhIC5jLWluZGlnby1sLS1iYWNrZ3JvdW5ke2JhY2tncm91bmQ6IzcyODBjZSFpbXBvcnRhbnR9LmNhcGliYXJhIC5jLWluZGlnby0tdGV4dHtjb2xvcjojM2Y1MWI1IWltcG9ydGFudH0uY2FwaWJhcmEgLmMtaW5kaWdvLWQtLXRleHR7Y29sb3I6IzJiMzg3YyFpbXBvcnRhbnR9LmNhcGliYXJhIC5jLWluZGlnby1sLS10ZXh0e2NvbG9yOiM3MjgwY2UhaW1wb3J0YW50fS5jYXBpYmFyYSAuZGV0YWlsLWRheSAubGlzdC1kZXRhaWwgLml0ZW0tZGV0YWlsLmMtaW5kaWdve2JhY2tncm91bmQ6cmdiYSg2Myw4MSwxODEsLjIpO2JvcmRlcjoxcHggc29saWQgIzNmNTFiNX0uY2FwaWJhcmEgLmRldGFpbC1kYXkgLmxpc3QtZGV0YWlsIC5pdGVtLWRldGFpbC5jLWluZGlnbyAubGVmdC1pY29ue2JhY2tncm91bmQ6IzNmNTFiNX0uY2FwaWJhcmEgLmRldGFpbC1kYXkgLmxpc3QtZGV0YWlsIC5pdGVtLWRldGFpbC5jLWluZGlnbyAubGVmdC1pY29uLm91dGxpbmVke2JvcmRlcjoxcHggc29saWQgIzNmNTFiNTtib3gtc2hhZG93Omluc2V0IDAgMCAwIDFweCByZ2JhKDYzLDgxLDE4MSwuNyl9LmNhcGliYXJhIC5kZXRhaWwtZGF5IC5saXN0LWRldGFpbCAuaXRlbS1kZXRhaWwuYy1pbmRpZ28gLm5hbWV7Y29sb3I6IzNmNTFiNX0uY2FwaWJhcmEgLmZsb2F0LWJveC1jb250YWluZXIgLmZsb2F0LWJveCBzcGFuLmRhdGEuYy1pbmRpZ297YmFja2dyb3VuZDpyZ2JhKDYzLDgxLDE4MSwuOCl9LmNhcGliYXJhIC5mbG9hdC1ib3gtY29udGFpbmVyIC5mbG9hdC1ib3ggc3Bhbi5kYXRhLnNoYXBlLW91dGxpbmVkLmMtaW5kaWdve2JvcmRlci1jb2xvcjpyZ2JhKDYzLDgxLDE4MSwuOSk7YmFja2dyb3VuZDpyZ2JhKDYzLDgxLDE4MSwuMSk7Y29sb3I6IzNmNTFiNX0uY2FwaWJhcmEgLmZsb2F0LWJveC1jb250YWluZXIgLmZsb2F0LWJveCBzcGFuLmRhdGEuc2hhcGUtYmFyLmMtaW5kaWdve2JhY2tncm91bmQ6IzNmNTFiNX0uY2FwaWJhcmEgLmZsb2F0LWJveC1jb250YWluZXIgLmZsb2F0LWJveCBzcGFuLmRhdGEuc2hhcGUtYmFyLW91dGxpbmVkLmMtaW5kaWdve2JvcmRlci1jb2xvcjpyZ2JhKDYzLDgxLDE4MSwuOSk7YmFja2dyb3VuZDpyZ2JhKDYzLDgxLDE4MSwuMSl9LmNhcGliYXJhIC5mbG9hdC1ib3gtY29udGFpbmVyIC5mbG9hdC1ib3ggLmRvdC5jLWluZGlnb3tiYWNrZ3JvdW5kOiMzZjUxYjV9LmNhcGliYXJhIC5mbG9hdC1ib3gtY29udGFpbmVyIC5mbG9hdC1ib3ggLmRvdC5jLWluZGlnby5vdXRsaW5lZHtib3JkZXI6MXB4IHNvbGlkICMzZjUxYjU7Ym94LXNoYWRvdzppbnNldCAwIDAgMCAxcHggcmdiYSg2Myw4MSwxODEsLjcpfS5jYXBpYmFyYSAuaGVhZGVyLXRvcCAudGFicy1jb250YWluZXIgLnRhYjpub3QoLmRpc2FibGVkKS5jLWluZGlnby5hY3RpdmV7YmFja2dyb3VuZDpyZ2JhKDYzLDgxLDE4MSwuNyk7Ym9yZGVyLWNvbG9yOnJnYmEoNjMsODEsMTgxLC43KTtjb2xvcjojZmZmfS5jYXBpYmFyYSAuaGVhZGVyLXRvcCAudGFicy1jb250YWluZXIgLnRhYjpub3QoLmRpc2FibGVkKS5jLWluZGlnby5hY3RpdmU6aG92ZXJ7YmFja2dyb3VuZDpyZ2JhKDYzLDgxLDE4MSwuOCl9LmNhcGliYXJhIC5oZWFkZXItdG9wIC50YWJzLWNvbnRhaW5lciAudGFiOm5vdCguZGlzYWJsZWQpLmMtaW5kaWdvOmhvdmVye2JhY2tncm91bmQ6cmdiYSg2Myw4MSwxODEsLjIpO2JvcmRlci1jb2xvcjpyZ2JhKDYzLDgxLDE4MSwuOSl9LmNhcGliYXJhIC5pbnB1dC1ib3ggLm1pbmktaW5wdXQtc2VjdGlvbi0taWNvbi5jLWluZGlnb3tiYWNrZ3JvdW5kOiMzZjUxYjV9LmNhcGliYXJhLmMtYmx1ZTpub3QoLmRhcmstdGhlbWUpIDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWJ7YmFja2dyb3VuZDojMzE3NmJifS5jYXBpYmFyYS5jLWJsdWU6bm90KC5kYXJrLXRoZW1lKSAuaGVhZGVyLXRvcHtiYWNrZ3JvdW5kOiNkMWRjZTZ9LmNhcGliYXJhLmMtYmx1ZTpub3QoLmRhcmstdGhlbWUpIC5jb3JuZXJ7YmFja2dyb3VuZDojZDFkY2U2O2JvcmRlci1jb2xvcjojNjRhOWVkfS5jYXBpYmFyYS5jLWJsdWU6bm90KC5kYXJrLXRoZW1lKSAuY29udGFpbmVyLXRsIGhlYWRlcntiYWNrZ3JvdW5kOiNkMWRjZTY7Ym9yZGVyLWJvdHRvbS1jb2xvcjojNjRhOWVkfS5jYXBpYmFyYS5jLWJsdWU6bm90KC5kYXJrLXRoZW1lKSAuY29udGFpbmVyLXRsIGhlYWRlciAubWVzLm1lcy1yZWR1Y2VkOmFmdGVye2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDkwZGVnLHRyYW5zcGFyZW50LCNjMGRjZjcpIWltcG9ydGFudH0uY2FwaWJhcmEuYy1ibHVlOm5vdCguZGFyay10aGVtZSkgbmF2LnJpZ2h0e2JvcmRlci1jb2xvcjojNjRhOWVkfS5jYXBpYmFyYS5jLWJsdWUuZGFyay10aGVtZSAuaGVhZGVyLXRvcCwuY2FwaWJhcmEuYy1ibHVlLmRhcmstdGhlbWUgbmF2LnJpZ2h0e2JvcmRlci1jb2xvcjojMGU0Mzc3fS5jYXBpYmFyYS5jLWJsdWUuZGFyay10aGVtZSAuY29udGFpbmVyLXRsIGhlYWRlciwuY2FwaWJhcmEuYy1ibHVlLmRhcmstdGhlbWUgLmNvcm5lcntib3JkZXItYm90dG9tLWNvbG9yOiMwZTQzNzd9LmNhcGliYXJhLmMtYmx1ZS5kYXJrLXRoZW1lIC5wcm9ncmVzcy1iYXIsLmNhcGliYXJhLmMtYmx1ZSAucHJvZ3Jlc3MtYmFye2JhY2tncm91bmQtY29sb3I6cmdiYSgyNSwxMTgsMjEwLC4yKSFpbXBvcnRhbnR9LmNhcGliYXJhLmMtYmx1ZS5kYXJrLXRoZW1lIC5wcm9ncmVzcy1iYXI6YWZ0ZXIsLmNhcGliYXJhLmMtYmx1ZS5kYXJrLXRoZW1lIC5wcm9ncmVzcy1iYXI6YmVmb3JlLC5jYXBpYmFyYS5jLWJsdWUgLnByb2dyZXNzLWJhcjphZnRlciwuY2FwaWJhcmEuYy1ibHVlIC5wcm9ncmVzcy1iYXI6YmVmb3Jle2JhY2tncm91bmQtY29sb3I6IzE5NzZkMiFpbXBvcnRhbnR9LmNhcGliYXJhLmMtYmx1ZS5kYXJrLXRoZW1lIHNlbGVjdC50YWJzLXNlbGVjdCwuY2FwaWJhcmEuYy1ibHVlIHNlbGVjdC50YWJzLXNlbGVjdHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjUsMTE4LDIxMCwuNykhaW1wb3J0YW50O2JvcmRlci1jb2xvcjojMTk3NmQyIWltcG9ydGFudH0uY2FwaWJhcmEuYy1ibHVlLmRhcmstdGhlbWUgLnRpbWUsLmNhcGliYXJhLmMtYmx1ZSAudGltZXtib3JkZXItY29sb3I6cmdiYSgyNSwxMTgsMjEwLC42KX0uY2FwaWJhcmEuYy1ibHVlLmRhcmstdGhlbWUgLnRpbWUgLnN5bWJvbCwuY2FwaWJhcmEuYy1ibHVlIC50aW1lIC5zeW1ib2x7Y29sb3I6IzE5NzZkMn0uY2FwaWJhcmEuYy1ibHVlLmRhcmstdGhlbWUgLnRpbWUgaW5wdXQ6YWN0aXZlLC5jYXBpYmFyYS5jLWJsdWUuZGFyay10aGVtZSAudGltZSBpbnB1dDpmb2N1cywuY2FwaWJhcmEuYy1ibHVlIC50aW1lIGlucHV0OmFjdGl2ZSwuY2FwaWJhcmEuYy1ibHVlIC50aW1lIGlucHV0OmZvY3Vze2JvcmRlci1jb2xvcjojMTk3NmQyO2JveC1zaGFkb3c6MCA0cHggNnB4IHJnYmEoMjUsMTE4LDIxMCwuMil9LmNhcGliYXJhLmMtYmx1ZS5kYXJrLXRoZW1lIC5pbnB1dC1ib3gsLmNhcGliYXJhLmMtYmx1ZS5kYXJrLXRoZW1lIC5pbnB1dC1zZWN0aW9uIGlucHV0Lm5hdi1pbnB1dCwuY2FwaWJhcmEuYy1ibHVlIC5pbnB1dC1ib3gsLmNhcGliYXJhLmMtYmx1ZSAuaW5wdXQtc2VjdGlvbiBpbnB1dC5uYXYtaW5wdXR7Ym9yZGVyLWNvbG9yOnJnYmEoMjUsMTE4LDIxMCwuNil9LmNhcGliYXJhLmMtYmx1ZS5kYXJrLXRoZW1lIC5pbnB1dC1zZWN0aW9uIGlucHV0Lm5hdi1pbnB1dDphY3RpdmUsLmNhcGliYXJhLmMtYmx1ZS5kYXJrLXRoZW1lIC5pbnB1dC1zZWN0aW9uIGlucHV0Lm5hdi1pbnB1dDpmb2N1cywuY2FwaWJhcmEuYy1ibHVlIC5pbnB1dC1zZWN0aW9uIGlucHV0Lm5hdi1pbnB1dDphY3RpdmUsLmNhcGliYXJhLmMtYmx1ZSAuaW5wdXQtc2VjdGlvbiBpbnB1dC5uYXYtaW5wdXQ6Zm9jdXN7Ym9yZGVyLWNvbG9yOiMxOTc2ZDI7Ym94LXNoYWRvdzowIDRweCA2cHggcmdiYSgyNSwxMTgsMjEwLC4yKX0uY2FwaWJhcmEuYy1ibHVlLmRhcmstdGhlbWUgLmlucHV0LXNlY3Rpb24ubXNqLWlucHV0LWNvbnRhaW5lciB0ZXh0YXJlYS5tc2osLmNhcGliYXJhLmMtYmx1ZSAuaW5wdXQtc2VjdGlvbi5tc2otaW5wdXQtY29udGFpbmVyIHRleHRhcmVhLm1zantib3JkZXI6MnB4IHNvbGlkICMxOTc2ZDJ9LmNhcGliYXJhLmMtYmx1ZS5kYXJrLXRoZW1lIC5pbnB1dC1zZWN0aW9uLm1zai1pbnB1dC1jb250YWluZXIgdGV4dGFyZWEubXNqOmFjdGl2ZSwuY2FwaWJhcmEuYy1ibHVlLmRhcmstdGhlbWUgLmlucHV0LXNlY3Rpb24ubXNqLWlucHV0LWNvbnRhaW5lciB0ZXh0YXJlYS5tc2o6Zm9jdXMsLmNhcGliYXJhLmMtYmx1ZSAuaW5wdXQtc2VjdGlvbi5tc2otaW5wdXQtY29udGFpbmVyIHRleHRhcmVhLm1zajphY3RpdmUsLmNhcGliYXJhLmMtYmx1ZSAuaW5wdXQtc2VjdGlvbi5tc2otaW5wdXQtY29udGFpbmVyIHRleHRhcmVhLm1zajpmb2N1c3tib3gtc2hhZG93OjAgNHB4IDZweCByZ2JhKDI1LDExOCwyMTAsLjIpfS5jYXBpYmFyYS5jLWJsdWUgLmJ0bi1yYWlzZWQsLmNhcGliYXJhLmMtYmx1ZS5kYXJrLXRoZW1lIC5idG4tcmFpc2Vke2JvcmRlci1jb2xvcjojMTk3NmQyO2JhY2tncm91bmQ6cmdiYSgyNSwxMTgsMjEwLC44KX0uY2FwaWJhcmEuYy1ibHVlIC5idG4tb3V0bGluZSwuY2FwaWJhcmEuYy1ibHVlLmRhcmstdGhlbWUgLmJ0bi1vdXRsaW5le2JvcmRlci1jb2xvcjojMTk3NmQyO2NvbG9yOiMxOTc2ZDJ9LmNhcGliYXJhLmMtYmx1ZS5kYXJrLXRoZW1lIC5zZWxlY3QtY29udGFpbmVyIC5zZWxlY3RlZC1kYXksLmNhcGliYXJhLmMtYmx1ZSAuc2VsZWN0LWNvbnRhaW5lciAuc2VsZWN0ZWQtZGF5e2JhY2tncm91bmQ6cmdiYSgyNSwxMTgsMjEwLC4zKTtib3gtc2hhZG93Omluc2V0IDAgMCAxMHB4IHJnYmEoMjUsMTE4LDIxMCwuNSl9LmNhcGliYXJhIC5jLWJsdWUtLWJhY2tncm91bmR7YmFja2dyb3VuZDojMTk3NmQyIWltcG9ydGFudH0uY2FwaWJhcmEgLmMtYmx1ZS1kLS1iYWNrZ3JvdW5ke2JhY2tncm91bmQ6IzExNTA4ZSFpbXBvcnRhbnR9LmNhcGliYXJhIC5jLWJsdWUtbC0tYmFja2dyb3VuZHtiYWNrZ3JvdW5kOiM0ZTljZWEhaW1wb3J0YW50fS5jYXBpYmFyYSAuYy1ibHVlLS10ZXh0e2NvbG9yOiMxOTc2ZDIhaW1wb3J0YW50fS5jYXBpYmFyYSAuYy1ibHVlLWQtLXRleHR7Y29sb3I6IzExNTA4ZSFpbXBvcnRhbnR9LmNhcGliYXJhIC5jLWJsdWUtbC0tdGV4dHtjb2xvcjojNGU5Y2VhIWltcG9ydGFudH0uY2FwaWJhcmEgLmRldGFpbC1kYXkgLmxpc3QtZGV0YWlsIC5pdGVtLWRldGFpbC5jLWJsdWV7YmFja2dyb3VuZDpyZ2JhKDI1LDExOCwyMTAsLjIpO2JvcmRlcjoxcHggc29saWQgIzE5NzZkMn0uY2FwaWJhcmEgLmRldGFpbC1kYXkgLmxpc3QtZGV0YWlsIC5pdGVtLWRldGFpbC5jLWJsdWUgLmxlZnQtaWNvbntiYWNrZ3JvdW5kOiMxOTc2ZDJ9LmNhcGliYXJhIC5kZXRhaWwtZGF5IC5saXN0LWRldGFpbCAuaXRlbS1kZXRhaWwuYy1ibHVlIC5sZWZ0LWljb24ub3V0bGluZWR7Ym9yZGVyOjFweCBzb2xpZCAjMTk3NmQyO2JveC1zaGFkb3c6aW5zZXQgMCAwIDAgMXB4IHJnYmEoMjUsMTE4LDIxMCwuNyl9LmNhcGliYXJhIC5kZXRhaWwtZGF5IC5saXN0LWRldGFpbCAuaXRlbS1kZXRhaWwuYy1ibHVlIC5uYW1le2NvbG9yOiMxOTc2ZDJ9LmNhcGliYXJhIC5mbG9hdC1ib3gtY29udGFpbmVyIC5mbG9hdC1ib3ggc3Bhbi5kYXRhLmMtYmx1ZXtiYWNrZ3JvdW5kOnJnYmEoMjUsMTE4LDIxMCwuOCl9LmNhcGliYXJhIC5mbG9hdC1ib3gtY29udGFpbmVyIC5mbG9hdC1ib3ggc3Bhbi5kYXRhLnNoYXBlLW91dGxpbmVkLmMtYmx1ZXtib3JkZXItY29sb3I6cmdiYSgyNSwxMTgsMjEwLC45KTtiYWNrZ3JvdW5kOnJnYmEoMjUsMTE4LDIxMCwuMSk7Y29sb3I6IzE5NzZkMn0uY2FwaWJhcmEgLmZsb2F0LWJveC1jb250YWluZXIgLmZsb2F0LWJveCBzcGFuLmRhdGEuc2hhcGUtYmFyLmMtYmx1ZXtiYWNrZ3JvdW5kOiMxOTc2ZDJ9LmNhcGliYXJhIC5mbG9hdC1ib3gtY29udGFpbmVyIC5mbG9hdC1ib3ggc3Bhbi5kYXRhLnNoYXBlLWJhci1vdXRsaW5lZC5jLWJsdWV7Ym9yZGVyLWNvbG9yOnJnYmEoMjUsMTE4LDIxMCwuOSk7YmFja2dyb3VuZDpyZ2JhKDI1LDExOCwyMTAsLjEpfS5jYXBpYmFyYSAuZmxvYXQtYm94LWNvbnRhaW5lciAuZmxvYXQtYm94IC5kb3QuYy1ibHVle2JhY2tncm91bmQ6IzE5NzZkMn0uY2FwaWJhcmEgLmZsb2F0LWJveC1jb250YWluZXIgLmZsb2F0LWJveCAuZG90LmMtYmx1ZS5vdXRsaW5lZHtib3JkZXI6MXB4IHNvbGlkICMxOTc2ZDI7Ym94LXNoYWRvdzppbnNldCAwIDAgMCAxcHggcmdiYSgyNSwxMTgsMjEwLC43KX0uY2FwaWJhcmEgLmhlYWRlci10b3AgLnRhYnMtY29udGFpbmVyIC50YWI6bm90KC5kaXNhYmxlZCkuYy1ibHVlLmFjdGl2ZXtiYWNrZ3JvdW5kOnJnYmEoMjUsMTE4LDIxMCwuNyk7Ym9yZGVyLWNvbG9yOnJnYmEoMjUsMTE4LDIxMCwuNyk7Y29sb3I6I2ZmZn0uY2FwaWJhcmEgLmhlYWRlci10b3AgLnRhYnMtY29udGFpbmVyIC50YWI6bm90KC5kaXNhYmxlZCkuYy1ibHVlLmFjdGl2ZTpob3ZlcntiYWNrZ3JvdW5kOnJnYmEoMjUsMTE4LDIxMCwuOCl9LmNhcGliYXJhIC5oZWFkZXItdG9wIC50YWJzLWNvbnRhaW5lciAudGFiOm5vdCguZGlzYWJsZWQpLmMtYmx1ZTpob3ZlcntiYWNrZ3JvdW5kOnJnYmEoMjUsMTE4LDIxMCwuMik7Ym9yZGVyLWNvbG9yOnJnYmEoMjUsMTE4LDIxMCwuOSl9LmNhcGliYXJhIC5pbnB1dC1ib3ggLm1pbmktaW5wdXQtc2VjdGlvbi0taWNvbi5jLWJsdWV7YmFja2dyb3VuZDojMTk3NmQyfS5jYXBpYmFyYS5jLWxpZ2h0LWJsdWU6bm90KC5kYXJrLXRoZW1lKSA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1ie2JhY2tncm91bmQ6IzFjYTBkYn0uY2FwaWJhcmEuYy1saWdodC1ibHVlOm5vdCguZGFyay10aGVtZSkgLmhlYWRlci10b3B7YmFja2dyb3VuZDojZDNlN2YwfS5jYXBpYmFyYS5jLWxpZ2h0LWJsdWU6bm90KC5kYXJrLXRoZW1lKSAuY29ybmVye2JhY2tncm91bmQ6I2QzZTdmMDtib3JkZXItY29sb3I6IzYwY2NmZH0uY2FwaWJhcmEuYy1saWdodC1ibHVlOm5vdCguZGFyay10aGVtZSkgLmNvbnRhaW5lci10bCBoZWFkZXJ7YmFja2dyb3VuZDojZDNlN2YwO2JvcmRlci1ib3R0b20tY29sb3I6IzYwY2NmZH0uY2FwaWJhcmEuYy1saWdodC1ibHVlOm5vdCguZGFyay10aGVtZSkgLmNvbnRhaW5lci10bCBoZWFkZXIgLm1lcy5tZXMtcmVkdWNlZDphZnRlcntiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCg5MGRlZyx0cmFuc3BhcmVudCwjYzVlY2ZlKSFpbXBvcnRhbnR9LmNhcGliYXJhLmMtbGlnaHQtYmx1ZTpub3QoLmRhcmstdGhlbWUpIG5hdi5yaWdodHtib3JkZXItY29sb3I6IzYwY2NmZH0uY2FwaWJhcmEuYy1saWdodC1ibHVlLmRhcmstdGhlbWUgLmhlYWRlci10b3AsLmNhcGliYXJhLmMtbGlnaHQtYmx1ZS5kYXJrLXRoZW1lIG5hdi5yaWdodHtib3JkZXItY29sb3I6IzAyNjM4Zn0uY2FwaWJhcmEuYy1saWdodC1ibHVlLmRhcmstdGhlbWUgLmNvbnRhaW5lci10bCBoZWFkZXIsLmNhcGliYXJhLmMtbGlnaHQtYmx1ZS5kYXJrLXRoZW1lIC5jb3JuZXJ7Ym9yZGVyLWJvdHRvbS1jb2xvcjojMDI2MzhmfS5jYXBpYmFyYS5jLWxpZ2h0LWJsdWUuZGFyay10aGVtZSAucHJvZ3Jlc3MtYmFyLC5jYXBpYmFyYS5jLWxpZ2h0LWJsdWUgLnByb2dyZXNzLWJhcntiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMywxNjksMjQ0LC4yKSFpbXBvcnRhbnR9LmNhcGliYXJhLmMtbGlnaHQtYmx1ZS5kYXJrLXRoZW1lIC5wcm9ncmVzcy1iYXI6YWZ0ZXIsLmNhcGliYXJhLmMtbGlnaHQtYmx1ZS5kYXJrLXRoZW1lIC5wcm9ncmVzcy1iYXI6YmVmb3JlLC5jYXBpYmFyYS5jLWxpZ2h0LWJsdWUgLnByb2dyZXNzLWJhcjphZnRlciwuY2FwaWJhcmEuYy1saWdodC1ibHVlIC5wcm9ncmVzcy1iYXI6YmVmb3Jle2JhY2tncm91bmQtY29sb3I6IzAzYTlmNCFpbXBvcnRhbnR9LmNhcGliYXJhLmMtbGlnaHQtYmx1ZS5kYXJrLXRoZW1lIHNlbGVjdC50YWJzLXNlbGVjdCwuY2FwaWJhcmEuYy1saWdodC1ibHVlIHNlbGVjdC50YWJzLXNlbGVjdHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMywxNjksMjQ0LC43KSFpbXBvcnRhbnQ7Ym9yZGVyLWNvbG9yOiMwM2E5ZjQhaW1wb3J0YW50fS5jYXBpYmFyYS5jLWxpZ2h0LWJsdWUuZGFyay10aGVtZSAudGltZSwuY2FwaWJhcmEuYy1saWdodC1ibHVlIC50aW1le2JvcmRlci1jb2xvcjpyZ2JhKDMsMTY5LDI0NCwuNil9LmNhcGliYXJhLmMtbGlnaHQtYmx1ZS5kYXJrLXRoZW1lIC50aW1lIC5zeW1ib2wsLmNhcGliYXJhLmMtbGlnaHQtYmx1ZSAudGltZSAuc3ltYm9se2NvbG9yOiMwM2E5ZjR9LmNhcGliYXJhLmMtbGlnaHQtYmx1ZS5kYXJrLXRoZW1lIC50aW1lIGlucHV0OmFjdGl2ZSwuY2FwaWJhcmEuYy1saWdodC1ibHVlLmRhcmstdGhlbWUgLnRpbWUgaW5wdXQ6Zm9jdXMsLmNhcGliYXJhLmMtbGlnaHQtYmx1ZSAudGltZSBpbnB1dDphY3RpdmUsLmNhcGliYXJhLmMtbGlnaHQtYmx1ZSAudGltZSBpbnB1dDpmb2N1c3tib3JkZXItY29sb3I6IzAzYTlmNDtib3gtc2hhZG93OjAgNHB4IDZweCByZ2JhKDMsMTY5LDI0NCwuMil9LmNhcGliYXJhLmMtbGlnaHQtYmx1ZS5kYXJrLXRoZW1lIC5pbnB1dC1ib3gsLmNhcGliYXJhLmMtbGlnaHQtYmx1ZS5kYXJrLXRoZW1lIC5pbnB1dC1zZWN0aW9uIGlucHV0Lm5hdi1pbnB1dCwuY2FwaWJhcmEuYy1saWdodC1ibHVlIC5pbnB1dC1ib3gsLmNhcGliYXJhLmMtbGlnaHQtYmx1ZSAuaW5wdXQtc2VjdGlvbiBpbnB1dC5uYXYtaW5wdXR7Ym9yZGVyLWNvbG9yOnJnYmEoMywxNjksMjQ0LC42KX0uY2FwaWJhcmEuYy1saWdodC1ibHVlLmRhcmstdGhlbWUgLmlucHV0LXNlY3Rpb24gaW5wdXQubmF2LWlucHV0OmFjdGl2ZSwuY2FwaWJhcmEuYy1saWdodC1ibHVlLmRhcmstdGhlbWUgLmlucHV0LXNlY3Rpb24gaW5wdXQubmF2LWlucHV0OmZvY3VzLC5jYXBpYmFyYS5jLWxpZ2h0LWJsdWUgLmlucHV0LXNlY3Rpb24gaW5wdXQubmF2LWlucHV0OmFjdGl2ZSwuY2FwaWJhcmEuYy1saWdodC1ibHVlIC5pbnB1dC1zZWN0aW9uIGlucHV0Lm5hdi1pbnB1dDpmb2N1c3tib3JkZXItY29sb3I6IzAzYTlmNDtib3gtc2hhZG93OjAgNHB4IDZweCByZ2JhKDMsMTY5LDI0NCwuMil9LmNhcGliYXJhLmMtbGlnaHQtYmx1ZS5kYXJrLXRoZW1lIC5pbnB1dC1zZWN0aW9uLm1zai1pbnB1dC1jb250YWluZXIgdGV4dGFyZWEubXNqLC5jYXBpYmFyYS5jLWxpZ2h0LWJsdWUgLmlucHV0LXNlY3Rpb24ubXNqLWlucHV0LWNvbnRhaW5lciB0ZXh0YXJlYS5tc2p7Ym9yZGVyOjJweCBzb2xpZCAjMDNhOWY0fS5jYXBpYmFyYS5jLWxpZ2h0LWJsdWUuZGFyay10aGVtZSAuaW5wdXQtc2VjdGlvbi5tc2otaW5wdXQtY29udGFpbmVyIHRleHRhcmVhLm1zajphY3RpdmUsLmNhcGliYXJhLmMtbGlnaHQtYmx1ZS5kYXJrLXRoZW1lIC5pbnB1dC1zZWN0aW9uLm1zai1pbnB1dC1jb250YWluZXIgdGV4dGFyZWEubXNqOmZvY3VzLC5jYXBpYmFyYS5jLWxpZ2h0LWJsdWUgLmlucHV0LXNlY3Rpb24ubXNqLWlucHV0LWNvbnRhaW5lciB0ZXh0YXJlYS5tc2o6YWN0aXZlLC5jYXBpYmFyYS5jLWxpZ2h0LWJsdWUgLmlucHV0LXNlY3Rpb24ubXNqLWlucHV0LWNvbnRhaW5lciB0ZXh0YXJlYS5tc2o6Zm9jdXN7Ym94LXNoYWRvdzowIDRweCA2cHggcmdiYSgzLDE2OSwyNDQsLjIpfS5jYXBpYmFyYS5jLWxpZ2h0LWJsdWUgLmJ0bi1yYWlzZWQsLmNhcGliYXJhLmMtbGlnaHQtYmx1ZS5kYXJrLXRoZW1lIC5idG4tcmFpc2Vke2JvcmRlci1jb2xvcjojMDNhOWY0O2JhY2tncm91bmQ6cmdiYSgzLDE2OSwyNDQsLjgpfS5jYXBpYmFyYS5jLWxpZ2h0LWJsdWUgLmJ0bi1vdXRsaW5lLC5jYXBpYmFyYS5jLWxpZ2h0LWJsdWUuZGFyay10aGVtZSAuYnRuLW91dGxpbmV7Ym9yZGVyLWNvbG9yOiMwM2E5ZjQ7Y29sb3I6IzAzYTlmNH0uY2FwaWJhcmEuYy1saWdodC1ibHVlLmRhcmstdGhlbWUgLnNlbGVjdC1jb250YWluZXIgLnNlbGVjdGVkLWRheSwuY2FwaWJhcmEuYy1saWdodC1ibHVlIC5zZWxlY3QtY29udGFpbmVyIC5zZWxlY3RlZC1kYXl7YmFja2dyb3VuZDpyZ2JhKDMsMTY5LDI0NCwuMyk7Ym94LXNoYWRvdzppbnNldCAwIDAgMTBweCByZ2JhKDMsMTY5LDI0NCwuNSl9LmNhcGliYXJhIC5jLWxpZ2h0LWJsdWUtLWJhY2tncm91bmR7YmFja2dyb3VuZDojMDNhOWY0IWltcG9ydGFudH0uY2FwaWJhcmEgLmMtbGlnaHQtYmx1ZS1kLS1iYWNrZ3JvdW5ke2JhY2tncm91bmQ6IzAyNzVhOCFpbXBvcnRhbnR9LmNhcGliYXJhIC5jLWxpZ2h0LWJsdWUtbC0tYmFja2dyb3VuZHtiYWNrZ3JvdW5kOiM0N2M0ZmQhaW1wb3J0YW50fS5jYXBpYmFyYSAuYy1saWdodC1ibHVlLS10ZXh0e2NvbG9yOiMwM2E5ZjQhaW1wb3J0YW50fS5jYXBpYmFyYSAuYy1saWdodC1ibHVlLWQtLXRleHR7Y29sb3I6IzAyNzVhOCFpbXBvcnRhbnR9LmNhcGliYXJhIC5jLWxpZ2h0LWJsdWUtbC0tdGV4dHtjb2xvcjojNDdjNGZkIWltcG9ydGFudH0uY2FwaWJhcmEgLmRldGFpbC1kYXkgLmxpc3QtZGV0YWlsIC5pdGVtLWRldGFpbC5jLWxpZ2h0LWJsdWV7YmFja2dyb3VuZDpyZ2JhKDMsMTY5LDI0NCwuMik7Ym9yZGVyOjFweCBzb2xpZCAjMDNhOWY0fS5jYXBpYmFyYSAuZGV0YWlsLWRheSAubGlzdC1kZXRhaWwgLml0ZW0tZGV0YWlsLmMtbGlnaHQtYmx1ZSAubGVmdC1pY29ue2JhY2tncm91bmQ6IzAzYTlmNH0uY2FwaWJhcmEgLmRldGFpbC1kYXkgLmxpc3QtZGV0YWlsIC5pdGVtLWRldGFpbC5jLWxpZ2h0LWJsdWUgLmxlZnQtaWNvbi5vdXRsaW5lZHtib3JkZXI6MXB4IHNvbGlkICMwM2E5ZjQ7Ym94LXNoYWRvdzppbnNldCAwIDAgMCAxcHggcmdiYSgzLDE2OSwyNDQsLjcpfS5jYXBpYmFyYSAuZGV0YWlsLWRheSAubGlzdC1kZXRhaWwgLml0ZW0tZGV0YWlsLmMtbGlnaHQtYmx1ZSAubmFtZXtjb2xvcjojMDNhOWY0fS5jYXBpYmFyYSAuZmxvYXQtYm94LWNvbnRhaW5lciAuZmxvYXQtYm94IHNwYW4uZGF0YS5jLWxpZ2h0LWJsdWV7YmFja2dyb3VuZDpyZ2JhKDMsMTY5LDI0NCwuOCl9LmNhcGliYXJhIC5mbG9hdC1ib3gtY29udGFpbmVyIC5mbG9hdC1ib3ggc3Bhbi5kYXRhLnNoYXBlLW91dGxpbmVkLmMtbGlnaHQtYmx1ZXtib3JkZXItY29sb3I6cmdiYSgzLDE2OSwyNDQsLjkpO2JhY2tncm91bmQ6cmdiYSgzLDE2OSwyNDQsLjEpO2NvbG9yOiMwM2E5ZjR9LmNhcGliYXJhIC5mbG9hdC1ib3gtY29udGFpbmVyIC5mbG9hdC1ib3ggc3Bhbi5kYXRhLnNoYXBlLWJhci5jLWxpZ2h0LWJsdWV7YmFja2dyb3VuZDojMDNhOWY0fS5jYXBpYmFyYSAuZmxvYXQtYm94LWNvbnRhaW5lciAuZmxvYXQtYm94IHNwYW4uZGF0YS5zaGFwZS1iYXItb3V0bGluZWQuYy1saWdodC1ibHVle2JvcmRlci1jb2xvcjpyZ2JhKDMsMTY5LDI0NCwuOSk7YmFja2dyb3VuZDpyZ2JhKDMsMTY5LDI0NCwuMSl9LmNhcGliYXJhIC5mbG9hdC1ib3gtY29udGFpbmVyIC5mbG9hdC1ib3ggLmRvdC5jLWxpZ2h0LWJsdWV7YmFja2dyb3VuZDojMDNhOWY0fS5jYXBpYmFyYSAuZmxvYXQtYm94LWNvbnRhaW5lciAuZmxvYXQtYm94IC5kb3QuYy1saWdodC1ibHVlLm91dGxpbmVke2JvcmRlcjoxcHggc29saWQgIzAzYTlmNDtib3gtc2hhZG93Omluc2V0IDAgMCAwIDFweCByZ2JhKDMsMTY5LDI0NCwuNyl9LmNhcGliYXJhIC5oZWFkZXItdG9wIC50YWJzLWNvbnRhaW5lciAudGFiOm5vdCguZGlzYWJsZWQpLmMtbGlnaHQtYmx1ZS5hY3RpdmV7YmFja2dyb3VuZDpyZ2JhKDMsMTY5LDI0NCwuNyk7Ym9yZGVyLWNvbG9yOnJnYmEoMywxNjksMjQ0LC43KTtjb2xvcjojZmZmfS5jYXBpYmFyYSAuaGVhZGVyLXRvcCAudGFicy1jb250YWluZXIgLnRhYjpub3QoLmRpc2FibGVkKS5jLWxpZ2h0LWJsdWUuYWN0aXZlOmhvdmVye2JhY2tncm91bmQ6cmdiYSgzLDE2OSwyNDQsLjgpfS5jYXBpYmFyYSAuaGVhZGVyLXRvcCAudGFicy1jb250YWluZXIgLnRhYjpub3QoLmRpc2FibGVkKS5jLWxpZ2h0LWJsdWU6aG92ZXJ7YmFja2dyb3VuZDpyZ2JhKDMsMTY5LDI0NCwuMik7Ym9yZGVyLWNvbG9yOnJnYmEoMywxNjksMjQ0LC45KX0uY2FwaWJhcmEgLmlucHV0LWJveCAubWluaS1pbnB1dC1zZWN0aW9uLS1pY29uLmMtbGlnaHQtYmx1ZXtiYWNrZ3JvdW5kOiMwM2E5ZjR9LmNhcGliYXJhLmMtY3lhbjpub3QoLmRhcmstdGhlbWUpIDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWJ7YmFja2dyb3VuZDojMTVhY2JmfS5jYXBpYmFyYS5jLWN5YW46bm90KC5kYXJrLXRoZW1lKSAuaGVhZGVyLXRvcHtiYWNrZ3JvdW5kOiNiOWUyZTh9LmNhcGliYXJhLmMtY3lhbjpub3QoLmRhcmstdGhlbWUpIC5jb3JuZXJ7YmFja2dyb3VuZDojYjllMmU4O2JvcmRlci1jb2xvcjojM2JlOWZmfS5jYXBpYmFyYS5jLWN5YW46bm90KC5kYXJrLXRoZW1lKSAuY29udGFpbmVyLXRsIGhlYWRlcntiYWNrZ3JvdW5kOiNiOWUyZTg7Ym9yZGVyLWJvdHRvbS1jb2xvcjojM2JlOWZmfS5jYXBpYmFyYS5jLWN5YW46bm90KC5kYXJrLXRoZW1lKSAuY29udGFpbmVyLXRsIGhlYWRlciAubWVzLm1lcy1yZWR1Y2VkOmFmdGVye2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDkwZGVnLHRyYW5zcGFyZW50LCNhMWY0ZmYpIWltcG9ydGFudH0uY2FwaWJhcmEuYy1jeWFuOm5vdCguZGFyay10aGVtZSkgbmF2LnJpZ2h0e2JvcmRlci1jb2xvcjojM2JlOWZmfS5jYXBpYmFyYS5jLWN5YW4uZGFyay10aGVtZSAuaGVhZGVyLXRvcCwuY2FwaWJhcmEuYy1jeWFuLmRhcmstdGhlbWUgbmF2LnJpZ2h0e2JvcmRlci1jb2xvcjojMDA2MjZlfS5jYXBpYmFyYS5jLWN5YW4uZGFyay10aGVtZSAuY29udGFpbmVyLXRsIGhlYWRlciwuY2FwaWJhcmEuYy1jeWFuLmRhcmstdGhlbWUgLmNvcm5lcntib3JkZXItYm90dG9tLWNvbG9yOiMwMDYyNmV9LmNhcGliYXJhLmMtY3lhbi5kYXJrLXRoZW1lIC5wcm9ncmVzcy1iYXIsLmNhcGliYXJhLmMtY3lhbiAucHJvZ3Jlc3MtYmFye2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDE4OCwyMTIsLjIpIWltcG9ydGFudH0uY2FwaWJhcmEuYy1jeWFuLmRhcmstdGhlbWUgLnByb2dyZXNzLWJhcjphZnRlciwuY2FwaWJhcmEuYy1jeWFuLmRhcmstdGhlbWUgLnByb2dyZXNzLWJhcjpiZWZvcmUsLmNhcGliYXJhLmMtY3lhbiAucHJvZ3Jlc3MtYmFyOmFmdGVyLC5jYXBpYmFyYS5jLWN5YW4gLnByb2dyZXNzLWJhcjpiZWZvcmV7YmFja2dyb3VuZC1jb2xvcjojMDBiY2Q0IWltcG9ydGFudH0uY2FwaWJhcmEuYy1jeWFuLmRhcmstdGhlbWUgc2VsZWN0LnRhYnMtc2VsZWN0LC5jYXBpYmFyYS5jLWN5YW4gc2VsZWN0LnRhYnMtc2VsZWN0e2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDE4OCwyMTIsLjcpIWltcG9ydGFudDtib3JkZXItY29sb3I6IzAwYmNkNCFpbXBvcnRhbnR9LmNhcGliYXJhLmMtY3lhbi5kYXJrLXRoZW1lIC50aW1lLC5jYXBpYmFyYS5jLWN5YW4gLnRpbWV7Ym9yZGVyLWNvbG9yOnJnYmEoMCwxODgsMjEyLC42KX0uY2FwaWJhcmEuYy1jeWFuLmRhcmstdGhlbWUgLnRpbWUgLnN5bWJvbCwuY2FwaWJhcmEuYy1jeWFuIC50aW1lIC5zeW1ib2x7Y29sb3I6IzAwYmNkNH0uY2FwaWJhcmEuYy1jeWFuLmRhcmstdGhlbWUgLnRpbWUgaW5wdXQ6YWN0aXZlLC5jYXBpYmFyYS5jLWN5YW4uZGFyay10aGVtZSAudGltZSBpbnB1dDpmb2N1cywuY2FwaWJhcmEuYy1jeWFuIC50aW1lIGlucHV0OmFjdGl2ZSwuY2FwaWJhcmEuYy1jeWFuIC50aW1lIGlucHV0OmZvY3Vze2JvcmRlci1jb2xvcjojMDBiY2Q0O2JveC1zaGFkb3c6MCA0cHggNnB4IHJnYmEoMCwxODgsMjEyLC4yKX0uY2FwaWJhcmEuYy1jeWFuLmRhcmstdGhlbWUgLmlucHV0LWJveCwuY2FwaWJhcmEuYy1jeWFuLmRhcmstdGhlbWUgLmlucHV0LXNlY3Rpb24gaW5wdXQubmF2LWlucHV0LC5jYXBpYmFyYS5jLWN5YW4gLmlucHV0LWJveCwuY2FwaWJhcmEuYy1jeWFuIC5pbnB1dC1zZWN0aW9uIGlucHV0Lm5hdi1pbnB1dHtib3JkZXItY29sb3I6cmdiYSgwLDE4OCwyMTIsLjYpfS5jYXBpYmFyYS5jLWN5YW4uZGFyay10aGVtZSAuaW5wdXQtc2VjdGlvbiBpbnB1dC5uYXYtaW5wdXQ6YWN0aXZlLC5jYXBpYmFyYS5jLWN5YW4uZGFyay10aGVtZSAuaW5wdXQtc2VjdGlvbiBpbnB1dC5uYXYtaW5wdXQ6Zm9jdXMsLmNhcGliYXJhLmMtY3lhbiAuaW5wdXQtc2VjdGlvbiBpbnB1dC5uYXYtaW5wdXQ6YWN0aXZlLC5jYXBpYmFyYS5jLWN5YW4gLmlucHV0LXNlY3Rpb24gaW5wdXQubmF2LWlucHV0OmZvY3Vze2JvcmRlci1jb2xvcjojMDBiY2Q0O2JveC1zaGFkb3c6MCA0cHggNnB4IHJnYmEoMCwxODgsMjEyLC4yKX0uY2FwaWJhcmEuYy1jeWFuLmRhcmstdGhlbWUgLmlucHV0LXNlY3Rpb24ubXNqLWlucHV0LWNvbnRhaW5lciB0ZXh0YXJlYS5tc2osLmNhcGliYXJhLmMtY3lhbiAuaW5wdXQtc2VjdGlvbi5tc2otaW5wdXQtY29udGFpbmVyIHRleHRhcmVhLm1zantib3JkZXI6MnB4IHNvbGlkICMwMGJjZDR9LmNhcGliYXJhLmMtY3lhbi5kYXJrLXRoZW1lIC5pbnB1dC1zZWN0aW9uLm1zai1pbnB1dC1jb250YWluZXIgdGV4dGFyZWEubXNqOmFjdGl2ZSwuY2FwaWJhcmEuYy1jeWFuLmRhcmstdGhlbWUgLmlucHV0LXNlY3Rpb24ubXNqLWlucHV0LWNvbnRhaW5lciB0ZXh0YXJlYS5tc2o6Zm9jdXMsLmNhcGliYXJhLmMtY3lhbiAuaW5wdXQtc2VjdGlvbi5tc2otaW5wdXQtY29udGFpbmVyIHRleHRhcmVhLm1zajphY3RpdmUsLmNhcGliYXJhLmMtY3lhbiAuaW5wdXQtc2VjdGlvbi5tc2otaW5wdXQtY29udGFpbmVyIHRleHRhcmVhLm1zajpmb2N1c3tib3gtc2hhZG93OjAgNHB4IDZweCByZ2JhKDAsMTg4LDIxMiwuMil9LmNhcGliYXJhLmMtY3lhbiAuYnRuLXJhaXNlZCwuY2FwaWJhcmEuYy1jeWFuLmRhcmstdGhlbWUgLmJ0bi1yYWlzZWR7Ym9yZGVyLWNvbG9yOiMwMGJjZDQ7YmFja2dyb3VuZDpyZ2JhKDAsMTg4LDIxMiwuOCl9LmNhcGliYXJhLmMtY3lhbiAuYnRuLW91dGxpbmUsLmNhcGliYXJhLmMtY3lhbi5kYXJrLXRoZW1lIC5idG4tb3V0bGluZXtib3JkZXItY29sb3I6IzAwYmNkNDtjb2xvcjojMDBiY2Q0fS5jYXBpYmFyYS5jLWN5YW4uZGFyay10aGVtZSAuc2VsZWN0LWNvbnRhaW5lciAuc2VsZWN0ZWQtZGF5LC5jYXBpYmFyYS5jLWN5YW4gLnNlbGVjdC1jb250YWluZXIgLnNlbGVjdGVkLWRheXtiYWNrZ3JvdW5kOnJnYmEoMCwxODgsMjEyLC4zKTtib3gtc2hhZG93Omluc2V0IDAgMCAxMHB4IHJnYmEoMCwxODgsMjEyLC41KX0uY2FwaWJhcmEgLmMtY3lhbi0tYmFja2dyb3VuZHtiYWNrZ3JvdW5kOiMwMGJjZDQhaW1wb3J0YW50fS5jYXBpYmFyYSAuYy1jeWFuLWQtLWJhY2tncm91bmR7YmFja2dyb3VuZDojMDA3ODg4IWltcG9ydGFudH0uY2FwaWJhcmEgLmMtY3lhbi1sLS1iYWNrZ3JvdW5ke2JhY2tncm91bmQ6IzIyZTZmZiFpbXBvcnRhbnR9LmNhcGliYXJhIC5jLWN5YW4tLXRleHR7Y29sb3I6IzAwYmNkNCFpbXBvcnRhbnR9LmNhcGliYXJhIC5jLWN5YW4tZC0tdGV4dHtjb2xvcjojMDA3ODg4IWltcG9ydGFudH0uY2FwaWJhcmEgLmMtY3lhbi1sLS10ZXh0e2NvbG9yOiMyMmU2ZmYhaW1wb3J0YW50fS5jYXBpYmFyYSAuZGV0YWlsLWRheSAubGlzdC1kZXRhaWwgLml0ZW0tZGV0YWlsLmMtY3lhbntiYWNrZ3JvdW5kOnJnYmEoMCwxODgsMjEyLC4yKTtib3JkZXI6MXB4IHNvbGlkICMwMGJjZDR9LmNhcGliYXJhIC5kZXRhaWwtZGF5IC5saXN0LWRldGFpbCAuaXRlbS1kZXRhaWwuYy1jeWFuIC5sZWZ0LWljb257YmFja2dyb3VuZDojMDBiY2Q0fS5jYXBpYmFyYSAuZGV0YWlsLWRheSAubGlzdC1kZXRhaWwgLml0ZW0tZGV0YWlsLmMtY3lhbiAubGVmdC1pY29uLm91dGxpbmVke2JvcmRlcjoxcHggc29saWQgIzAwYmNkNDtib3gtc2hhZG93Omluc2V0IDAgMCAwIDFweCByZ2JhKDAsMTg4LDIxMiwuNyl9LmNhcGliYXJhIC5kZXRhaWwtZGF5IC5saXN0LWRldGFpbCAuaXRlbS1kZXRhaWwuYy1jeWFuIC5uYW1le2NvbG9yOiMwMGJjZDR9LmNhcGliYXJhIC5mbG9hdC1ib3gtY29udGFpbmVyIC5mbG9hdC1ib3ggc3Bhbi5kYXRhLmMtY3lhbntiYWNrZ3JvdW5kOnJnYmEoMCwxODgsMjEyLC44KX0uY2FwaWJhcmEgLmZsb2F0LWJveC1jb250YWluZXIgLmZsb2F0LWJveCBzcGFuLmRhdGEuc2hhcGUtb3V0bGluZWQuYy1jeWFue2JvcmRlci1jb2xvcjpyZ2JhKDAsMTg4LDIxMiwuOSk7YmFja2dyb3VuZDpyZ2JhKDAsMTg4LDIxMiwuMSk7Y29sb3I6IzAwYmNkNH0uY2FwaWJhcmEgLmZsb2F0LWJveC1jb250YWluZXIgLmZsb2F0LWJveCBzcGFuLmRhdGEuc2hhcGUtYmFyLmMtY3lhbntiYWNrZ3JvdW5kOiMwMGJjZDR9LmNhcGliYXJhIC5mbG9hdC1ib3gtY29udGFpbmVyIC5mbG9hdC1ib3ggc3Bhbi5kYXRhLnNoYXBlLWJhci1vdXRsaW5lZC5jLWN5YW57Ym9yZGVyLWNvbG9yOnJnYmEoMCwxODgsMjEyLC45KTtiYWNrZ3JvdW5kOnJnYmEoMCwxODgsMjEyLC4xKX0uY2FwaWJhcmEgLmZsb2F0LWJveC1jb250YWluZXIgLmZsb2F0LWJveCAuZG90LmMtY3lhbntiYWNrZ3JvdW5kOiMwMGJjZDR9LmNhcGliYXJhIC5mbG9hdC1ib3gtY29udGFpbmVyIC5mbG9hdC1ib3ggLmRvdC5jLWN5YW4ub3V0bGluZWR7Ym9yZGVyOjFweCBzb2xpZCAjMDBiY2Q0O2JveC1zaGFkb3c6aW5zZXQgMCAwIDAgMXB4IHJnYmEoMCwxODgsMjEyLC43KX0uY2FwaWJhcmEgLmhlYWRlci10b3AgLnRhYnMtY29udGFpbmVyIC50YWI6bm90KC5kaXNhYmxlZCkuYy1jeWFuLmFjdGl2ZXtiYWNrZ3JvdW5kOnJnYmEoMCwxODgsMjEyLC43KTtib3JkZXItY29sb3I6cmdiYSgwLDE4OCwyMTIsLjcpO2NvbG9yOiNmZmZ9LmNhcGliYXJhIC5oZWFkZXItdG9wIC50YWJzLWNvbnRhaW5lciAudGFiOm5vdCguZGlzYWJsZWQpLmMtY3lhbi5hY3RpdmU6aG92ZXJ7YmFja2dyb3VuZDpyZ2JhKDAsMTg4LDIxMiwuOCl9LmNhcGliYXJhIC5oZWFkZXItdG9wIC50YWJzLWNvbnRhaW5lciAudGFiOm5vdCguZGlzYWJsZWQpLmMtY3lhbjpob3ZlcntiYWNrZ3JvdW5kOnJnYmEoMCwxODgsMjEyLC4yKTtib3JkZXItY29sb3I6cmdiYSgwLDE4OCwyMTIsLjkpfS5jYXBpYmFyYSAuaW5wdXQtYm94IC5taW5pLWlucHV0LXNlY3Rpb24tLWljb24uYy1jeWFue2JhY2tncm91bmQ6IzAwYmNkNH0uY2FwaWJhcmEuYy10ZWFsOm5vdCguZGFyay10aGVtZSkgOjotd2Via2l0LXNjcm9sbGJhci10aHVtYntiYWNrZ3JvdW5kOiMwZjg3N2N9LmNhcGliYXJhLmMtdGVhbDpub3QoLmRhcmstdGhlbWUpIC5oZWFkZXItdG9we2JhY2tncm91bmQ6IzhhZDhkMX0uY2FwaWJhcmEuYy10ZWFsOm5vdCguZGFyay10aGVtZSkgLmNvcm5lcntiYWNrZ3JvdW5kOiM4YWQ4ZDE7Ym9yZGVyLWNvbG9yOiMwMGZjZTR9LmNhcGliYXJhLmMtdGVhbDpub3QoLmRhcmstdGhlbWUpIC5jb250YWluZXItdGwgaGVhZGVye2JhY2tncm91bmQ6IzhhZDhkMTtib3JkZXItYm90dG9tLWNvbG9yOiMwMGZjZTR9LmNhcGliYXJhLmMtdGVhbDpub3QoLmRhcmstdGhlbWUpIC5jb250YWluZXItdGwgaGVhZGVyIC5tZXMubWVzLXJlZHVjZWQ6YWZ0ZXJ7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoOTBkZWcsdHJhbnNwYXJlbnQsIzYzZmZmMCkhaW1wb3J0YW50fS5jYXBpYmFyYS5jLXRlYWw6bm90KC5kYXJrLXRoZW1lKSBuYXYucmlnaHR7Ym9yZGVyLWNvbG9yOiMwMGZjZTR9LmNhcGliYXJhLmMtdGVhbC5kYXJrLXRoZW1lIC5oZWFkZXItdG9wLC5jYXBpYmFyYS5jLXRlYWwuZGFyay10aGVtZSBuYXYucmlnaHR7Ym9yZGVyLWNvbG9yOiMwMDMwMmN9LmNhcGliYXJhLmMtdGVhbC5kYXJrLXRoZW1lIC5jb250YWluZXItdGwgaGVhZGVyLC5jYXBpYmFyYS5jLXRlYWwuZGFyay10aGVtZSAuY29ybmVye2JvcmRlci1ib3R0b20tY29sb3I6IzAwMzAyY30uY2FwaWJhcmEuYy10ZWFsLmRhcmstdGhlbWUgLnByb2dyZXNzLWJhciwuY2FwaWJhcmEuYy10ZWFsIC5wcm9ncmVzcy1iYXJ7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMTUwLDEzNiwuMikhaW1wb3J0YW50fS5jYXBpYmFyYS5jLXRlYWwuZGFyay10aGVtZSAucHJvZ3Jlc3MtYmFyOmFmdGVyLC5jYXBpYmFyYS5jLXRlYWwuZGFyay10aGVtZSAucHJvZ3Jlc3MtYmFyOmJlZm9yZSwuY2FwaWJhcmEuYy10ZWFsIC5wcm9ncmVzcy1iYXI6YWZ0ZXIsLmNhcGliYXJhLmMtdGVhbCAucHJvZ3Jlc3MtYmFyOmJlZm9yZXtiYWNrZ3JvdW5kLWNvbG9yOiMwMDk2ODghaW1wb3J0YW50fS5jYXBpYmFyYS5jLXRlYWwuZGFyay10aGVtZSBzZWxlY3QudGFicy1zZWxlY3QsLmNhcGliYXJhLmMtdGVhbCBzZWxlY3QudGFicy1zZWxlY3R7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMTUwLDEzNiwuNykhaW1wb3J0YW50O2JvcmRlci1jb2xvcjojMDA5Njg4IWltcG9ydGFudH0uY2FwaWJhcmEuYy10ZWFsLmRhcmstdGhlbWUgLnRpbWUsLmNhcGliYXJhLmMtdGVhbCAudGltZXtib3JkZXItY29sb3I6cmdiYSgwLDE1MCwxMzYsLjYpfS5jYXBpYmFyYS5jLXRlYWwuZGFyay10aGVtZSAudGltZSAuc3ltYm9sLC5jYXBpYmFyYS5jLXRlYWwgLnRpbWUgLnN5bWJvbHtjb2xvcjojMDA5Njg4fS5jYXBpYmFyYS5jLXRlYWwuZGFyay10aGVtZSAudGltZSBpbnB1dDphY3RpdmUsLmNhcGliYXJhLmMtdGVhbC5kYXJrLXRoZW1lIC50aW1lIGlucHV0OmZvY3VzLC5jYXBpYmFyYS5jLXRlYWwgLnRpbWUgaW5wdXQ6YWN0aXZlLC5jYXBpYmFyYS5jLXRlYWwgLnRpbWUgaW5wdXQ6Zm9jdXN7Ym9yZGVyLWNvbG9yOiMwMDk2ODg7Ym94LXNoYWRvdzowIDRweCA2cHggcmdiYSgwLDE1MCwxMzYsLjIpfS5jYXBpYmFyYS5jLXRlYWwuZGFyay10aGVtZSAuaW5wdXQtYm94LC5jYXBpYmFyYS5jLXRlYWwuZGFyay10aGVtZSAuaW5wdXQtc2VjdGlvbiBpbnB1dC5uYXYtaW5wdXQsLmNhcGliYXJhLmMtdGVhbCAuaW5wdXQtYm94LC5jYXBpYmFyYS5jLXRlYWwgLmlucHV0LXNlY3Rpb24gaW5wdXQubmF2LWlucHV0e2JvcmRlci1jb2xvcjpyZ2JhKDAsMTUwLDEzNiwuNil9LmNhcGliYXJhLmMtdGVhbC5kYXJrLXRoZW1lIC5pbnB1dC1zZWN0aW9uIGlucHV0Lm5hdi1pbnB1dDphY3RpdmUsLmNhcGliYXJhLmMtdGVhbC5kYXJrLXRoZW1lIC5pbnB1dC1zZWN0aW9uIGlucHV0Lm5hdi1pbnB1dDpmb2N1cywuY2FwaWJhcmEuYy10ZWFsIC5pbnB1dC1zZWN0aW9uIGlucHV0Lm5hdi1pbnB1dDphY3RpdmUsLmNhcGliYXJhLmMtdGVhbCAuaW5wdXQtc2VjdGlvbiBpbnB1dC5uYXYtaW5wdXQ6Zm9jdXN7Ym9yZGVyLWNvbG9yOiMwMDk2ODg7Ym94LXNoYWRvdzowIDRweCA2cHggcmdiYSgwLDE1MCwxMzYsLjIpfS5jYXBpYmFyYS5jLXRlYWwuZGFyay10aGVtZSAuaW5wdXQtc2VjdGlvbi5tc2otaW5wdXQtY29udGFpbmVyIHRleHRhcmVhLm1zaiwuY2FwaWJhcmEuYy10ZWFsIC5pbnB1dC1zZWN0aW9uLm1zai1pbnB1dC1jb250YWluZXIgdGV4dGFyZWEubXNqe2JvcmRlcjoycHggc29saWQgIzAwOTY4OH0uY2FwaWJhcmEuYy10ZWFsLmRhcmstdGhlbWUgLmlucHV0LXNlY3Rpb24ubXNqLWlucHV0LWNvbnRhaW5lciB0ZXh0YXJlYS5tc2o6YWN0aXZlLC5jYXBpYmFyYS5jLXRlYWwuZGFyay10aGVtZSAuaW5wdXQtc2VjdGlvbi5tc2otaW5wdXQtY29udGFpbmVyIHRleHRhcmVhLm1zajpmb2N1cywuY2FwaWJhcmEuYy10ZWFsIC5pbnB1dC1zZWN0aW9uLm1zai1pbnB1dC1jb250YWluZXIgdGV4dGFyZWEubXNqOmFjdGl2ZSwuY2FwaWJhcmEuYy10ZWFsIC5pbnB1dC1zZWN0aW9uLm1zai1pbnB1dC1jb250YWluZXIgdGV4dGFyZWEubXNqOmZvY3Vze2JveC1zaGFkb3c6MCA0cHggNnB4IHJnYmEoMCwxNTAsMTM2LC4yKX0uY2FwaWJhcmEuYy10ZWFsIC5idG4tcmFpc2VkLC5jYXBpYmFyYS5jLXRlYWwuZGFyay10aGVtZSAuYnRuLXJhaXNlZHtib3JkZXItY29sb3I6IzAwOTY4ODtiYWNrZ3JvdW5kOnJnYmEoMCwxNTAsMTM2LC44KX0uY2FwaWJhcmEuYy10ZWFsIC5idG4tb3V0bGluZSwuY2FwaWJhcmEuYy10ZWFsLmRhcmstdGhlbWUgLmJ0bi1vdXRsaW5le2JvcmRlci1jb2xvcjojMDA5Njg4O2NvbG9yOiMwMDk2ODh9LmNhcGliYXJhLmMtdGVhbC5kYXJrLXRoZW1lIC5zZWxlY3QtY29udGFpbmVyIC5zZWxlY3RlZC1kYXksLmNhcGliYXJhLmMtdGVhbCAuc2VsZWN0LWNvbnRhaW5lciAuc2VsZWN0ZWQtZGF5e2JhY2tncm91bmQ6cmdiYSgwLDE1MCwxMzYsLjMpO2JveC1zaGFkb3c6aW5zZXQgMCAwIDEwcHggcmdiYSgwLDE1MCwxMzYsLjUpfS5jYXBpYmFyYSAuYy10ZWFsLS1iYWNrZ3JvdW5ke2JhY2tncm91bmQ6IzAwOTY4OCFpbXBvcnRhbnR9LmNhcGliYXJhIC5jLXRlYWwtZC0tYmFja2dyb3VuZHtiYWNrZ3JvdW5kOiMwMDRhNDMhaW1wb3J0YW50fS5jYXBpYmFyYSAuYy10ZWFsLWwtLWJhY2tncm91bmR7YmFja2dyb3VuZDojMDBlM2NkIWltcG9ydGFudH0uY2FwaWJhcmEgLmMtdGVhbC0tdGV4dHtjb2xvcjojMDA5Njg4IWltcG9ydGFudH0uY2FwaWJhcmEgLmMtdGVhbC1kLS10ZXh0e2NvbG9yOiMwMDRhNDMhaW1wb3J0YW50fS5jYXBpYmFyYSAuYy10ZWFsLWwtLXRleHR7Y29sb3I6IzAwZTNjZCFpbXBvcnRhbnR9LmNhcGliYXJhIC5kZXRhaWwtZGF5IC5saXN0LWRldGFpbCAuaXRlbS1kZXRhaWwuYy10ZWFse2JhY2tncm91bmQ6cmdiYSgwLDE1MCwxMzYsLjIpO2JvcmRlcjoxcHggc29saWQgIzAwOTY4OH0uY2FwaWJhcmEgLmRldGFpbC1kYXkgLmxpc3QtZGV0YWlsIC5pdGVtLWRldGFpbC5jLXRlYWwgLmxlZnQtaWNvbntiYWNrZ3JvdW5kOiMwMDk2ODh9LmNhcGliYXJhIC5kZXRhaWwtZGF5IC5saXN0LWRldGFpbCAuaXRlbS1kZXRhaWwuYy10ZWFsIC5sZWZ0LWljb24ub3V0bGluZWR7Ym9yZGVyOjFweCBzb2xpZCAjMDA5Njg4O2JveC1zaGFkb3c6aW5zZXQgMCAwIDAgMXB4IHJnYmEoMCwxNTAsMTM2LC43KX0uY2FwaWJhcmEgLmRldGFpbC1kYXkgLmxpc3QtZGV0YWlsIC5pdGVtLWRldGFpbC5jLXRlYWwgLm5hbWV7Y29sb3I6IzAwOTY4OH0uY2FwaWJhcmEgLmZsb2F0LWJveC1jb250YWluZXIgLmZsb2F0LWJveCBzcGFuLmRhdGEuYy10ZWFse2JhY2tncm91bmQ6cmdiYSgwLDE1MCwxMzYsLjgpfS5jYXBpYmFyYSAuZmxvYXQtYm94LWNvbnRhaW5lciAuZmxvYXQtYm94IHNwYW4uZGF0YS5zaGFwZS1vdXRsaW5lZC5jLXRlYWx7Ym9yZGVyLWNvbG9yOnJnYmEoMCwxNTAsMTM2LC45KTtiYWNrZ3JvdW5kOnJnYmEoMCwxNTAsMTM2LC4xKTtjb2xvcjojMDA5Njg4fS5jYXBpYmFyYSAuZmxvYXQtYm94LWNvbnRhaW5lciAuZmxvYXQtYm94IHNwYW4uZGF0YS5zaGFwZS1iYXIuYy10ZWFse2JhY2tncm91bmQ6IzAwOTY4OH0uY2FwaWJhcmEgLmZsb2F0LWJveC1jb250YWluZXIgLmZsb2F0LWJveCBzcGFuLmRhdGEuc2hhcGUtYmFyLW91dGxpbmVkLmMtdGVhbHtib3JkZXItY29sb3I6cmdiYSgwLDE1MCwxMzYsLjkpO2JhY2tncm91bmQ6cmdiYSgwLDE1MCwxMzYsLjEpfS5jYXBpYmFyYSAuZmxvYXQtYm94LWNvbnRhaW5lciAuZmxvYXQtYm94IC5kb3QuYy10ZWFse2JhY2tncm91bmQ6IzAwOTY4OH0uY2FwaWJhcmEgLmZsb2F0LWJveC1jb250YWluZXIgLmZsb2F0LWJveCAuZG90LmMtdGVhbC5vdXRsaW5lZHtib3JkZXI6MXB4IHNvbGlkICMwMDk2ODg7Ym94LXNoYWRvdzppbnNldCAwIDAgMCAxcHggcmdiYSgwLDE1MCwxMzYsLjcpfS5jYXBpYmFyYSAuaGVhZGVyLXRvcCAudGFicy1jb250YWluZXIgLnRhYjpub3QoLmRpc2FibGVkKS5jLXRlYWwuYWN0aXZle2JhY2tncm91bmQ6cmdiYSgwLDE1MCwxMzYsLjcpO2JvcmRlci1jb2xvcjpyZ2JhKDAsMTUwLDEzNiwuNyk7Y29sb3I6I2ZmZn0uY2FwaWJhcmEgLmhlYWRlci10b3AgLnRhYnMtY29udGFpbmVyIC50YWI6bm90KC5kaXNhYmxlZCkuYy10ZWFsLmFjdGl2ZTpob3ZlcntiYWNrZ3JvdW5kOnJnYmEoMCwxNTAsMTM2LC44KX0uY2FwaWJhcmEgLmhlYWRlci10b3AgLnRhYnMtY29udGFpbmVyIC50YWI6bm90KC5kaXNhYmxlZCkuYy10ZWFsOmhvdmVye2JhY2tncm91bmQ6cmdiYSgwLDE1MCwxMzYsLjIpO2JvcmRlci1jb2xvcjpyZ2JhKDAsMTUwLDEzNiwuOSl9LmNhcGliYXJhIC5pbnB1dC1ib3ggLm1pbmktaW5wdXQtc2VjdGlvbi0taWNvbi5jLXRlYWx7YmFja2dyb3VuZDojMDA5Njg4fS5jYXBpYmFyYS5jLWdyZWVuOm5vdCguZGFyay10aGVtZSkgOjotd2Via2l0LXNjcm9sbGJhci10aHVtYntiYWNrZ3JvdW5kOiM2NTk2Njd9LmNhcGliYXJhLmMtZ3JlZW46bm90KC5kYXJrLXRoZW1lKSAuaGVhZGVyLXRvcHtiYWNrZ3JvdW5kOiNlNGU0ZTR9LmNhcGliYXJhLmMtZ3JlZW46bm90KC5kYXJrLXRoZW1lKSAuY29ybmVye2JhY2tncm91bmQ6I2U0ZTRlNDtib3JkZXItY29sb3I6IzkyY2Y5NH0uY2FwaWJhcmEuYy1ncmVlbjpub3QoLmRhcmstdGhlbWUpIC5jb250YWluZXItdGwgaGVhZGVye2JhY2tncm91bmQ6I2U0ZTRlNDtib3JkZXItYm90dG9tLWNvbG9yOiM5MmNmOTR9LmNhcGliYXJhLmMtZ3JlZW46bm90KC5kYXJrLXRoZW1lKSAuY29udGFpbmVyLXRsIGhlYWRlciAubWVzLm1lcy1yZWR1Y2VkOmFmdGVye2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDkwZGVnLHRyYW5zcGFyZW50LCNkOWVlZGEpIWltcG9ydGFudH0uY2FwaWJhcmEuYy1ncmVlbjpub3QoLmRhcmstdGhlbWUpIG5hdi5yaWdodHtib3JkZXItY29sb3I6IzkyY2Y5NH0uY2FwaWJhcmEuYy1ncmVlbi5kYXJrLXRoZW1lIC5oZWFkZXItdG9wLC5jYXBpYmFyYS5jLWdyZWVuLmRhcmstdGhlbWUgbmF2LnJpZ2h0e2JvcmRlci1jb2xvcjojMmQ2ODJmfS5jYXBpYmFyYS5jLWdyZWVuLmRhcmstdGhlbWUgLmNvbnRhaW5lci10bCBoZWFkZXIsLmNhcGliYXJhLmMtZ3JlZW4uZGFyay10aGVtZSAuY29ybmVye2JvcmRlci1ib3R0b20tY29sb3I6IzJkNjgyZn0uY2FwaWJhcmEuYy1ncmVlbi5kYXJrLXRoZW1lIC5wcm9ncmVzcy1iYXIsLmNhcGliYXJhLmMtZ3JlZW4gLnByb2dyZXNzLWJhcntiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoNzYsMTc1LDgwLC4yKSFpbXBvcnRhbnR9LmNhcGliYXJhLmMtZ3JlZW4uZGFyay10aGVtZSAucHJvZ3Jlc3MtYmFyOmFmdGVyLC5jYXBpYmFyYS5jLWdyZWVuLmRhcmstdGhlbWUgLnByb2dyZXNzLWJhcjpiZWZvcmUsLmNhcGliYXJhLmMtZ3JlZW4gLnByb2dyZXNzLWJhcjphZnRlciwuY2FwaWJhcmEuYy1ncmVlbiAucHJvZ3Jlc3MtYmFyOmJlZm9yZXtiYWNrZ3JvdW5kLWNvbG9yOiM0Y2FmNTAhaW1wb3J0YW50fS5jYXBpYmFyYS5jLWdyZWVuLmRhcmstdGhlbWUgc2VsZWN0LnRhYnMtc2VsZWN0LC5jYXBpYmFyYS5jLWdyZWVuIHNlbGVjdC50YWJzLXNlbGVjdHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoNzYsMTc1LDgwLC43KSFpbXBvcnRhbnQ7Ym9yZGVyLWNvbG9yOiM0Y2FmNTAhaW1wb3J0YW50fS5jYXBpYmFyYS5jLWdyZWVuLmRhcmstdGhlbWUgLnRpbWUsLmNhcGliYXJhLmMtZ3JlZW4gLnRpbWV7Ym9yZGVyLWNvbG9yOnJnYmEoNzYsMTc1LDgwLC42KX0uY2FwaWJhcmEuYy1ncmVlbi5kYXJrLXRoZW1lIC50aW1lIC5zeW1ib2wsLmNhcGliYXJhLmMtZ3JlZW4gLnRpbWUgLnN5bWJvbHtjb2xvcjojNGNhZjUwfS5jYXBpYmFyYS5jLWdyZWVuLmRhcmstdGhlbWUgLnRpbWUgaW5wdXQ6YWN0aXZlLC5jYXBpYmFyYS5jLWdyZWVuLmRhcmstdGhlbWUgLnRpbWUgaW5wdXQ6Zm9jdXMsLmNhcGliYXJhLmMtZ3JlZW4gLnRpbWUgaW5wdXQ6YWN0aXZlLC5jYXBpYmFyYS5jLWdyZWVuIC50aW1lIGlucHV0OmZvY3Vze2JvcmRlci1jb2xvcjojNGNhZjUwO2JveC1zaGFkb3c6MCA0cHggNnB4IHJnYmEoNzYsMTc1LDgwLC4yKX0uY2FwaWJhcmEuYy1ncmVlbi5kYXJrLXRoZW1lIC5pbnB1dC1ib3gsLmNhcGliYXJhLmMtZ3JlZW4uZGFyay10aGVtZSAuaW5wdXQtc2VjdGlvbiBpbnB1dC5uYXYtaW5wdXQsLmNhcGliYXJhLmMtZ3JlZW4gLmlucHV0LWJveCwuY2FwaWJhcmEuYy1ncmVlbiAuaW5wdXQtc2VjdGlvbiBpbnB1dC5uYXYtaW5wdXR7Ym9yZGVyLWNvbG9yOnJnYmEoNzYsMTc1LDgwLC42KX0uY2FwaWJhcmEuYy1ncmVlbi5kYXJrLXRoZW1lIC5pbnB1dC1zZWN0aW9uIGlucHV0Lm5hdi1pbnB1dDphY3RpdmUsLmNhcGliYXJhLmMtZ3JlZW4uZGFyay10aGVtZSAuaW5wdXQtc2VjdGlvbiBpbnB1dC5uYXYtaW5wdXQ6Zm9jdXMsLmNhcGliYXJhLmMtZ3JlZW4gLmlucHV0LXNlY3Rpb24gaW5wdXQubmF2LWlucHV0OmFjdGl2ZSwuY2FwaWJhcmEuYy1ncmVlbiAuaW5wdXQtc2VjdGlvbiBpbnB1dC5uYXYtaW5wdXQ6Zm9jdXN7Ym9yZGVyLWNvbG9yOiM0Y2FmNTA7Ym94LXNoYWRvdzowIDRweCA2cHggcmdiYSg3NiwxNzUsODAsLjIpfS5jYXBpYmFyYS5jLWdyZWVuLmRhcmstdGhlbWUgLmlucHV0LXNlY3Rpb24ubXNqLWlucHV0LWNvbnRhaW5lciB0ZXh0YXJlYS5tc2osLmNhcGliYXJhLmMtZ3JlZW4gLmlucHV0LXNlY3Rpb24ubXNqLWlucHV0LWNvbnRhaW5lciB0ZXh0YXJlYS5tc2p7Ym9yZGVyOjJweCBzb2xpZCAjNGNhZjUwfS5jYXBpYmFyYS5jLWdyZWVuLmRhcmstdGhlbWUgLmlucHV0LXNlY3Rpb24ubXNqLWlucHV0LWNvbnRhaW5lciB0ZXh0YXJlYS5tc2o6YWN0aXZlLC5jYXBpYmFyYS5jLWdyZWVuLmRhcmstdGhlbWUgLmlucHV0LXNlY3Rpb24ubXNqLWlucHV0LWNvbnRhaW5lciB0ZXh0YXJlYS5tc2o6Zm9jdXMsLmNhcGliYXJhLmMtZ3JlZW4gLmlucHV0LXNlY3Rpb24ubXNqLWlucHV0LWNvbnRhaW5lciB0ZXh0YXJlYS5tc2o6YWN0aXZlLC5jYXBpYmFyYS5jLWdyZWVuIC5pbnB1dC1zZWN0aW9uLm1zai1pbnB1dC1jb250YWluZXIgdGV4dGFyZWEubXNqOmZvY3Vze2JveC1zaGFkb3c6MCA0cHggNnB4IHJnYmEoNzYsMTc1LDgwLC4yKX0uY2FwaWJhcmEuYy1ncmVlbiAuYnRuLXJhaXNlZCwuY2FwaWJhcmEuYy1ncmVlbi5kYXJrLXRoZW1lIC5idG4tcmFpc2Vke2JvcmRlci1jb2xvcjojNGNhZjUwO2JhY2tncm91bmQ6cmdiYSg3NiwxNzUsODAsLjgpfS5jYXBpYmFyYS5jLWdyZWVuIC5idG4tb3V0bGluZSwuY2FwaWJhcmEuYy1ncmVlbi5kYXJrLXRoZW1lIC5idG4tb3V0bGluZXtib3JkZXItY29sb3I6IzRjYWY1MDtjb2xvcjojNGNhZjUwfS5jYXBpYmFyYS5jLWdyZWVuLmRhcmstdGhlbWUgLnNlbGVjdC1jb250YWluZXIgLnNlbGVjdGVkLWRheSwuY2FwaWJhcmEuYy1ncmVlbiAuc2VsZWN0LWNvbnRhaW5lciAuc2VsZWN0ZWQtZGF5e2JhY2tncm91bmQ6cmdiYSg3NiwxNzUsODAsLjMpO2JveC1zaGFkb3c6aW5zZXQgMCAwIDEwcHggcmdiYSg3NiwxNzUsODAsLjUpfS5jYXBpYmFyYSAuYy1ncmVlbi0tYmFja2dyb3VuZHtiYWNrZ3JvdW5kOiM0Y2FmNTAhaW1wb3J0YW50fS5jYXBpYmFyYSAuYy1ncmVlbi1kLS1iYWNrZ3JvdW5ke2JhY2tncm91bmQ6IzM1N2EzOCFpbXBvcnRhbnR9LmNhcGliYXJhIC5jLWdyZWVuLWwtLWJhY2tncm91bmR7YmFja2dyb3VuZDojODBjODgzIWltcG9ydGFudH0uY2FwaWJhcmEgLmMtZ3JlZW4tLXRleHR7Y29sb3I6IzRjYWY1MCFpbXBvcnRhbnR9LmNhcGliYXJhIC5jLWdyZWVuLWQtLXRleHR7Y29sb3I6IzM1N2EzOCFpbXBvcnRhbnR9LmNhcGliYXJhIC5jLWdyZWVuLWwtLXRleHR7Y29sb3I6IzgwYzg4MyFpbXBvcnRhbnR9LmNhcGliYXJhIC5kZXRhaWwtZGF5IC5saXN0LWRldGFpbCAuaXRlbS1kZXRhaWwuYy1ncmVlbntiYWNrZ3JvdW5kOnJnYmEoNzYsMTc1LDgwLC4yKTtib3JkZXI6MXB4IHNvbGlkICM0Y2FmNTB9LmNhcGliYXJhIC5kZXRhaWwtZGF5IC5saXN0LWRldGFpbCAuaXRlbS1kZXRhaWwuYy1ncmVlbiAubGVmdC1pY29ue2JhY2tncm91bmQ6IzRjYWY1MH0uY2FwaWJhcmEgLmRldGFpbC1kYXkgLmxpc3QtZGV0YWlsIC5pdGVtLWRldGFpbC5jLWdyZWVuIC5sZWZ0LWljb24ub3V0bGluZWR7Ym9yZGVyOjFweCBzb2xpZCAjNGNhZjUwO2JveC1zaGFkb3c6aW5zZXQgMCAwIDAgMXB4IHJnYmEoNzYsMTc1LDgwLC43KX0uY2FwaWJhcmEgLmRldGFpbC1kYXkgLmxpc3QtZGV0YWlsIC5pdGVtLWRldGFpbC5jLWdyZWVuIC5uYW1le2NvbG9yOiM0Y2FmNTB9LmNhcGliYXJhIC5mbG9hdC1ib3gtY29udGFpbmVyIC5mbG9hdC1ib3ggc3Bhbi5kYXRhLmMtZ3JlZW57YmFja2dyb3VuZDpyZ2JhKDc2LDE3NSw4MCwuOCl9LmNhcGliYXJhIC5mbG9hdC1ib3gtY29udGFpbmVyIC5mbG9hdC1ib3ggc3Bhbi5kYXRhLnNoYXBlLW91dGxpbmVkLmMtZ3JlZW57Ym9yZGVyLWNvbG9yOnJnYmEoNzYsMTc1LDgwLC45KTtiYWNrZ3JvdW5kOnJnYmEoNzYsMTc1LDgwLC4xKTtjb2xvcjojNGNhZjUwfS5jYXBpYmFyYSAuZmxvYXQtYm94LWNvbnRhaW5lciAuZmxvYXQtYm94IHNwYW4uZGF0YS5zaGFwZS1iYXIuYy1ncmVlbntiYWNrZ3JvdW5kOiM0Y2FmNTB9LmNhcGliYXJhIC5mbG9hdC1ib3gtY29udGFpbmVyIC5mbG9hdC1ib3ggc3Bhbi5kYXRhLnNoYXBlLWJhci1vdXRsaW5lZC5jLWdyZWVue2JvcmRlci1jb2xvcjpyZ2JhKDc2LDE3NSw4MCwuOSk7YmFja2dyb3VuZDpyZ2JhKDc2LDE3NSw4MCwuMSl9LmNhcGliYXJhIC5mbG9hdC1ib3gtY29udGFpbmVyIC5mbG9hdC1ib3ggLmRvdC5jLWdyZWVue2JhY2tncm91bmQ6IzRjYWY1MH0uY2FwaWJhcmEgLmZsb2F0LWJveC1jb250YWluZXIgLmZsb2F0LWJveCAuZG90LmMtZ3JlZW4ub3V0bGluZWR7Ym9yZGVyOjFweCBzb2xpZCAjNGNhZjUwO2JveC1zaGFkb3c6aW5zZXQgMCAwIDAgMXB4IHJnYmEoNzYsMTc1LDgwLC43KX0uY2FwaWJhcmEgLmhlYWRlci10b3AgLnRhYnMtY29udGFpbmVyIC50YWI6bm90KC5kaXNhYmxlZCkuYy1ncmVlbi5hY3RpdmV7YmFja2dyb3VuZDpyZ2JhKDc2LDE3NSw4MCwuNyk7Ym9yZGVyLWNvbG9yOnJnYmEoNzYsMTc1LDgwLC43KTtjb2xvcjojZmZmfS5jYXBpYmFyYSAuaGVhZGVyLXRvcCAudGFicy1jb250YWluZXIgLnRhYjpub3QoLmRpc2FibGVkKS5jLWdyZWVuLmFjdGl2ZTpob3ZlcntiYWNrZ3JvdW5kOnJnYmEoNzYsMTc1LDgwLC44KX0uY2FwaWJhcmEgLmhlYWRlci10b3AgLnRhYnMtY29udGFpbmVyIC50YWI6bm90KC5kaXNhYmxlZCkuYy1ncmVlbjpob3ZlcntiYWNrZ3JvdW5kOnJnYmEoNzYsMTc1LDgwLC4yKTtib3JkZXItY29sb3I6cmdiYSg3NiwxNzUsODAsLjkpfS5jYXBpYmFyYSAuaW5wdXQtYm94IC5taW5pLWlucHV0LXNlY3Rpb24tLWljb24uYy1ncmVlbntiYWNrZ3JvdW5kOiM0Y2FmNTB9LmNhcGliYXJhLmMtbGlnaHQtZ3JlZW46bm90KC5kYXJrLXRoZW1lKSA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1ie2JhY2tncm91bmQ6Izg5YWI2Mn0uY2FwaWJhcmEuYy1saWdodC1ncmVlbjpub3QoLmRhcmstdGhlbWUpIC5oZWFkZXItdG9we2JhY2tncm91bmQ6I2VkZWRlY30uY2FwaWJhcmEuYy1saWdodC1ncmVlbjpub3QoLmRhcmstdGhlbWUpIC5jb3JuZXJ7YmFja2dyb3VuZDojZWRlZGVjO2JvcmRlci1jb2xvcjojYmNkYzk3fS5jYXBpYmFyYS5jLWxpZ2h0LWdyZWVuOm5vdCguZGFyay10aGVtZSkgLmNvbnRhaW5lci10bCBoZWFkZXJ7YmFja2dyb3VuZDojZWRlZGVjO2JvcmRlci1ib3R0b20tY29sb3I6I2JjZGM5N30uY2FwaWJhcmEuYy1saWdodC1ncmVlbjpub3QoLmRhcmstdGhlbWUpIC5jb250YWluZXItdGwgaGVhZGVyIC5tZXMubWVzLXJlZHVjZWQ6YWZ0ZXJ7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoOTBkZWcsdHJhbnNwYXJlbnQsI2VkZjZlMykhaW1wb3J0YW50fS5jYXBpYmFyYS5jLWxpZ2h0LWdyZWVuOm5vdCguZGFyay10aGVtZSkgbmF2LnJpZ2h0e2JvcmRlci1jb2xvcjojYmNkYzk3fS5jYXBpYmFyYS5jLWxpZ2h0LWdyZWVuLmRhcmstdGhlbWUgLmhlYWRlci10b3AsLmNhcGliYXJhLmMtbGlnaHQtZ3JlZW4uZGFyay10aGVtZSBuYXYucmlnaHR7Ym9yZGVyLWNvbG9yOiM1NzdkMmF9LmNhcGliYXJhLmMtbGlnaHQtZ3JlZW4uZGFyay10aGVtZSAuY29udGFpbmVyLXRsIGhlYWRlciwuY2FwaWJhcmEuYy1saWdodC1ncmVlbi5kYXJrLXRoZW1lIC5jb3JuZXJ7Ym9yZGVyLWJvdHRvbS1jb2xvcjojNTc3ZDJhfS5jYXBpYmFyYS5jLWxpZ2h0LWdyZWVuLmRhcmstdGhlbWUgLnByb2dyZXNzLWJhciwuY2FwaWJhcmEuYy1saWdodC1ncmVlbiAucHJvZ3Jlc3MtYmFye2JhY2tncm91bmQtY29sb3I6cmdiYSgxMzksMTk1LDc0LC4yKSFpbXBvcnRhbnR9LmNhcGliYXJhLmMtbGlnaHQtZ3JlZW4uZGFyay10aGVtZSAucHJvZ3Jlc3MtYmFyOmFmdGVyLC5jYXBpYmFyYS5jLWxpZ2h0LWdyZWVuLmRhcmstdGhlbWUgLnByb2dyZXNzLWJhcjpiZWZvcmUsLmNhcGliYXJhLmMtbGlnaHQtZ3JlZW4gLnByb2dyZXNzLWJhcjphZnRlciwuY2FwaWJhcmEuYy1saWdodC1ncmVlbiAucHJvZ3Jlc3MtYmFyOmJlZm9yZXtiYWNrZ3JvdW5kLWNvbG9yOiM4YmMzNGEhaW1wb3J0YW50fS5jYXBpYmFyYS5jLWxpZ2h0LWdyZWVuLmRhcmstdGhlbWUgc2VsZWN0LnRhYnMtc2VsZWN0LC5jYXBpYmFyYS5jLWxpZ2h0LWdyZWVuIHNlbGVjdC50YWJzLXNlbGVjdHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMTM5LDE5NSw3NCwuNykhaW1wb3J0YW50O2JvcmRlci1jb2xvcjojOGJjMzRhIWltcG9ydGFudH0uY2FwaWJhcmEuYy1saWdodC1ncmVlbi5kYXJrLXRoZW1lIC50aW1lLC5jYXBpYmFyYS5jLWxpZ2h0LWdyZWVuIC50aW1le2JvcmRlci1jb2xvcjpyZ2JhKDEzOSwxOTUsNzQsLjYpfS5jYXBpYmFyYS5jLWxpZ2h0LWdyZWVuLmRhcmstdGhlbWUgLnRpbWUgLnN5bWJvbCwuY2FwaWJhcmEuYy1saWdodC1ncmVlbiAudGltZSAuc3ltYm9se2NvbG9yOiM4YmMzNGF9LmNhcGliYXJhLmMtbGlnaHQtZ3JlZW4uZGFyay10aGVtZSAudGltZSBpbnB1dDphY3RpdmUsLmNhcGliYXJhLmMtbGlnaHQtZ3JlZW4uZGFyay10aGVtZSAudGltZSBpbnB1dDpmb2N1cywuY2FwaWJhcmEuYy1saWdodC1ncmVlbiAudGltZSBpbnB1dDphY3RpdmUsLmNhcGliYXJhLmMtbGlnaHQtZ3JlZW4gLnRpbWUgaW5wdXQ6Zm9jdXN7Ym9yZGVyLWNvbG9yOiM4YmMzNGE7Ym94LXNoYWRvdzowIDRweCA2cHggcmdiYSgxMzksMTk1LDc0LC4yKX0uY2FwaWJhcmEuYy1saWdodC1ncmVlbi5kYXJrLXRoZW1lIC5pbnB1dC1ib3gsLmNhcGliYXJhLmMtbGlnaHQtZ3JlZW4uZGFyay10aGVtZSAuaW5wdXQtc2VjdGlvbiBpbnB1dC5uYXYtaW5wdXQsLmNhcGliYXJhLmMtbGlnaHQtZ3JlZW4gLmlucHV0LWJveCwuY2FwaWJhcmEuYy1saWdodC1ncmVlbiAuaW5wdXQtc2VjdGlvbiBpbnB1dC5uYXYtaW5wdXR7Ym9yZGVyLWNvbG9yOnJnYmEoMTM5LDE5NSw3NCwuNil9LmNhcGliYXJhLmMtbGlnaHQtZ3JlZW4uZGFyay10aGVtZSAuaW5wdXQtc2VjdGlvbiBpbnB1dC5uYXYtaW5wdXQ6YWN0aXZlLC5jYXBpYmFyYS5jLWxpZ2h0LWdyZWVuLmRhcmstdGhlbWUgLmlucHV0LXNlY3Rpb24gaW5wdXQubmF2LWlucHV0OmZvY3VzLC5jYXBpYmFyYS5jLWxpZ2h0LWdyZWVuIC5pbnB1dC1zZWN0aW9uIGlucHV0Lm5hdi1pbnB1dDphY3RpdmUsLmNhcGliYXJhLmMtbGlnaHQtZ3JlZW4gLmlucHV0LXNlY3Rpb24gaW5wdXQubmF2LWlucHV0OmZvY3Vze2JvcmRlci1jb2xvcjojOGJjMzRhO2JveC1zaGFkb3c6MCA0cHggNnB4IHJnYmEoMTM5LDE5NSw3NCwuMil9LmNhcGliYXJhLmMtbGlnaHQtZ3JlZW4uZGFyay10aGVtZSAuaW5wdXQtc2VjdGlvbi5tc2otaW5wdXQtY29udGFpbmVyIHRleHRhcmVhLm1zaiwuY2FwaWJhcmEuYy1saWdodC1ncmVlbiAuaW5wdXQtc2VjdGlvbi5tc2otaW5wdXQtY29udGFpbmVyIHRleHRhcmVhLm1zantib3JkZXI6MnB4IHNvbGlkICM4YmMzNGF9LmNhcGliYXJhLmMtbGlnaHQtZ3JlZW4uZGFyay10aGVtZSAuaW5wdXQtc2VjdGlvbi5tc2otaW5wdXQtY29udGFpbmVyIHRleHRhcmVhLm1zajphY3RpdmUsLmNhcGliYXJhLmMtbGlnaHQtZ3JlZW4uZGFyay10aGVtZSAuaW5wdXQtc2VjdGlvbi5tc2otaW5wdXQtY29udGFpbmVyIHRleHRhcmVhLm1zajpmb2N1cywuY2FwaWJhcmEuYy1saWdodC1ncmVlbiAuaW5wdXQtc2VjdGlvbi5tc2otaW5wdXQtY29udGFpbmVyIHRleHRhcmVhLm1zajphY3RpdmUsLmNhcGliYXJhLmMtbGlnaHQtZ3JlZW4gLmlucHV0LXNlY3Rpb24ubXNqLWlucHV0LWNvbnRhaW5lciB0ZXh0YXJlYS5tc2o6Zm9jdXN7Ym94LXNoYWRvdzowIDRweCA2cHggcmdiYSgxMzksMTk1LDc0LC4yKX0uY2FwaWJhcmEuYy1saWdodC1ncmVlbiAuYnRuLXJhaXNlZCwuY2FwaWJhcmEuYy1saWdodC1ncmVlbi5kYXJrLXRoZW1lIC5idG4tcmFpc2Vke2JvcmRlci1jb2xvcjojOGJjMzRhO2JhY2tncm91bmQ6cmdiYSgxMzksMTk1LDc0LC44KX0uY2FwaWJhcmEuYy1saWdodC1ncmVlbiAuYnRuLW91dGxpbmUsLmNhcGliYXJhLmMtbGlnaHQtZ3JlZW4uZGFyay10aGVtZSAuYnRuLW91dGxpbmV7Ym9yZGVyLWNvbG9yOiM4YmMzNGE7Y29sb3I6IzhiYzM0YX0uY2FwaWJhcmEuYy1saWdodC1ncmVlbi5kYXJrLXRoZW1lIC5zZWxlY3QtY29udGFpbmVyIC5zZWxlY3RlZC1kYXksLmNhcGliYXJhLmMtbGlnaHQtZ3JlZW4gLnNlbGVjdC1jb250YWluZXIgLnNlbGVjdGVkLWRheXtiYWNrZ3JvdW5kOnJnYmEoMTM5LDE5NSw3NCwuMyk7Ym94LXNoYWRvdzppbnNldCAwIDAgMTBweCByZ2JhKDEzOSwxOTUsNzQsLjUpfS5jYXBpYmFyYSAuYy1saWdodC1ncmVlbi0tYmFja2dyb3VuZHtiYWNrZ3JvdW5kOiM4YmMzNGEhaW1wb3J0YW50fS5jYXBpYmFyYSAuYy1saWdodC1ncmVlbi1kLS1iYWNrZ3JvdW5ke2JhY2tncm91bmQ6IzY0OTEzMCFpbXBvcnRhbnR9LmNhcGliYXJhIC5jLWxpZ2h0LWdyZWVuLWwtLWJhY2tncm91bmR7YmFja2dyb3VuZDojYjBkNjgzIWltcG9ydGFudH0uY2FwaWJhcmEgLmMtbGlnaHQtZ3JlZW4tLXRleHR7Y29sb3I6IzhiYzM0YSFpbXBvcnRhbnR9LmNhcGliYXJhIC5jLWxpZ2h0LWdyZWVuLWQtLXRleHR7Y29sb3I6IzY0OTEzMCFpbXBvcnRhbnR9LmNhcGliYXJhIC5jLWxpZ2h0LWdyZWVuLWwtLXRleHR7Y29sb3I6I2IwZDY4MyFpbXBvcnRhbnR9LmNhcGliYXJhIC5kZXRhaWwtZGF5IC5saXN0LWRldGFpbCAuaXRlbS1kZXRhaWwuYy1saWdodC1ncmVlbntiYWNrZ3JvdW5kOnJnYmEoMTM5LDE5NSw3NCwuMik7Ym9yZGVyOjFweCBzb2xpZCAjOGJjMzRhfS5jYXBpYmFyYSAuZGV0YWlsLWRheSAubGlzdC1kZXRhaWwgLml0ZW0tZGV0YWlsLmMtbGlnaHQtZ3JlZW4gLmxlZnQtaWNvbntiYWNrZ3JvdW5kOiM4YmMzNGF9LmNhcGliYXJhIC5kZXRhaWwtZGF5IC5saXN0LWRldGFpbCAuaXRlbS1kZXRhaWwuYy1saWdodC1ncmVlbiAubGVmdC1pY29uLm91dGxpbmVke2JvcmRlcjoxcHggc29saWQgIzhiYzM0YTtib3gtc2hhZG93Omluc2V0IDAgMCAwIDFweCByZ2JhKDEzOSwxOTUsNzQsLjcpfS5jYXBpYmFyYSAuZGV0YWlsLWRheSAubGlzdC1kZXRhaWwgLml0ZW0tZGV0YWlsLmMtbGlnaHQtZ3JlZW4gLm5hbWV7Y29sb3I6IzhiYzM0YX0uY2FwaWJhcmEgLmZsb2F0LWJveC1jb250YWluZXIgLmZsb2F0LWJveCBzcGFuLmRhdGEuYy1saWdodC1ncmVlbntiYWNrZ3JvdW5kOnJnYmEoMTM5LDE5NSw3NCwuOCl9LmNhcGliYXJhIC5mbG9hdC1ib3gtY29udGFpbmVyIC5mbG9hdC1ib3ggc3Bhbi5kYXRhLnNoYXBlLW91dGxpbmVkLmMtbGlnaHQtZ3JlZW57Ym9yZGVyLWNvbG9yOnJnYmEoMTM5LDE5NSw3NCwuOSk7YmFja2dyb3VuZDpyZ2JhKDEzOSwxOTUsNzQsLjEpO2NvbG9yOiM4YmMzNGF9LmNhcGliYXJhIC5mbG9hdC1ib3gtY29udGFpbmVyIC5mbG9hdC1ib3ggc3Bhbi5kYXRhLnNoYXBlLWJhci5jLWxpZ2h0LWdyZWVue2JhY2tncm91bmQ6IzhiYzM0YX0uY2FwaWJhcmEgLmZsb2F0LWJveC1jb250YWluZXIgLmZsb2F0LWJveCBzcGFuLmRhdGEuc2hhcGUtYmFyLW91dGxpbmVkLmMtbGlnaHQtZ3JlZW57Ym9yZGVyLWNvbG9yOnJnYmEoMTM5LDE5NSw3NCwuOSk7YmFja2dyb3VuZDpyZ2JhKDEzOSwxOTUsNzQsLjEpfS5jYXBpYmFyYSAuZmxvYXQtYm94LWNvbnRhaW5lciAuZmxvYXQtYm94IC5kb3QuYy1saWdodC1ncmVlbntiYWNrZ3JvdW5kOiM4YmMzNGF9LmNhcGliYXJhIC5mbG9hdC1ib3gtY29udGFpbmVyIC5mbG9hdC1ib3ggLmRvdC5jLWxpZ2h0LWdyZWVuLm91dGxpbmVke2JvcmRlcjoxcHggc29saWQgIzhiYzM0YTtib3gtc2hhZG93Omluc2V0IDAgMCAwIDFweCByZ2JhKDEzOSwxOTUsNzQsLjcpfS5jYXBpYmFyYSAuaGVhZGVyLXRvcCAudGFicy1jb250YWluZXIgLnRhYjpub3QoLmRpc2FibGVkKS5jLWxpZ2h0LWdyZWVuLmFjdGl2ZXtiYWNrZ3JvdW5kOnJnYmEoMTM5LDE5NSw3NCwuNyk7Ym9yZGVyLWNvbG9yOnJnYmEoMTM5LDE5NSw3NCwuNyk7Y29sb3I6I2ZmZn0uY2FwaWJhcmEgLmhlYWRlci10b3AgLnRhYnMtY29udGFpbmVyIC50YWI6bm90KC5kaXNhYmxlZCkuYy1saWdodC1ncmVlbi5hY3RpdmU6aG92ZXJ7YmFja2dyb3VuZDpyZ2JhKDEzOSwxOTUsNzQsLjgpfS5jYXBpYmFyYSAuaGVhZGVyLXRvcCAudGFicy1jb250YWluZXIgLnRhYjpub3QoLmRpc2FibGVkKS5jLWxpZ2h0LWdyZWVuOmhvdmVye2JhY2tncm91bmQ6cmdiYSgxMzksMTk1LDc0LC4yKTtib3JkZXItY29sb3I6cmdiYSgxMzksMTk1LDc0LC45KX0uY2FwaWJhcmEgLmlucHV0LWJveCAubWluaS1pbnB1dC1zZWN0aW9uLS1pY29uLmMtbGlnaHQtZ3JlZW57YmFja2dyb3VuZDojOGJjMzRhfS5jYXBpYmFyYS5jLWxpbWU6bm90KC5kYXJrLXRoZW1lKSA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1ie2JhY2tncm91bmQ6I2JhYzU1MH0uY2FwaWJhcmEuYy1saW1lOm5vdCguZGFyay10aGVtZSkgLmhlYWRlci10b3B7YmFja2dyb3VuZDojZjNmM2VlfS5jYXBpYmFyYS5jLWxpbWU6bm90KC5kYXJrLXRoZW1lKSAuY29ybmVye2JhY2tncm91bmQ6I2YzZjNlZTtib3JkZXItY29sb3I6I2UzZWI5MH0uY2FwaWJhcmEuYy1saW1lOm5vdCguZGFyay10aGVtZSkgLmNvbnRhaW5lci10bCBoZWFkZXJ7YmFja2dyb3VuZDojZjNmM2VlO2JvcmRlci1ib3R0b20tY29sb3I6I2UzZWI5MH0uY2FwaWJhcmEuYy1saW1lOm5vdCguZGFyay10aGVtZSkgLmNvbnRhaW5lci10bCBoZWFkZXIgLm1lcy5tZXMtcmVkdWNlZDphZnRlcntiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCg5MGRlZyx0cmFuc3BhcmVudCwjZjlmYmU2KSFpbXBvcnRhbnR9LmNhcGliYXJhLmMtbGltZTpub3QoLmRhcmstdGhlbWUpIG5hdi5yaWdodHtib3JkZXItY29sb3I6I2UzZWI5MH0uY2FwaWJhcmEuYy1saW1lLmRhcmstdGhlbWUgLmhlYWRlci10b3AsLmNhcGliYXJhLmMtbGltZS5kYXJrLXRoZW1lIG5hdi5yaWdodHtib3JkZXItY29sb3I6Izg5OTUxYX0uY2FwaWJhcmEuYy1saW1lLmRhcmstdGhlbWUgLmNvbnRhaW5lci10bCBoZWFkZXIsLmNhcGliYXJhLmMtbGltZS5kYXJrLXRoZW1lIC5jb3JuZXJ7Ym9yZGVyLWJvdHRvbS1jb2xvcjojODk5NTFhfS5jYXBpYmFyYS5jLWxpbWUuZGFyay10aGVtZSAucHJvZ3Jlc3MtYmFyLC5jYXBpYmFyYS5jLWxpbWUgLnByb2dyZXNzLWJhcntiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjA1LDIyMCw1NywuMikhaW1wb3J0YW50fS5jYXBpYmFyYS5jLWxpbWUuZGFyay10aGVtZSAucHJvZ3Jlc3MtYmFyOmFmdGVyLC5jYXBpYmFyYS5jLWxpbWUuZGFyay10aGVtZSAucHJvZ3Jlc3MtYmFyOmJlZm9yZSwuY2FwaWJhcmEuYy1saW1lIC5wcm9ncmVzcy1iYXI6YWZ0ZXIsLmNhcGliYXJhLmMtbGltZSAucHJvZ3Jlc3MtYmFyOmJlZm9yZXtiYWNrZ3JvdW5kLWNvbG9yOiNjZGRjMzkhaW1wb3J0YW50fS5jYXBpYmFyYS5jLWxpbWUuZGFyay10aGVtZSBzZWxlY3QudGFicy1zZWxlY3QsLmNhcGliYXJhLmMtbGltZSBzZWxlY3QudGFicy1zZWxlY3R7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDIwNSwyMjAsNTcsLjcpIWltcG9ydGFudDtib3JkZXItY29sb3I6I2NkZGMzOSFpbXBvcnRhbnR9LmNhcGliYXJhLmMtbGltZS5kYXJrLXRoZW1lIC50aW1lLC5jYXBpYmFyYS5jLWxpbWUgLnRpbWV7Ym9yZGVyLWNvbG9yOnJnYmEoMjA1LDIyMCw1NywuNil9LmNhcGliYXJhLmMtbGltZS5kYXJrLXRoZW1lIC50aW1lIC5zeW1ib2wsLmNhcGliYXJhLmMtbGltZSAudGltZSAuc3ltYm9se2NvbG9yOiNjZGRjMzl9LmNhcGliYXJhLmMtbGltZS5kYXJrLXRoZW1lIC50aW1lIGlucHV0OmFjdGl2ZSwuY2FwaWJhcmEuYy1saW1lLmRhcmstdGhlbWUgLnRpbWUgaW5wdXQ6Zm9jdXMsLmNhcGliYXJhLmMtbGltZSAudGltZSBpbnB1dDphY3RpdmUsLmNhcGliYXJhLmMtbGltZSAudGltZSBpbnB1dDpmb2N1c3tib3JkZXItY29sb3I6I2NkZGMzOTtib3gtc2hhZG93OjAgNHB4IDZweCByZ2JhKDIwNSwyMjAsNTcsLjIpfS5jYXBpYmFyYS5jLWxpbWUuZGFyay10aGVtZSAuaW5wdXQtYm94LC5jYXBpYmFyYS5jLWxpbWUuZGFyay10aGVtZSAuaW5wdXQtc2VjdGlvbiBpbnB1dC5uYXYtaW5wdXQsLmNhcGliYXJhLmMtbGltZSAuaW5wdXQtYm94LC5jYXBpYmFyYS5jLWxpbWUgLmlucHV0LXNlY3Rpb24gaW5wdXQubmF2LWlucHV0e2JvcmRlci1jb2xvcjpyZ2JhKDIwNSwyMjAsNTcsLjYpfS5jYXBpYmFyYS5jLWxpbWUuZGFyay10aGVtZSAuaW5wdXQtc2VjdGlvbiBpbnB1dC5uYXYtaW5wdXQ6YWN0aXZlLC5jYXBpYmFyYS5jLWxpbWUuZGFyay10aGVtZSAuaW5wdXQtc2VjdGlvbiBpbnB1dC5uYXYtaW5wdXQ6Zm9jdXMsLmNhcGliYXJhLmMtbGltZSAuaW5wdXQtc2VjdGlvbiBpbnB1dC5uYXYtaW5wdXQ6YWN0aXZlLC5jYXBpYmFyYS5jLWxpbWUgLmlucHV0LXNlY3Rpb24gaW5wdXQubmF2LWlucHV0OmZvY3Vze2JvcmRlci1jb2xvcjojY2RkYzM5O2JveC1zaGFkb3c6MCA0cHggNnB4IHJnYmEoMjA1LDIyMCw1NywuMil9LmNhcGliYXJhLmMtbGltZS5kYXJrLXRoZW1lIC5pbnB1dC1zZWN0aW9uLm1zai1pbnB1dC1jb250YWluZXIgdGV4dGFyZWEubXNqLC5jYXBpYmFyYS5jLWxpbWUgLmlucHV0LXNlY3Rpb24ubXNqLWlucHV0LWNvbnRhaW5lciB0ZXh0YXJlYS5tc2p7Ym9yZGVyOjJweCBzb2xpZCAjY2RkYzM5fS5jYXBpYmFyYS5jLWxpbWUuZGFyay10aGVtZSAuaW5wdXQtc2VjdGlvbi5tc2otaW5wdXQtY29udGFpbmVyIHRleHRhcmVhLm1zajphY3RpdmUsLmNhcGliYXJhLmMtbGltZS5kYXJrLXRoZW1lIC5pbnB1dC1zZWN0aW9uLm1zai1pbnB1dC1jb250YWluZXIgdGV4dGFyZWEubXNqOmZvY3VzLC5jYXBpYmFyYS5jLWxpbWUgLmlucHV0LXNlY3Rpb24ubXNqLWlucHV0LWNvbnRhaW5lciB0ZXh0YXJlYS5tc2o6YWN0aXZlLC5jYXBpYmFyYS5jLWxpbWUgLmlucHV0LXNlY3Rpb24ubXNqLWlucHV0LWNvbnRhaW5lciB0ZXh0YXJlYS5tc2o6Zm9jdXN7Ym94LXNoYWRvdzowIDRweCA2cHggcmdiYSgyMDUsMjIwLDU3LC4yKX0uY2FwaWJhcmEuYy1saW1lIC5idG4tcmFpc2VkLC5jYXBpYmFyYS5jLWxpbWUuZGFyay10aGVtZSAuYnRuLXJhaXNlZHtib3JkZXItY29sb3I6I2NkZGMzOTtiYWNrZ3JvdW5kOnJnYmEoMjA1LDIyMCw1NywuOCl9LmNhcGliYXJhLmMtbGltZSAuYnRuLW91dGxpbmUsLmNhcGliYXJhLmMtbGltZS5kYXJrLXRoZW1lIC5idG4tb3V0bGluZXtib3JkZXItY29sb3I6I2NkZGMzOTtjb2xvcjojY2RkYzM5fS5jYXBpYmFyYS5jLWxpbWUuZGFyay10aGVtZSAuc2VsZWN0LWNvbnRhaW5lciAuc2VsZWN0ZWQtZGF5LC5jYXBpYmFyYS5jLWxpbWUgLnNlbGVjdC1jb250YWluZXIgLnNlbGVjdGVkLWRheXtiYWNrZ3JvdW5kOnJnYmEoMjA1LDIyMCw1NywuMyk7Ym94LXNoYWRvdzppbnNldCAwIDAgMTBweCByZ2JhKDIwNSwyMjAsNTcsLjUpfS5jYXBpYmFyYSAuYy1saW1lLS1iYWNrZ3JvdW5ke2JhY2tncm91bmQ6I2NkZGMzOSFpbXBvcnRhbnR9LmNhcGliYXJhIC5jLWxpbWUtZC0tYmFja2dyb3VuZHtiYWNrZ3JvdW5kOiM5ZGFhMWUhaW1wb3J0YW50fS5jYXBpYmFyYSAuYy1saW1lLWwtLWJhY2tncm91bmR7YmFja2dyb3VuZDojZGRlNzdhIWltcG9ydGFudH0uY2FwaWJhcmEgLmMtbGltZS0tdGV4dHtjb2xvcjojY2RkYzM5IWltcG9ydGFudH0uY2FwaWJhcmEgLmMtbGltZS1kLS10ZXh0e2NvbG9yOiM5ZGFhMWUhaW1wb3J0YW50fS5jYXBpYmFyYSAuYy1saW1lLWwtLXRleHR7Y29sb3I6I2RkZTc3YSFpbXBvcnRhbnR9LmNhcGliYXJhIC5kZXRhaWwtZGF5IC5saXN0LWRldGFpbCAuaXRlbS1kZXRhaWwuYy1saW1le2JhY2tncm91bmQ6cmdiYSgyMDUsMjIwLDU3LC4yKTtib3JkZXI6MXB4IHNvbGlkICNjZGRjMzl9LmNhcGliYXJhIC5kZXRhaWwtZGF5IC5saXN0LWRldGFpbCAuaXRlbS1kZXRhaWwuYy1saW1lIC5sZWZ0LWljb257YmFja2dyb3VuZDojY2RkYzM5fS5jYXBpYmFyYSAuZGV0YWlsLWRheSAubGlzdC1kZXRhaWwgLml0ZW0tZGV0YWlsLmMtbGltZSAubGVmdC1pY29uLm91dGxpbmVke2JvcmRlcjoxcHggc29saWQgI2NkZGMzOTtib3gtc2hhZG93Omluc2V0IDAgMCAwIDFweCByZ2JhKDIwNSwyMjAsNTcsLjcpfS5jYXBpYmFyYSAuZGV0YWlsLWRheSAubGlzdC1kZXRhaWwgLml0ZW0tZGV0YWlsLmMtbGltZSAubmFtZXtjb2xvcjojY2RkYzM5fS5jYXBpYmFyYSAuZmxvYXQtYm94LWNvbnRhaW5lciAuZmxvYXQtYm94IHNwYW4uZGF0YS5jLWxpbWV7YmFja2dyb3VuZDpyZ2JhKDIwNSwyMjAsNTcsLjgpfS5jYXBpYmFyYSAuZmxvYXQtYm94LWNvbnRhaW5lciAuZmxvYXQtYm94IHNwYW4uZGF0YS5zaGFwZS1vdXRsaW5lZC5jLWxpbWV7Ym9yZGVyLWNvbG9yOnJnYmEoMjA1LDIyMCw1NywuOSk7YmFja2dyb3VuZDpyZ2JhKDIwNSwyMjAsNTcsLjEpO2NvbG9yOiNjZGRjMzl9LmNhcGliYXJhIC5mbG9hdC1ib3gtY29udGFpbmVyIC5mbG9hdC1ib3ggc3Bhbi5kYXRhLnNoYXBlLWJhci5jLWxpbWV7YmFja2dyb3VuZDojY2RkYzM5fS5jYXBpYmFyYSAuZmxvYXQtYm94LWNvbnRhaW5lciAuZmxvYXQtYm94IHNwYW4uZGF0YS5zaGFwZS1iYXItb3V0bGluZWQuYy1saW1le2JvcmRlci1jb2xvcjpyZ2JhKDIwNSwyMjAsNTcsLjkpO2JhY2tncm91bmQ6cmdiYSgyMDUsMjIwLDU3LC4xKX0uY2FwaWJhcmEgLmZsb2F0LWJveC1jb250YWluZXIgLmZsb2F0LWJveCAuZG90LmMtbGltZXtiYWNrZ3JvdW5kOiNjZGRjMzl9LmNhcGliYXJhIC5mbG9hdC1ib3gtY29udGFpbmVyIC5mbG9hdC1ib3ggLmRvdC5jLWxpbWUub3V0bGluZWR7Ym9yZGVyOjFweCBzb2xpZCAjY2RkYzM5O2JveC1zaGFkb3c6aW5zZXQgMCAwIDAgMXB4IHJnYmEoMjA1LDIyMCw1NywuNyl9LmNhcGliYXJhIC5oZWFkZXItdG9wIC50YWJzLWNvbnRhaW5lciAudGFiOm5vdCguZGlzYWJsZWQpLmMtbGltZS5hY3RpdmV7YmFja2dyb3VuZDpyZ2JhKDIwNSwyMjAsNTcsLjcpO2JvcmRlci1jb2xvcjpyZ2JhKDIwNSwyMjAsNTcsLjcpO2NvbG9yOiNmZmZ9LmNhcGliYXJhIC5oZWFkZXItdG9wIC50YWJzLWNvbnRhaW5lciAudGFiOm5vdCguZGlzYWJsZWQpLmMtbGltZS5hY3RpdmU6aG92ZXJ7YmFja2dyb3VuZDpyZ2JhKDIwNSwyMjAsNTcsLjgpfS5jYXBpYmFyYSAuaGVhZGVyLXRvcCAudGFicy1jb250YWluZXIgLnRhYjpub3QoLmRpc2FibGVkKS5jLWxpbWU6aG92ZXJ7YmFja2dyb3VuZDpyZ2JhKDIwNSwyMjAsNTcsLjIpO2JvcmRlci1jb2xvcjpyZ2JhKDIwNSwyMjAsNTcsLjkpfS5jYXBpYmFyYSAuaW5wdXQtYm94IC5taW5pLWlucHV0LXNlY3Rpb24tLWljb24uYy1saW1le2JhY2tncm91bmQ6I2NkZGMzOX0uY2FwaWJhcmEuYy15ZWxsb3c6bm90KC5kYXJrLXRoZW1lKSA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1ie2JhY2tncm91bmQ6I2ViZGI0Zn0uY2FwaWJhcmEuYy15ZWxsb3c6bm90KC5kYXJrLXRoZW1lKSAuaGVhZGVyLXRvcHtiYWNrZ3JvdW5kOiNmZmZ9LmNhcGliYXJhLmMteWVsbG93Om5vdCguZGFyay10aGVtZSkgLmNvcm5lcntiYWNrZ3JvdW5kOiNmZmY7Ym9yZGVyLWNvbG9yOiNmZmY1YTF9LmNhcGliYXJhLmMteWVsbG93Om5vdCguZGFyay10aGVtZSkgLmNvbnRhaW5lci10bCBoZWFkZXJ7YmFja2dyb3VuZDojZmZmO2JvcmRlci1ib3R0b20tY29sb3I6I2ZmZjVhMX0uY2FwaWJhcmEuYy15ZWxsb3c6bm90KC5kYXJrLXRoZW1lKSAuY29udGFpbmVyLXRsIGhlYWRlciAubWVzLm1lcy1yZWR1Y2VkOmFmdGVye2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDkwZGVnLHRyYW5zcGFyZW50LCNmZmYpIWltcG9ydGFudH0uY2FwaWJhcmEuYy15ZWxsb3c6bm90KC5kYXJrLXRoZW1lKSBuYXYucmlnaHR7Ym9yZGVyLWNvbG9yOiNmZmY1YTF9LmNhcGliYXJhLmMteWVsbG93LmRhcmstdGhlbWUgLmhlYWRlci10b3AsLmNhcGliYXJhLmMteWVsbG93LmRhcmstdGhlbWUgbmF2LnJpZ2h0e2JvcmRlci1jb2xvcjojZDRiZTAwfS5jYXBpYmFyYS5jLXllbGxvdy5kYXJrLXRoZW1lIC5jb250YWluZXItdGwgaGVhZGVyLC5jYXBpYmFyYS5jLXllbGxvdy5kYXJrLXRoZW1lIC5jb3JuZXJ7Ym9yZGVyLWJvdHRvbS1jb2xvcjojZDRiZTAwfS5jYXBpYmFyYS5jLXllbGxvdy5kYXJrLXRoZW1lIC5wcm9ncmVzcy1iYXIsLmNhcGliYXJhLmMteWVsbG93IC5wcm9ncmVzcy1iYXJ7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyMzUsNTksLjIpIWltcG9ydGFudH0uY2FwaWJhcmEuYy15ZWxsb3cuZGFyay10aGVtZSAucHJvZ3Jlc3MtYmFyOmFmdGVyLC5jYXBpYmFyYS5jLXllbGxvdy5kYXJrLXRoZW1lIC5wcm9ncmVzcy1iYXI6YmVmb3JlLC5jYXBpYmFyYS5jLXllbGxvdyAucHJvZ3Jlc3MtYmFyOmFmdGVyLC5jYXBpYmFyYS5jLXllbGxvdyAucHJvZ3Jlc3MtYmFyOmJlZm9yZXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmViM2IhaW1wb3J0YW50fS5jYXBpYmFyYS5jLXllbGxvdy5kYXJrLXRoZW1lIHNlbGVjdC50YWJzLXNlbGVjdCwuY2FwaWJhcmEuYy15ZWxsb3cgc2VsZWN0LnRhYnMtc2VsZWN0e2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjM1LDU5LC43KSFpbXBvcnRhbnQ7Ym9yZGVyLWNvbG9yOiNmZmViM2IhaW1wb3J0YW50fS5jYXBpYmFyYS5jLXllbGxvdy5kYXJrLXRoZW1lIC50aW1lLC5jYXBpYmFyYS5jLXllbGxvdyAudGltZXtib3JkZXItY29sb3I6cmdiYSgyNTUsMjM1LDU5LC42KX0uY2FwaWJhcmEuYy15ZWxsb3cuZGFyay10aGVtZSAudGltZSAuc3ltYm9sLC5jYXBpYmFyYS5jLXllbGxvdyAudGltZSAuc3ltYm9se2NvbG9yOiNmZmViM2J9LmNhcGliYXJhLmMteWVsbG93LmRhcmstdGhlbWUgLnRpbWUgaW5wdXQ6YWN0aXZlLC5jYXBpYmFyYS5jLXllbGxvdy5kYXJrLXRoZW1lIC50aW1lIGlucHV0OmZvY3VzLC5jYXBpYmFyYS5jLXllbGxvdyAudGltZSBpbnB1dDphY3RpdmUsLmNhcGliYXJhLmMteWVsbG93IC50aW1lIGlucHV0OmZvY3Vze2JvcmRlci1jb2xvcjojZmZlYjNiO2JveC1zaGFkb3c6MCA0cHggNnB4IHJnYmEoMjU1LDIzNSw1OSwuMil9LmNhcGliYXJhLmMteWVsbG93LmRhcmstdGhlbWUgLmlucHV0LWJveCwuY2FwaWJhcmEuYy15ZWxsb3cuZGFyay10aGVtZSAuaW5wdXQtc2VjdGlvbiBpbnB1dC5uYXYtaW5wdXQsLmNhcGliYXJhLmMteWVsbG93IC5pbnB1dC1ib3gsLmNhcGliYXJhLmMteWVsbG93IC5pbnB1dC1zZWN0aW9uIGlucHV0Lm5hdi1pbnB1dHtib3JkZXItY29sb3I6cmdiYSgyNTUsMjM1LDU5LC42KX0uY2FwaWJhcmEuYy15ZWxsb3cuZGFyay10aGVtZSAuaW5wdXQtc2VjdGlvbiBpbnB1dC5uYXYtaW5wdXQ6YWN0aXZlLC5jYXBpYmFyYS5jLXllbGxvdy5kYXJrLXRoZW1lIC5pbnB1dC1zZWN0aW9uIGlucHV0Lm5hdi1pbnB1dDpmb2N1cywuY2FwaWJhcmEuYy15ZWxsb3cgLmlucHV0LXNlY3Rpb24gaW5wdXQubmF2LWlucHV0OmFjdGl2ZSwuY2FwaWJhcmEuYy15ZWxsb3cgLmlucHV0LXNlY3Rpb24gaW5wdXQubmF2LWlucHV0OmZvY3Vze2JvcmRlci1jb2xvcjojZmZlYjNiO2JveC1zaGFkb3c6MCA0cHggNnB4IHJnYmEoMjU1LDIzNSw1OSwuMil9LmNhcGliYXJhLmMteWVsbG93LmRhcmstdGhlbWUgLmlucHV0LXNlY3Rpb24ubXNqLWlucHV0LWNvbnRhaW5lciB0ZXh0YXJlYS5tc2osLmNhcGliYXJhLmMteWVsbG93IC5pbnB1dC1zZWN0aW9uLm1zai1pbnB1dC1jb250YWluZXIgdGV4dGFyZWEubXNqe2JvcmRlcjoycHggc29saWQgI2ZmZWIzYn0uY2FwaWJhcmEuYy15ZWxsb3cuZGFyay10aGVtZSAuaW5wdXQtc2VjdGlvbi5tc2otaW5wdXQtY29udGFpbmVyIHRleHRhcmVhLm1zajphY3RpdmUsLmNhcGliYXJhLmMteWVsbG93LmRhcmstdGhlbWUgLmlucHV0LXNlY3Rpb24ubXNqLWlucHV0LWNvbnRhaW5lciB0ZXh0YXJlYS5tc2o6Zm9jdXMsLmNhcGliYXJhLmMteWVsbG93IC5pbnB1dC1zZWN0aW9uLm1zai1pbnB1dC1jb250YWluZXIgdGV4dGFyZWEubXNqOmFjdGl2ZSwuY2FwaWJhcmEuYy15ZWxsb3cgLmlucHV0LXNlY3Rpb24ubXNqLWlucHV0LWNvbnRhaW5lciB0ZXh0YXJlYS5tc2o6Zm9jdXN7Ym94LXNoYWRvdzowIDRweCA2cHggcmdiYSgyNTUsMjM1LDU5LC4yKX0uY2FwaWJhcmEuYy15ZWxsb3cgLmJ0bi1yYWlzZWQsLmNhcGliYXJhLmMteWVsbG93LmRhcmstdGhlbWUgLmJ0bi1yYWlzZWR7Ym9yZGVyLWNvbG9yOiNmZmViM2I7YmFja2dyb3VuZDpyZ2JhKDI1NSwyMzUsNTksLjgpfS5jYXBpYmFyYS5jLXllbGxvdyAuYnRuLW91dGxpbmUsLmNhcGliYXJhLmMteWVsbG93LmRhcmstdGhlbWUgLmJ0bi1vdXRsaW5le2JvcmRlci1jb2xvcjojZmZlYjNiO2NvbG9yOiNmZmViM2J9LmNhcGliYXJhLmMteWVsbG93LmRhcmstdGhlbWUgLnNlbGVjdC1jb250YWluZXIgLnNlbGVjdGVkLWRheSwuY2FwaWJhcmEuYy15ZWxsb3cgLnNlbGVjdC1jb250YWluZXIgLnNlbGVjdGVkLWRheXtiYWNrZ3JvdW5kOnJnYmEoMjU1LDIzNSw1OSwuMyk7Ym94LXNoYWRvdzppbnNldCAwIDAgMTBweCByZ2JhKDI1NSwyMzUsNTksLjUpfS5jYXBpYmFyYSAuYy15ZWxsb3ctLWJhY2tncm91bmR7YmFja2dyb3VuZDojZmZlYjNiIWltcG9ydGFudH0uY2FwaWJhcmEgLmMteWVsbG93LWQtLWJhY2tncm91bmR7YmFja2dyb3VuZDojZWVkNTAwIWltcG9ydGFudH0uY2FwaWJhcmEgLmMteWVsbG93LWwtLWJhY2tncm91bmR7YmFja2dyb3VuZDojZmZmMzg4IWltcG9ydGFudH0uY2FwaWJhcmEgLmMteWVsbG93LS10ZXh0e2NvbG9yOiNmZmViM2IhaW1wb3J0YW50fS5jYXBpYmFyYSAuYy15ZWxsb3ctZC0tdGV4dHtjb2xvcjojZWVkNTAwIWltcG9ydGFudH0uY2FwaWJhcmEgLmMteWVsbG93LWwtLXRleHR7Y29sb3I6I2ZmZjM4OCFpbXBvcnRhbnR9LmNhcGliYXJhIC5kZXRhaWwtZGF5IC5saXN0LWRldGFpbCAuaXRlbS1kZXRhaWwuYy15ZWxsb3d7YmFja2dyb3VuZDpyZ2JhKDI1NSwyMzUsNTksLjIpO2JvcmRlcjoxcHggc29saWQgI2ZmZWIzYn0uY2FwaWJhcmEgLmRldGFpbC1kYXkgLmxpc3QtZGV0YWlsIC5pdGVtLWRldGFpbC5jLXllbGxvdyAubGVmdC1pY29ue2JhY2tncm91bmQ6I2ZmZWIzYn0uY2FwaWJhcmEgLmRldGFpbC1kYXkgLmxpc3QtZGV0YWlsIC5pdGVtLWRldGFpbC5jLXllbGxvdyAubGVmdC1pY29uLm91dGxpbmVke2JvcmRlcjoxcHggc29saWQgI2ZmZWIzYjtib3gtc2hhZG93Omluc2V0IDAgMCAwIDFweCByZ2JhKDI1NSwyMzUsNTksLjcpfS5jYXBpYmFyYSAuZGV0YWlsLWRheSAubGlzdC1kZXRhaWwgLml0ZW0tZGV0YWlsLmMteWVsbG93IC5uYW1le2NvbG9yOiNmZmViM2J9LmNhcGliYXJhIC5mbG9hdC1ib3gtY29udGFpbmVyIC5mbG9hdC1ib3ggc3Bhbi5kYXRhLmMteWVsbG93e2JhY2tncm91bmQ6cmdiYSgyNTUsMjM1LDU5LC44KX0uY2FwaWJhcmEgLmZsb2F0LWJveC1jb250YWluZXIgLmZsb2F0LWJveCBzcGFuLmRhdGEuc2hhcGUtb3V0bGluZWQuYy15ZWxsb3d7Ym9yZGVyLWNvbG9yOnJnYmEoMjU1LDIzNSw1OSwuOSk7YmFja2dyb3VuZDpyZ2JhKDI1NSwyMzUsNTksLjEpO2NvbG9yOiNmZmViM2J9LmNhcGliYXJhIC5mbG9hdC1ib3gtY29udGFpbmVyIC5mbG9hdC1ib3ggc3Bhbi5kYXRhLnNoYXBlLWJhci5jLXllbGxvd3tiYWNrZ3JvdW5kOiNmZmViM2J9LmNhcGliYXJhIC5mbG9hdC1ib3gtY29udGFpbmVyIC5mbG9hdC1ib3ggc3Bhbi5kYXRhLnNoYXBlLWJhci1vdXRsaW5lZC5jLXllbGxvd3tib3JkZXItY29sb3I6cmdiYSgyNTUsMjM1LDU5LC45KTtiYWNrZ3JvdW5kOnJnYmEoMjU1LDIzNSw1OSwuMSl9LmNhcGliYXJhIC5mbG9hdC1ib3gtY29udGFpbmVyIC5mbG9hdC1ib3ggLmRvdC5jLXllbGxvd3tiYWNrZ3JvdW5kOiNmZmViM2J9LmNhcGliYXJhIC5mbG9hdC1ib3gtY29udGFpbmVyIC5mbG9hdC1ib3ggLmRvdC5jLXllbGxvdy5vdXRsaW5lZHtib3JkZXI6MXB4IHNvbGlkICNmZmViM2I7Ym94LXNoYWRvdzppbnNldCAwIDAgMCAxcHggcmdiYSgyNTUsMjM1LDU5LC43KX0uY2FwaWJhcmEgLmhlYWRlci10b3AgLnRhYnMtY29udGFpbmVyIC50YWI6bm90KC5kaXNhYmxlZCkuYy15ZWxsb3cuYWN0aXZle2JhY2tncm91bmQ6cmdiYSgyNTUsMjM1LDU5LC43KTtib3JkZXItY29sb3I6cmdiYSgyNTUsMjM1LDU5LC43KTtjb2xvcjojZmZmfS5jYXBpYmFyYSAuaGVhZGVyLXRvcCAudGFicy1jb250YWluZXIgLnRhYjpub3QoLmRpc2FibGVkKS5jLXllbGxvdy5hY3RpdmU6aG92ZXJ7YmFja2dyb3VuZDpyZ2JhKDI1NSwyMzUsNTksLjgpfS5jYXBpYmFyYSAuaGVhZGVyLXRvcCAudGFicy1jb250YWluZXIgLnRhYjpub3QoLmRpc2FibGVkKS5jLXllbGxvdzpob3ZlcntiYWNrZ3JvdW5kOnJnYmEoMjU1LDIzNSw1OSwuMik7Ym9yZGVyLWNvbG9yOnJnYmEoMjU1LDIzNSw1OSwuOSl9LmNhcGliYXJhIC5pbnB1dC1ib3ggLm1pbmktaW5wdXQtc2VjdGlvbi0taWNvbi5jLXllbGxvd3tiYWNrZ3JvdW5kOiNmZmViM2J9LmNhcGliYXJhLmMtYW1iZXI6bm90KC5kYXJrLXRoZW1lKSA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1ie2JhY2tncm91bmQ6I2U2YjUyMH0uY2FwaWJhcmEuYy1hbWJlcjpub3QoLmRhcmstdGhlbWUpIC5oZWFkZXItdG9we2JhY2tncm91bmQ6I2Y0ZWZkZX0uY2FwaWJhcmEuYy1hbWJlcjpub3QoLmRhcmstdGhlbWUpIC5jb3JuZXJ7YmFja2dyb3VuZDojZjRlZmRlO2JvcmRlci1jb2xvcjojZmZkYjZkfS5jYXBpYmFyYS5jLWFtYmVyOm5vdCguZGFyay10aGVtZSkgLmNvbnRhaW5lci10bCBoZWFkZXJ7YmFja2dyb3VuZDojZjRlZmRlO2JvcmRlci1ib3R0b20tY29sb3I6I2ZmZGI2ZH0uY2FwaWJhcmEuYy1hbWJlcjpub3QoLmRhcmstdGhlbWUpIC5jb250YWluZXItdGwgaGVhZGVyIC5tZXMubWVzLXJlZHVjZWQ6YWZ0ZXJ7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoOTBkZWcsdHJhbnNwYXJlbnQsI2ZmZjRkMykhaW1wb3J0YW50fS5jYXBpYmFyYS5jLWFtYmVyOm5vdCguZGFyay10aGVtZSkgbmF2LnJpZ2h0e2JvcmRlci1jb2xvcjojZmZkYjZkfS5jYXBpYmFyYS5jLWFtYmVyLmRhcmstdGhlbWUgLmhlYWRlci10b3AsLmNhcGliYXJhLmMtYW1iZXIuZGFyay10aGVtZSBuYXYucmlnaHR7Ym9yZGVyLWNvbG9yOiNhMDc4MDB9LmNhcGliYXJhLmMtYW1iZXIuZGFyay10aGVtZSAuY29udGFpbmVyLXRsIGhlYWRlciwuY2FwaWJhcmEuYy1hbWJlci5kYXJrLXRoZW1lIC5jb3JuZXJ7Ym9yZGVyLWJvdHRvbS1jb2xvcjojYTA3ODAwfS5jYXBpYmFyYS5jLWFtYmVyLmRhcmstdGhlbWUgLnByb2dyZXNzLWJhciwuY2FwaWJhcmEuYy1hbWJlciAucHJvZ3Jlc3MtYmFye2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMTkzLDcsLjIpIWltcG9ydGFudH0uY2FwaWJhcmEuYy1hbWJlci5kYXJrLXRoZW1lIC5wcm9ncmVzcy1iYXI6YWZ0ZXIsLmNhcGliYXJhLmMtYW1iZXIuZGFyay10aGVtZSAucHJvZ3Jlc3MtYmFyOmJlZm9yZSwuY2FwaWJhcmEuYy1hbWJlciAucHJvZ3Jlc3MtYmFyOmFmdGVyLC5jYXBpYmFyYS5jLWFtYmVyIC5wcm9ncmVzcy1iYXI6YmVmb3Jle2JhY2tncm91bmQtY29sb3I6I2ZmYzEwNyFpbXBvcnRhbnR9LmNhcGliYXJhLmMtYW1iZXIuZGFyay10aGVtZSBzZWxlY3QudGFicy1zZWxlY3QsLmNhcGliYXJhLmMtYW1iZXIgc2VsZWN0LnRhYnMtc2VsZWN0e2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMTkzLDcsLjcpIWltcG9ydGFudDtib3JkZXItY29sb3I6I2ZmYzEwNyFpbXBvcnRhbnR9LmNhcGliYXJhLmMtYW1iZXIuZGFyay10aGVtZSAudGltZSwuY2FwaWJhcmEuYy1hbWJlciAudGltZXtib3JkZXItY29sb3I6cmdiYSgyNTUsMTkzLDcsLjYpfS5jYXBpYmFyYS5jLWFtYmVyLmRhcmstdGhlbWUgLnRpbWUgLnN5bWJvbCwuY2FwaWJhcmEuYy1hbWJlciAudGltZSAuc3ltYm9se2NvbG9yOiNmZmMxMDd9LmNhcGliYXJhLmMtYW1iZXIuZGFyay10aGVtZSAudGltZSBpbnB1dDphY3RpdmUsLmNhcGliYXJhLmMtYW1iZXIuZGFyay10aGVtZSAudGltZSBpbnB1dDpmb2N1cywuY2FwaWJhcmEuYy1hbWJlciAudGltZSBpbnB1dDphY3RpdmUsLmNhcGliYXJhLmMtYW1iZXIgLnRpbWUgaW5wdXQ6Zm9jdXN7Ym9yZGVyLWNvbG9yOiNmZmMxMDc7Ym94LXNoYWRvdzowIDRweCA2cHggcmdiYSgyNTUsMTkzLDcsLjIpfS5jYXBpYmFyYS5jLWFtYmVyLmRhcmstdGhlbWUgLmlucHV0LWJveCwuY2FwaWJhcmEuYy1hbWJlci5kYXJrLXRoZW1lIC5pbnB1dC1zZWN0aW9uIGlucHV0Lm5hdi1pbnB1dCwuY2FwaWJhcmEuYy1hbWJlciAuaW5wdXQtYm94LC5jYXBpYmFyYS5jLWFtYmVyIC5pbnB1dC1zZWN0aW9uIGlucHV0Lm5hdi1pbnB1dHtib3JkZXItY29sb3I6cmdiYSgyNTUsMTkzLDcsLjYpfS5jYXBpYmFyYS5jLWFtYmVyLmRhcmstdGhlbWUgLmlucHV0LXNlY3Rpb24gaW5wdXQubmF2LWlucHV0OmFjdGl2ZSwuY2FwaWJhcmEuYy1hbWJlci5kYXJrLXRoZW1lIC5pbnB1dC1zZWN0aW9uIGlucHV0Lm5hdi1pbnB1dDpmb2N1cywuY2FwaWJhcmEuYy1hbWJlciAuaW5wdXQtc2VjdGlvbiBpbnB1dC5uYXYtaW5wdXQ6YWN0aXZlLC5jYXBpYmFyYS5jLWFtYmVyIC5pbnB1dC1zZWN0aW9uIGlucHV0Lm5hdi1pbnB1dDpmb2N1c3tib3JkZXItY29sb3I6I2ZmYzEwNztib3gtc2hhZG93OjAgNHB4IDZweCByZ2JhKDI1NSwxOTMsNywuMil9LmNhcGliYXJhLmMtYW1iZXIuZGFyay10aGVtZSAuaW5wdXQtc2VjdGlvbi5tc2otaW5wdXQtY29udGFpbmVyIHRleHRhcmVhLm1zaiwuY2FwaWJhcmEuYy1hbWJlciAuaW5wdXQtc2VjdGlvbi5tc2otaW5wdXQtY29udGFpbmVyIHRleHRhcmVhLm1zantib3JkZXI6MnB4IHNvbGlkICNmZmMxMDd9LmNhcGliYXJhLmMtYW1iZXIuZGFyay10aGVtZSAuaW5wdXQtc2VjdGlvbi5tc2otaW5wdXQtY29udGFpbmVyIHRleHRhcmVhLm1zajphY3RpdmUsLmNhcGliYXJhLmMtYW1iZXIuZGFyay10aGVtZSAuaW5wdXQtc2VjdGlvbi5tc2otaW5wdXQtY29udGFpbmVyIHRleHRhcmVhLm1zajpmb2N1cywuY2FwaWJhcmEuYy1hbWJlciAuaW5wdXQtc2VjdGlvbi5tc2otaW5wdXQtY29udGFpbmVyIHRleHRhcmVhLm1zajphY3RpdmUsLmNhcGliYXJhLmMtYW1iZXIgLmlucHV0LXNlY3Rpb24ubXNqLWlucHV0LWNvbnRhaW5lciB0ZXh0YXJlYS5tc2o6Zm9jdXN7Ym94LXNoYWRvdzowIDRweCA2cHggcmdiYSgyNTUsMTkzLDcsLjIpfS5jYXBpYmFyYS5jLWFtYmVyIC5idG4tcmFpc2VkLC5jYXBpYmFyYS5jLWFtYmVyLmRhcmstdGhlbWUgLmJ0bi1yYWlzZWR7Ym9yZGVyLWNvbG9yOiNmZmMxMDc7YmFja2dyb3VuZDpyZ2JhKDI1NSwxOTMsNywuOCl9LmNhcGliYXJhLmMtYW1iZXIgLmJ0bi1vdXRsaW5lLC5jYXBpYmFyYS5jLWFtYmVyLmRhcmstdGhlbWUgLmJ0bi1vdXRsaW5le2JvcmRlci1jb2xvcjojZmZjMTA3O2NvbG9yOiNmZmMxMDd9LmNhcGliYXJhLmMtYW1iZXIuZGFyay10aGVtZSAuc2VsZWN0LWNvbnRhaW5lciAuc2VsZWN0ZWQtZGF5LC5jYXBpYmFyYS5jLWFtYmVyIC5zZWxlY3QtY29udGFpbmVyIC5zZWxlY3RlZC1kYXl7YmFja2dyb3VuZDpyZ2JhKDI1NSwxOTMsNywuMyk7Ym94LXNoYWRvdzppbnNldCAwIDAgMTBweCByZ2JhKDI1NSwxOTMsNywuNSl9LmNhcGliYXJhIC5jLWFtYmVyLS1iYWNrZ3JvdW5ke2JhY2tncm91bmQ6I2ZmYzEwNyFpbXBvcnRhbnR9LmNhcGliYXJhIC5jLWFtYmVyLWQtLWJhY2tncm91bmR7YmFja2dyb3VuZDojYmE4YjAwIWltcG9ydGFudH0uY2FwaWJhcmEgLmMtYW1iZXItbC0tYmFja2dyb3VuZHtiYWNrZ3JvdW5kOiNmZmQ0NTQhaW1wb3J0YW50fS5jYXBpYmFyYSAuYy1hbWJlci0tdGV4dHtjb2xvcjojZmZjMTA3IWltcG9ydGFudH0uY2FwaWJhcmEgLmMtYW1iZXItZC0tdGV4dHtjb2xvcjojYmE4YjAwIWltcG9ydGFudH0uY2FwaWJhcmEgLmMtYW1iZXItbC0tdGV4dHtjb2xvcjojZmZkNDU0IWltcG9ydGFudH0uY2FwaWJhcmEgLmRldGFpbC1kYXkgLmxpc3QtZGV0YWlsIC5pdGVtLWRldGFpbC5jLWFtYmVye2JhY2tncm91bmQ6cmdiYSgyNTUsMTkzLDcsLjIpO2JvcmRlcjoxcHggc29saWQgI2ZmYzEwN30uY2FwaWJhcmEgLmRldGFpbC1kYXkgLmxpc3QtZGV0YWlsIC5pdGVtLWRldGFpbC5jLWFtYmVyIC5sZWZ0LWljb257YmFja2dyb3VuZDojZmZjMTA3fS5jYXBpYmFyYSAuZGV0YWlsLWRheSAubGlzdC1kZXRhaWwgLml0ZW0tZGV0YWlsLmMtYW1iZXIgLmxlZnQtaWNvbi5vdXRsaW5lZHtib3JkZXI6MXB4IHNvbGlkICNmZmMxMDc7Ym94LXNoYWRvdzppbnNldCAwIDAgMCAxcHggcmdiYSgyNTUsMTkzLDcsLjcpfS5jYXBpYmFyYSAuZGV0YWlsLWRheSAubGlzdC1kZXRhaWwgLml0ZW0tZGV0YWlsLmMtYW1iZXIgLm5hbWV7Y29sb3I6I2ZmYzEwN30uY2FwaWJhcmEgLmZsb2F0LWJveC1jb250YWluZXIgLmZsb2F0LWJveCBzcGFuLmRhdGEuYy1hbWJlcntiYWNrZ3JvdW5kOnJnYmEoMjU1LDE5Myw3LC44KX0uY2FwaWJhcmEgLmZsb2F0LWJveC1jb250YWluZXIgLmZsb2F0LWJveCBzcGFuLmRhdGEuc2hhcGUtb3V0bGluZWQuYy1hbWJlcntib3JkZXItY29sb3I6cmdiYSgyNTUsMTkzLDcsLjkpO2JhY2tncm91bmQ6cmdiYSgyNTUsMTkzLDcsLjEpO2NvbG9yOiNmZmMxMDd9LmNhcGliYXJhIC5mbG9hdC1ib3gtY29udGFpbmVyIC5mbG9hdC1ib3ggc3Bhbi5kYXRhLnNoYXBlLWJhci5jLWFtYmVye2JhY2tncm91bmQ6I2ZmYzEwN30uY2FwaWJhcmEgLmZsb2F0LWJveC1jb250YWluZXIgLmZsb2F0LWJveCBzcGFuLmRhdGEuc2hhcGUtYmFyLW91dGxpbmVkLmMtYW1iZXJ7Ym9yZGVyLWNvbG9yOnJnYmEoMjU1LDE5Myw3LC45KTtiYWNrZ3JvdW5kOnJnYmEoMjU1LDE5Myw3LC4xKX0uY2FwaWJhcmEgLmZsb2F0LWJveC1jb250YWluZXIgLmZsb2F0LWJveCAuZG90LmMtYW1iZXJ7YmFja2dyb3VuZDojZmZjMTA3fS5jYXBpYmFyYSAuZmxvYXQtYm94LWNvbnRhaW5lciAuZmxvYXQtYm94IC5kb3QuYy1hbWJlci5vdXRsaW5lZHtib3JkZXI6MXB4IHNvbGlkICNmZmMxMDc7Ym94LXNoYWRvdzppbnNldCAwIDAgMCAxcHggcmdiYSgyNTUsMTkzLDcsLjcpfS5jYXBpYmFyYSAuaGVhZGVyLXRvcCAudGFicy1jb250YWluZXIgLnRhYjpub3QoLmRpc2FibGVkKS5jLWFtYmVyLmFjdGl2ZXtiYWNrZ3JvdW5kOnJnYmEoMjU1LDE5Myw3LC43KTtib3JkZXItY29sb3I6cmdiYSgyNTUsMTkzLDcsLjcpO2NvbG9yOiNmZmZ9LmNhcGliYXJhIC5oZWFkZXItdG9wIC50YWJzLWNvbnRhaW5lciAudGFiOm5vdCguZGlzYWJsZWQpLmMtYW1iZXIuYWN0aXZlOmhvdmVye2JhY2tncm91bmQ6cmdiYSgyNTUsMTkzLDcsLjgpfS5jYXBpYmFyYSAuaGVhZGVyLXRvcCAudGFicy1jb250YWluZXIgLnRhYjpub3QoLmRpc2FibGVkKS5jLWFtYmVyOmhvdmVye2JhY2tncm91bmQ6cmdiYSgyNTUsMTkzLDcsLjIpO2JvcmRlci1jb2xvcjpyZ2JhKDI1NSwxOTMsNywuOSl9LmNhcGliYXJhIC5pbnB1dC1ib3ggLm1pbmktaW5wdXQtc2VjdGlvbi0taWNvbi5jLWFtYmVye2JhY2tncm91bmQ6I2ZmYzEwN30uY2FwaWJhcmEuYy1vcmFuZ2U6bm90KC5kYXJrLXRoZW1lKSA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1ie2JhY2tncm91bmQ6I2U2OTMxYX0uY2FwaWJhcmEuYy1vcmFuZ2U6bm90KC5kYXJrLXRoZW1lKSAuaGVhZGVyLXRvcHtiYWNrZ3JvdW5kOiNmMmU4ZDl9LmNhcGliYXJhLmMtb3JhbmdlOm5vdCguZGFyay10aGVtZSkgLmNvcm5lcntiYWNrZ3JvdW5kOiNmMmU4ZDk7Ym9yZGVyLWNvbG9yOiNmZmMxNjZ9LmNhcGliYXJhLmMtb3JhbmdlOm5vdCguZGFyay10aGVtZSkgLmNvbnRhaW5lci10bCBoZWFkZXJ7YmFja2dyb3VuZDojZjJlOGQ5O2JvcmRlci1ib3R0b20tY29sb3I6I2ZmYzE2Nn0uY2FwaWJhcmEuYy1vcmFuZ2U6bm90KC5kYXJrLXRoZW1lKSAuY29udGFpbmVyLXRsIGhlYWRlciAubWVzLm1lcy1yZWR1Y2VkOmFmdGVye2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDkwZGVnLHRyYW5zcGFyZW50LCNmZmVhY2MpIWltcG9ydGFudH0uY2FwaWJhcmEuYy1vcmFuZ2U6bm90KC5kYXJrLXRoZW1lKSBuYXYucmlnaHR7Ym9yZGVyLWNvbG9yOiNmZmMxNjZ9LmNhcGliYXJhLmMtb3JhbmdlLmRhcmstdGhlbWUgLmhlYWRlci10b3AsLmNhcGliYXJhLmMtb3JhbmdlLmRhcmstdGhlbWUgbmF2LnJpZ2h0e2JvcmRlci1jb2xvcjojOTk1YjAwfS5jYXBpYmFyYS5jLW9yYW5nZS5kYXJrLXRoZW1lIC5jb250YWluZXItdGwgaGVhZGVyLC5jYXBpYmFyYS5jLW9yYW5nZS5kYXJrLXRoZW1lIC5jb3JuZXJ7Ym9yZGVyLWJvdHRvbS1jb2xvcjojOTk1YjAwfS5jYXBpYmFyYS5jLW9yYW5nZS5kYXJrLXRoZW1lIC5wcm9ncmVzcy1iYXIsLmNhcGliYXJhLmMtb3JhbmdlIC5wcm9ncmVzcy1iYXJ7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwxNTIsMCwuMikhaW1wb3J0YW50fS5jYXBpYmFyYS5jLW9yYW5nZS5kYXJrLXRoZW1lIC5wcm9ncmVzcy1iYXI6YWZ0ZXIsLmNhcGliYXJhLmMtb3JhbmdlLmRhcmstdGhlbWUgLnByb2dyZXNzLWJhcjpiZWZvcmUsLmNhcGliYXJhLmMtb3JhbmdlIC5wcm9ncmVzcy1iYXI6YWZ0ZXIsLmNhcGliYXJhLmMtb3JhbmdlIC5wcm9ncmVzcy1iYXI6YmVmb3Jle2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMCFpbXBvcnRhbnR9LmNhcGliYXJhLmMtb3JhbmdlLmRhcmstdGhlbWUgc2VsZWN0LnRhYnMtc2VsZWN0LC5jYXBpYmFyYS5jLW9yYW5nZSBzZWxlY3QudGFicy1zZWxlY3R7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwxNTIsMCwuNykhaW1wb3J0YW50O2JvcmRlci1jb2xvcjojZmY5ODAwIWltcG9ydGFudH0uY2FwaWJhcmEuYy1vcmFuZ2UuZGFyay10aGVtZSAudGltZSwuY2FwaWJhcmEuYy1vcmFuZ2UgLnRpbWV7Ym9yZGVyLWNvbG9yOnJnYmEoMjU1LDE1MiwwLC42KX0uY2FwaWJhcmEuYy1vcmFuZ2UuZGFyay10aGVtZSAudGltZSAuc3ltYm9sLC5jYXBpYmFyYS5jLW9yYW5nZSAudGltZSAuc3ltYm9se2NvbG9yOiNmZjk4MDB9LmNhcGliYXJhLmMtb3JhbmdlLmRhcmstdGhlbWUgLnRpbWUgaW5wdXQ6YWN0aXZlLC5jYXBpYmFyYS5jLW9yYW5nZS5kYXJrLXRoZW1lIC50aW1lIGlucHV0OmZvY3VzLC5jYXBpYmFyYS5jLW9yYW5nZSAudGltZSBpbnB1dDphY3RpdmUsLmNhcGliYXJhLmMtb3JhbmdlIC50aW1lIGlucHV0OmZvY3Vze2JvcmRlci1jb2xvcjojZmY5ODAwO2JveC1zaGFkb3c6MCA0cHggNnB4IHJnYmEoMjU1LDE1MiwwLC4yKX0uY2FwaWJhcmEuYy1vcmFuZ2UuZGFyay10aGVtZSAuaW5wdXQtYm94LC5jYXBpYmFyYS5jLW9yYW5nZS5kYXJrLXRoZW1lIC5pbnB1dC1zZWN0aW9uIGlucHV0Lm5hdi1pbnB1dCwuY2FwaWJhcmEuYy1vcmFuZ2UgLmlucHV0LWJveCwuY2FwaWJhcmEuYy1vcmFuZ2UgLmlucHV0LXNlY3Rpb24gaW5wdXQubmF2LWlucHV0e2JvcmRlci1jb2xvcjpyZ2JhKDI1NSwxNTIsMCwuNil9LmNhcGliYXJhLmMtb3JhbmdlLmRhcmstdGhlbWUgLmlucHV0LXNlY3Rpb24gaW5wdXQubmF2LWlucHV0OmFjdGl2ZSwuY2FwaWJhcmEuYy1vcmFuZ2UuZGFyay10aGVtZSAuaW5wdXQtc2VjdGlvbiBpbnB1dC5uYXYtaW5wdXQ6Zm9jdXMsLmNhcGliYXJhLmMtb3JhbmdlIC5pbnB1dC1zZWN0aW9uIGlucHV0Lm5hdi1pbnB1dDphY3RpdmUsLmNhcGliYXJhLmMtb3JhbmdlIC5pbnB1dC1zZWN0aW9uIGlucHV0Lm5hdi1pbnB1dDpmb2N1c3tib3JkZXItY29sb3I6I2ZmOTgwMDtib3gtc2hhZG93OjAgNHB4IDZweCByZ2JhKDI1NSwxNTIsMCwuMil9LmNhcGliYXJhLmMtb3JhbmdlLmRhcmstdGhlbWUgLmlucHV0LXNlY3Rpb24ubXNqLWlucHV0LWNvbnRhaW5lciB0ZXh0YXJlYS5tc2osLmNhcGliYXJhLmMtb3JhbmdlIC5pbnB1dC1zZWN0aW9uLm1zai1pbnB1dC1jb250YWluZXIgdGV4dGFyZWEubXNqe2JvcmRlcjoycHggc29saWQgI2ZmOTgwMH0uY2FwaWJhcmEuYy1vcmFuZ2UuZGFyay10aGVtZSAuaW5wdXQtc2VjdGlvbi5tc2otaW5wdXQtY29udGFpbmVyIHRleHRhcmVhLm1zajphY3RpdmUsLmNhcGliYXJhLmMtb3JhbmdlLmRhcmstdGhlbWUgLmlucHV0LXNlY3Rpb24ubXNqLWlucHV0LWNvbnRhaW5lciB0ZXh0YXJlYS5tc2o6Zm9jdXMsLmNhcGliYXJhLmMtb3JhbmdlIC5pbnB1dC1zZWN0aW9uLm1zai1pbnB1dC1jb250YWluZXIgdGV4dGFyZWEubXNqOmFjdGl2ZSwuY2FwaWJhcmEuYy1vcmFuZ2UgLmlucHV0LXNlY3Rpb24ubXNqLWlucHV0LWNvbnRhaW5lciB0ZXh0YXJlYS5tc2o6Zm9jdXN7Ym94LXNoYWRvdzowIDRweCA2cHggcmdiYSgyNTUsMTUyLDAsLjIpfS5jYXBpYmFyYS5jLW9yYW5nZSAuYnRuLXJhaXNlZCwuY2FwaWJhcmEuYy1vcmFuZ2UuZGFyay10aGVtZSAuYnRuLXJhaXNlZHtib3JkZXItY29sb3I6I2ZmOTgwMDtiYWNrZ3JvdW5kOnJnYmEoMjU1LDE1MiwwLC44KX0uY2FwaWJhcmEuYy1vcmFuZ2UgLmJ0bi1vdXRsaW5lLC5jYXBpYmFyYS5jLW9yYW5nZS5kYXJrLXRoZW1lIC5idG4tb3V0bGluZXtib3JkZXItY29sb3I6I2ZmOTgwMDtjb2xvcjojZmY5ODAwfS5jYXBpYmFyYS5jLW9yYW5nZS5kYXJrLXRoZW1lIC5zZWxlY3QtY29udGFpbmVyIC5zZWxlY3RlZC1kYXksLmNhcGliYXJhLmMtb3JhbmdlIC5zZWxlY3QtY29udGFpbmVyIC5zZWxlY3RlZC1kYXl7YmFja2dyb3VuZDpyZ2JhKDI1NSwxNTIsMCwuMyk7Ym94LXNoYWRvdzppbnNldCAwIDAgMTBweCByZ2JhKDI1NSwxNTIsMCwuNSl9LmNhcGliYXJhIC5jLW9yYW5nZS0tYmFja2dyb3VuZHtiYWNrZ3JvdW5kOiNmZjk4MDAhaW1wb3J0YW50fS5jYXBpYmFyYSAuYy1vcmFuZ2UtZC0tYmFja2dyb3VuZHtiYWNrZ3JvdW5kOiNiMzZhMDAhaW1wb3J0YW50fS5jYXBpYmFyYSAuYy1vcmFuZ2UtbC0tYmFja2dyb3VuZHtiYWNrZ3JvdW5kOiNmZmI3NGQhaW1wb3J0YW50fS5jYXBpYmFyYSAuYy1vcmFuZ2UtLXRleHR7Y29sb3I6I2ZmOTgwMCFpbXBvcnRhbnR9LmNhcGliYXJhIC5jLW9yYW5nZS1kLS10ZXh0e2NvbG9yOiNiMzZhMDAhaW1wb3J0YW50fS5jYXBpYmFyYSAuYy1vcmFuZ2UtbC0tdGV4dHtjb2xvcjojZmZiNzRkIWltcG9ydGFudH0uY2FwaWJhcmEgLmRldGFpbC1kYXkgLmxpc3QtZGV0YWlsIC5pdGVtLWRldGFpbC5jLW9yYW5nZXtiYWNrZ3JvdW5kOnJnYmEoMjU1LDE1MiwwLC4yKTtib3JkZXI6MXB4IHNvbGlkICNmZjk4MDB9LmNhcGliYXJhIC5kZXRhaWwtZGF5IC5saXN0LWRldGFpbCAuaXRlbS1kZXRhaWwuYy1vcmFuZ2UgLmxlZnQtaWNvbntiYWNrZ3JvdW5kOiNmZjk4MDB9LmNhcGliYXJhIC5kZXRhaWwtZGF5IC5saXN0LWRldGFpbCAuaXRlbS1kZXRhaWwuYy1vcmFuZ2UgLmxlZnQtaWNvbi5vdXRsaW5lZHtib3JkZXI6MXB4IHNvbGlkICNmZjk4MDA7Ym94LXNoYWRvdzppbnNldCAwIDAgMCAxcHggcmdiYSgyNTUsMTUyLDAsLjcpfS5jYXBpYmFyYSAuZGV0YWlsLWRheSAubGlzdC1kZXRhaWwgLml0ZW0tZGV0YWlsLmMtb3JhbmdlIC5uYW1le2NvbG9yOiNmZjk4MDB9LmNhcGliYXJhIC5mbG9hdC1ib3gtY29udGFpbmVyIC5mbG9hdC1ib3ggc3Bhbi5kYXRhLmMtb3Jhbmdle2JhY2tncm91bmQ6cmdiYSgyNTUsMTUyLDAsLjgpfS5jYXBpYmFyYSAuZmxvYXQtYm94LWNvbnRhaW5lciAuZmxvYXQtYm94IHNwYW4uZGF0YS5zaGFwZS1vdXRsaW5lZC5jLW9yYW5nZXtib3JkZXItY29sb3I6cmdiYSgyNTUsMTUyLDAsLjkpO2JhY2tncm91bmQ6cmdiYSgyNTUsMTUyLDAsLjEpO2NvbG9yOiNmZjk4MDB9LmNhcGliYXJhIC5mbG9hdC1ib3gtY29udGFpbmVyIC5mbG9hdC1ib3ggc3Bhbi5kYXRhLnNoYXBlLWJhci5jLW9yYW5nZXtiYWNrZ3JvdW5kOiNmZjk4MDB9LmNhcGliYXJhIC5mbG9hdC1ib3gtY29udGFpbmVyIC5mbG9hdC1ib3ggc3Bhbi5kYXRhLnNoYXBlLWJhci1vdXRsaW5lZC5jLW9yYW5nZXtib3JkZXItY29sb3I6cmdiYSgyNTUsMTUyLDAsLjkpO2JhY2tncm91bmQ6cmdiYSgyNTUsMTUyLDAsLjEpfS5jYXBpYmFyYSAuZmxvYXQtYm94LWNvbnRhaW5lciAuZmxvYXQtYm94IC5kb3QuYy1vcmFuZ2V7YmFja2dyb3VuZDojZmY5ODAwfS5jYXBpYmFyYSAuZmxvYXQtYm94LWNvbnRhaW5lciAuZmxvYXQtYm94IC5kb3QuYy1vcmFuZ2Uub3V0bGluZWR7Ym9yZGVyOjFweCBzb2xpZCAjZmY5ODAwO2JveC1zaGFkb3c6aW5zZXQgMCAwIDAgMXB4IHJnYmEoMjU1LDE1MiwwLC43KX0uY2FwaWJhcmEgLmhlYWRlci10b3AgLnRhYnMtY29udGFpbmVyIC50YWI6bm90KC5kaXNhYmxlZCkuYy1vcmFuZ2UuYWN0aXZle2JhY2tncm91bmQ6cmdiYSgyNTUsMTUyLDAsLjcpO2JvcmRlci1jb2xvcjpyZ2JhKDI1NSwxNTIsMCwuNyk7Y29sb3I6I2ZmZn0uY2FwaWJhcmEgLmhlYWRlci10b3AgLnRhYnMtY29udGFpbmVyIC50YWI6bm90KC5kaXNhYmxlZCkuYy1vcmFuZ2UuYWN0aXZlOmhvdmVye2JhY2tncm91bmQ6cmdiYSgyNTUsMTUyLDAsLjgpfS5jYXBpYmFyYSAuaGVhZGVyLXRvcCAudGFicy1jb250YWluZXIgLnRhYjpub3QoLmRpc2FibGVkKS5jLW9yYW5nZTpob3ZlcntiYWNrZ3JvdW5kOnJnYmEoMjU1LDE1MiwwLC4yKTtib3JkZXItY29sb3I6cmdiYSgyNTUsMTUyLDAsLjkpfS5jYXBpYmFyYSAuaW5wdXQtYm94IC5taW5pLWlucHV0LXNlY3Rpb24tLWljb24uYy1vcmFuZ2V7YmFja2dyb3VuZDojZmY5ODAwfS5jYXBpYmFyYS5jLWRlZXAtb3JhbmdlOm5vdCguZGFyay10aGVtZSkgOjotd2Via2l0LXNjcm9sbGJhci10aHVtYntiYWNrZ3JvdW5kOiNjZDU3MzN9LmNhcGliYXJhLmMtZGVlcC1vcmFuZ2U6bm90KC5kYXJrLXRoZW1lKSAuaGVhZGVyLXRvcHtiYWNrZ3JvdW5kOiNlZGUxZGV9LmNhcGliYXJhLmMtZGVlcC1vcmFuZ2U6bm90KC5kYXJrLXRoZW1lKSAuY29ybmVye2JhY2tncm91bmQ6I2VkZTFkZTtib3JkZXItY29sb3I6I2YwOTI3NX0uY2FwaWJhcmEuYy1kZWVwLW9yYW5nZTpub3QoLmRhcmstdGhlbWUpIC5jb250YWluZXItdGwgaGVhZGVye2JhY2tncm91bmQ6I2VkZTFkZTtib3JkZXItYm90dG9tLWNvbG9yOiNmMDkyNzV9LmNhcGliYXJhLmMtZGVlcC1vcmFuZ2U6bm90KC5kYXJrLXRoZW1lKSAuY29udGFpbmVyLXRsIGhlYWRlciAubWVzLm1lcy1yZWR1Y2VkOmFmdGVye2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDkwZGVnLHRyYW5zcGFyZW50LCNmYWRiZDEpIWltcG9ydGFudH0uY2FwaWJhcmEuYy1kZWVwLW9yYW5nZTpub3QoLmRhcmstdGhlbWUpIG5hdi5yaWdodHtib3JkZXItY29sb3I6I2YwOTI3NX0uY2FwaWJhcmEuYy1kZWVwLW9yYW5nZS5kYXJrLXRoZW1lIC5oZWFkZXItdG9wLC5jYXBpYmFyYS5jLWRlZXAtb3JhbmdlLmRhcmstdGhlbWUgbmF2LnJpZ2h0e2JvcmRlci1jb2xvcjojOGEyYzBmfS5jYXBpYmFyYS5jLWRlZXAtb3JhbmdlLmRhcmstdGhlbWUgLmNvbnRhaW5lci10bCBoZWFkZXIsLmNhcGliYXJhLmMtZGVlcC1vcmFuZ2UuZGFyay10aGVtZSAuY29ybmVye2JvcmRlci1ib3R0b20tY29sb3I6IzhhMmMwZn0uY2FwaWJhcmEuYy1kZWVwLW9yYW5nZS5kYXJrLXRoZW1lIC5wcm9ncmVzcy1iYXIsLmNhcGliYXJhLmMtZGVlcC1vcmFuZ2UgLnByb2dyZXNzLWJhcntiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjMwLDc0LDI1LC4yKSFpbXBvcnRhbnR9LmNhcGliYXJhLmMtZGVlcC1vcmFuZ2UuZGFyay10aGVtZSAucHJvZ3Jlc3MtYmFyOmFmdGVyLC5jYXBpYmFyYS5jLWRlZXAtb3JhbmdlLmRhcmstdGhlbWUgLnByb2dyZXNzLWJhcjpiZWZvcmUsLmNhcGliYXJhLmMtZGVlcC1vcmFuZ2UgLnByb2dyZXNzLWJhcjphZnRlciwuY2FwaWJhcmEuYy1kZWVwLW9yYW5nZSAucHJvZ3Jlc3MtYmFyOmJlZm9yZXtiYWNrZ3JvdW5kLWNvbG9yOiNlNjRhMTkhaW1wb3J0YW50fS5jYXBpYmFyYS5jLWRlZXAtb3JhbmdlLmRhcmstdGhlbWUgc2VsZWN0LnRhYnMtc2VsZWN0LC5jYXBpYmFyYS5jLWRlZXAtb3JhbmdlIHNlbGVjdC50YWJzLXNlbGVjdHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjMwLDc0LDI1LC43KSFpbXBvcnRhbnQ7Ym9yZGVyLWNvbG9yOiNlNjRhMTkhaW1wb3J0YW50fS5jYXBpYmFyYS5jLWRlZXAtb3JhbmdlLmRhcmstdGhlbWUgLnRpbWUsLmNhcGliYXJhLmMtZGVlcC1vcmFuZ2UgLnRpbWV7Ym9yZGVyLWNvbG9yOnJnYmEoMjMwLDc0LDI1LC42KX0uY2FwaWJhcmEuYy1kZWVwLW9yYW5nZS5kYXJrLXRoZW1lIC50aW1lIC5zeW1ib2wsLmNhcGliYXJhLmMtZGVlcC1vcmFuZ2UgLnRpbWUgLnN5bWJvbHtjb2xvcjojZTY0YTE5fS5jYXBpYmFyYS5jLWRlZXAtb3JhbmdlLmRhcmstdGhlbWUgLnRpbWUgaW5wdXQ6YWN0aXZlLC5jYXBpYmFyYS5jLWRlZXAtb3JhbmdlLmRhcmstdGhlbWUgLnRpbWUgaW5wdXQ6Zm9jdXMsLmNhcGliYXJhLmMtZGVlcC1vcmFuZ2UgLnRpbWUgaW5wdXQ6YWN0aXZlLC5jYXBpYmFyYS5jLWRlZXAtb3JhbmdlIC50aW1lIGlucHV0OmZvY3Vze2JvcmRlci1jb2xvcjojZTY0YTE5O2JveC1zaGFkb3c6MCA0cHggNnB4IHJnYmEoMjMwLDc0LDI1LC4yKX0uY2FwaWJhcmEuYy1kZWVwLW9yYW5nZS5kYXJrLXRoZW1lIC5pbnB1dC1ib3gsLmNhcGliYXJhLmMtZGVlcC1vcmFuZ2UuZGFyay10aGVtZSAuaW5wdXQtc2VjdGlvbiBpbnB1dC5uYXYtaW5wdXQsLmNhcGliYXJhLmMtZGVlcC1vcmFuZ2UgLmlucHV0LWJveCwuY2FwaWJhcmEuYy1kZWVwLW9yYW5nZSAuaW5wdXQtc2VjdGlvbiBpbnB1dC5uYXYtaW5wdXR7Ym9yZGVyLWNvbG9yOnJnYmEoMjMwLDc0LDI1LC42KX0uY2FwaWJhcmEuYy1kZWVwLW9yYW5nZS5kYXJrLXRoZW1lIC5pbnB1dC1zZWN0aW9uIGlucHV0Lm5hdi1pbnB1dDphY3RpdmUsLmNhcGliYXJhLmMtZGVlcC1vcmFuZ2UuZGFyay10aGVtZSAuaW5wdXQtc2VjdGlvbiBpbnB1dC5uYXYtaW5wdXQ6Zm9jdXMsLmNhcGliYXJhLmMtZGVlcC1vcmFuZ2UgLmlucHV0LXNlY3Rpb24gaW5wdXQubmF2LWlucHV0OmFjdGl2ZSwuY2FwaWJhcmEuYy1kZWVwLW9yYW5nZSAuaW5wdXQtc2VjdGlvbiBpbnB1dC5uYXYtaW5wdXQ6Zm9jdXN7Ym9yZGVyLWNvbG9yOiNlNjRhMTk7Ym94LXNoYWRvdzowIDRweCA2cHggcmdiYSgyMzAsNzQsMjUsLjIpfS5jYXBpYmFyYS5jLWRlZXAtb3JhbmdlLmRhcmstdGhlbWUgLmlucHV0LXNlY3Rpb24ubXNqLWlucHV0LWNvbnRhaW5lciB0ZXh0YXJlYS5tc2osLmNhcGliYXJhLmMtZGVlcC1vcmFuZ2UgLmlucHV0LXNlY3Rpb24ubXNqLWlucHV0LWNvbnRhaW5lciB0ZXh0YXJlYS5tc2p7Ym9yZGVyOjJweCBzb2xpZCAjZTY0YTE5fS5jYXBpYmFyYS5jLWRlZXAtb3JhbmdlLmRhcmstdGhlbWUgLmlucHV0LXNlY3Rpb24ubXNqLWlucHV0LWNvbnRhaW5lciB0ZXh0YXJlYS5tc2o6YWN0aXZlLC5jYXBpYmFyYS5jLWRlZXAtb3JhbmdlLmRhcmstdGhlbWUgLmlucHV0LXNlY3Rpb24ubXNqLWlucHV0LWNvbnRhaW5lciB0ZXh0YXJlYS5tc2o6Zm9jdXMsLmNhcGliYXJhLmMtZGVlcC1vcmFuZ2UgLmlucHV0LXNlY3Rpb24ubXNqLWlucHV0LWNvbnRhaW5lciB0ZXh0YXJlYS5tc2o6YWN0aXZlLC5jYXBpYmFyYS5jLWRlZXAtb3JhbmdlIC5pbnB1dC1zZWN0aW9uLm1zai1pbnB1dC1jb250YWluZXIgdGV4dGFyZWEubXNqOmZvY3Vze2JveC1zaGFkb3c6MCA0cHggNnB4IHJnYmEoMjMwLDc0LDI1LC4yKX0uY2FwaWJhcmEuYy1kZWVwLW9yYW5nZSAuYnRuLXJhaXNlZCwuY2FwaWJhcmEuYy1kZWVwLW9yYW5nZS5kYXJrLXRoZW1lIC5idG4tcmFpc2Vke2JvcmRlci1jb2xvcjojZTY0YTE5O2JhY2tncm91bmQ6cmdiYSgyMzAsNzQsMjUsLjgpfS5jYXBpYmFyYS5jLWRlZXAtb3JhbmdlIC5idG4tb3V0bGluZSwuY2FwaWJhcmEuYy1kZWVwLW9yYW5nZS5kYXJrLXRoZW1lIC5idG4tb3V0bGluZXtib3JkZXItY29sb3I6I2U2NGExOTtjb2xvcjojZTY0YTE5fS5jYXBpYmFyYS5jLWRlZXAtb3JhbmdlLmRhcmstdGhlbWUgLnNlbGVjdC1jb250YWluZXIgLnNlbGVjdGVkLWRheSwuY2FwaWJhcmEuYy1kZWVwLW9yYW5nZSAuc2VsZWN0LWNvbnRhaW5lciAuc2VsZWN0ZWQtZGF5e2JhY2tncm91bmQ6cmdiYSgyMzAsNzQsMjUsLjMpO2JveC1zaGFkb3c6aW5zZXQgMCAwIDEwcHggcmdiYSgyMzAsNzQsMjUsLjUpfS5jYXBpYmFyYSAuYy1kZWVwLW9yYW5nZS0tYmFja2dyb3VuZHtiYWNrZ3JvdW5kOiNlNjRhMTkhaW1wb3J0YW50fS5jYXBpYmFyYSAuYy1kZWVwLW9yYW5nZS1kLS1iYWNrZ3JvdW5ke2JhY2tncm91bmQ6I2ExMzQxMiFpbXBvcnRhbnR9LmNhcGliYXJhIC5jLWRlZXAtb3JhbmdlLWwtLWJhY2tncm91bmR7YmFja2dyb3VuZDojZWU4MDVlIWltcG9ydGFudH0uY2FwaWJhcmEgLmMtZGVlcC1vcmFuZ2UtLXRleHR7Y29sb3I6I2U2NGExOSFpbXBvcnRhbnR9LmNhcGliYXJhIC5jLWRlZXAtb3JhbmdlLWQtLXRleHR7Y29sb3I6I2ExMzQxMiFpbXBvcnRhbnR9LmNhcGliYXJhIC5jLWRlZXAtb3JhbmdlLWwtLXRleHR7Y29sb3I6I2VlODA1ZSFpbXBvcnRhbnR9LmNhcGliYXJhIC5kZXRhaWwtZGF5IC5saXN0LWRldGFpbCAuaXRlbS1kZXRhaWwuYy1kZWVwLW9yYW5nZXtiYWNrZ3JvdW5kOnJnYmEoMjMwLDc0LDI1LC4yKTtib3JkZXI6MXB4IHNvbGlkICNlNjRhMTl9LmNhcGliYXJhIC5kZXRhaWwtZGF5IC5saXN0LWRldGFpbCAuaXRlbS1kZXRhaWwuYy1kZWVwLW9yYW5nZSAubGVmdC1pY29ue2JhY2tncm91bmQ6I2U2NGExOX0uY2FwaWJhcmEgLmRldGFpbC1kYXkgLmxpc3QtZGV0YWlsIC5pdGVtLWRldGFpbC5jLWRlZXAtb3JhbmdlIC5sZWZ0LWljb24ub3V0bGluZWR7Ym9yZGVyOjFweCBzb2xpZCAjZTY0YTE5O2JveC1zaGFkb3c6aW5zZXQgMCAwIDAgMXB4IHJnYmEoMjMwLDc0LDI1LC43KX0uY2FwaWJhcmEgLmRldGFpbC1kYXkgLmxpc3QtZGV0YWlsIC5pdGVtLWRldGFpbC5jLWRlZXAtb3JhbmdlIC5uYW1le2NvbG9yOiNlNjRhMTl9LmNhcGliYXJhIC5mbG9hdC1ib3gtY29udGFpbmVyIC5mbG9hdC1ib3ggc3Bhbi5kYXRhLmMtZGVlcC1vcmFuZ2V7YmFja2dyb3VuZDpyZ2JhKDIzMCw3NCwyNSwuOCl9LmNhcGliYXJhIC5mbG9hdC1ib3gtY29udGFpbmVyIC5mbG9hdC1ib3ggc3Bhbi5kYXRhLnNoYXBlLW91dGxpbmVkLmMtZGVlcC1vcmFuZ2V7Ym9yZGVyLWNvbG9yOnJnYmEoMjMwLDc0LDI1LC45KTtiYWNrZ3JvdW5kOnJnYmEoMjMwLDc0LDI1LC4xKTtjb2xvcjojZTY0YTE5fS5jYXBpYmFyYSAuZmxvYXQtYm94LWNvbnRhaW5lciAuZmxvYXQtYm94IHNwYW4uZGF0YS5zaGFwZS1iYXIuYy1kZWVwLW9yYW5nZXtiYWNrZ3JvdW5kOiNlNjRhMTl9LmNhcGliYXJhIC5mbG9hdC1ib3gtY29udGFpbmVyIC5mbG9hdC1ib3ggc3Bhbi5kYXRhLnNoYXBlLWJhci1vdXRsaW5lZC5jLWRlZXAtb3Jhbmdle2JvcmRlci1jb2xvcjpyZ2JhKDIzMCw3NCwyNSwuOSk7YmFja2dyb3VuZDpyZ2JhKDIzMCw3NCwyNSwuMSl9LmNhcGliYXJhIC5mbG9hdC1ib3gtY29udGFpbmVyIC5mbG9hdC1ib3ggLmRvdC5jLWRlZXAtb3Jhbmdle2JhY2tncm91bmQ6I2U2NGExOX0uY2FwaWJhcmEgLmZsb2F0LWJveC1jb250YWluZXIgLmZsb2F0LWJveCAuZG90LmMtZGVlcC1vcmFuZ2Uub3V0bGluZWR7Ym9yZGVyOjFweCBzb2xpZCAjZTY0YTE5O2JveC1zaGFkb3c6aW5zZXQgMCAwIDAgMXB4IHJnYmEoMjMwLDc0LDI1LC43KX0uY2FwaWJhcmEgLmhlYWRlci10b3AgLnRhYnMtY29udGFpbmVyIC50YWI6bm90KC5kaXNhYmxlZCkuYy1kZWVwLW9yYW5nZS5hY3RpdmV7YmFja2dyb3VuZDpyZ2JhKDIzMCw3NCwyNSwuNyk7Ym9yZGVyLWNvbG9yOnJnYmEoMjMwLDc0LDI1LC43KTtjb2xvcjojZmZmfS5jYXBpYmFyYSAuaGVhZGVyLXRvcCAudGFicy1jb250YWluZXIgLnRhYjpub3QoLmRpc2FibGVkKS5jLWRlZXAtb3JhbmdlLmFjdGl2ZTpob3ZlcntiYWNrZ3JvdW5kOnJnYmEoMjMwLDc0LDI1LC44KX0uY2FwaWJhcmEgLmhlYWRlci10b3AgLnRhYnMtY29udGFpbmVyIC50YWI6bm90KC5kaXNhYmxlZCkuYy1kZWVwLW9yYW5nZTpob3ZlcntiYWNrZ3JvdW5kOnJnYmEoMjMwLDc0LDI1LC4yKTtib3JkZXItY29sb3I6cmdiYSgyMzAsNzQsMjUsLjkpfS5jYXBpYmFyYSAuaW5wdXQtYm94IC5taW5pLWlucHV0LXNlY3Rpb24tLWljb24uYy1kZWVwLW9yYW5nZXtiYWNrZ3JvdW5kOiNlNjRhMTl9LmNhcGliYXJhLmMtYnJvd246bm90KC5kYXJrLXRoZW1lKSA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1ie2JhY2tncm91bmQ6IzY2NWU1Yn0uY2FwaWJhcmEuYy1icm93bjpub3QoLmRhcmstdGhlbWUpIC5oZWFkZXItdG9we2JhY2tncm91bmQ6I2M3YzdjN30uY2FwaWJhcmEuYy1icm93bjpub3QoLmRhcmstdGhlbWUpIC5jb3JuZXJ7YmFja2dyb3VuZDojYzdjN2M3O2JvcmRlci1jb2xvcjojYWY4Nzc4fS5jYXBpYmFyYS5jLWJyb3duOm5vdCguZGFyay10aGVtZSkgLmNvbnRhaW5lci10bCBoZWFkZXJ7YmFja2dyb3VuZDojYzdjN2M3O2JvcmRlci1ib3R0b20tY29sb3I6I2FmODc3OH0uY2FwaWJhcmEuYy1icm93bjpub3QoLmRhcmstdGhlbWUpIC5jb250YWluZXItdGwgaGVhZGVyIC5tZXMubWVzLXJlZHVjZWQ6YWZ0ZXJ7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoOTBkZWcsdHJhbnNwYXJlbnQsI2Q1YzBiOCkhaW1wb3J0YW50fS5jYXBpYmFyYS5jLWJyb3duOm5vdCguZGFyay10aGVtZSkgbmF2LnJpZ2h0e2JvcmRlci1jb2xvcjojYWY4Nzc4fS5jYXBpYmFyYS5jLWJyb3duLmRhcmstdGhlbWUgLmhlYWRlci10b3AsLmNhcGliYXJhLmMtYnJvd24uZGFyay10aGVtZSBuYXYucmlnaHR7Ym9yZGVyLWNvbG9yOiMzOTI4MjJ9LmNhcGliYXJhLmMtYnJvd24uZGFyay10aGVtZSAuY29udGFpbmVyLXRsIGhlYWRlciwuY2FwaWJhcmEuYy1icm93bi5kYXJrLXRoZW1lIC5jb3JuZXJ7Ym9yZGVyLWJvdHRvbS1jb2xvcjojMzkyODIyfS5jYXBpYmFyYS5jLWJyb3duLmRhcmstdGhlbWUgLnByb2dyZXNzLWJhciwuY2FwaWJhcmEuYy1icm93biAucHJvZ3Jlc3MtYmFye2JhY2tncm91bmQtY29sb3I6cmdiYSgxMjEsODUsNzIsLjIpIWltcG9ydGFudH0uY2FwaWJhcmEuYy1icm93bi5kYXJrLXRoZW1lIC5wcm9ncmVzcy1iYXI6YWZ0ZXIsLmNhcGliYXJhLmMtYnJvd24uZGFyay10aGVtZSAucHJvZ3Jlc3MtYmFyOmJlZm9yZSwuY2FwaWJhcmEuYy1icm93biAucHJvZ3Jlc3MtYmFyOmFmdGVyLC5jYXBpYmFyYS5jLWJyb3duIC5wcm9ncmVzcy1iYXI6YmVmb3Jle2JhY2tncm91bmQtY29sb3I6Izc5NTU0OCFpbXBvcnRhbnR9LmNhcGliYXJhLmMtYnJvd24uZGFyay10aGVtZSBzZWxlY3QudGFicy1zZWxlY3QsLmNhcGliYXJhLmMtYnJvd24gc2VsZWN0LnRhYnMtc2VsZWN0e2JhY2tncm91bmQtY29sb3I6cmdiYSgxMjEsODUsNzIsLjcpIWltcG9ydGFudDtib3JkZXItY29sb3I6Izc5NTU0OCFpbXBvcnRhbnR9LmNhcGliYXJhLmMtYnJvd24uZGFyay10aGVtZSAudGltZSwuY2FwaWJhcmEuYy1icm93biAudGltZXtib3JkZXItY29sb3I6cmdiYSgxMjEsODUsNzIsLjYpfS5jYXBpYmFyYS5jLWJyb3duLmRhcmstdGhlbWUgLnRpbWUgLnN5bWJvbCwuY2FwaWJhcmEuYy1icm93biAudGltZSAuc3ltYm9se2NvbG9yOiM3OTU1NDh9LmNhcGliYXJhLmMtYnJvd24uZGFyay10aGVtZSAudGltZSBpbnB1dDphY3RpdmUsLmNhcGliYXJhLmMtYnJvd24uZGFyay10aGVtZSAudGltZSBpbnB1dDpmb2N1cywuY2FwaWJhcmEuYy1icm93biAudGltZSBpbnB1dDphY3RpdmUsLmNhcGliYXJhLmMtYnJvd24gLnRpbWUgaW5wdXQ6Zm9jdXN7Ym9yZGVyLWNvbG9yOiM3OTU1NDg7Ym94LXNoYWRvdzowIDRweCA2cHggcmdiYSgxMjEsODUsNzIsLjIpfS5jYXBpYmFyYS5jLWJyb3duLmRhcmstdGhlbWUgLmlucHV0LWJveCwuY2FwaWJhcmEuYy1icm93bi5kYXJrLXRoZW1lIC5pbnB1dC1zZWN0aW9uIGlucHV0Lm5hdi1pbnB1dCwuY2FwaWJhcmEuYy1icm93biAuaW5wdXQtYm94LC5jYXBpYmFyYS5jLWJyb3duIC5pbnB1dC1zZWN0aW9uIGlucHV0Lm5hdi1pbnB1dHtib3JkZXItY29sb3I6cmdiYSgxMjEsODUsNzIsLjYpfS5jYXBpYmFyYS5jLWJyb3duLmRhcmstdGhlbWUgLmlucHV0LXNlY3Rpb24gaW5wdXQubmF2LWlucHV0OmFjdGl2ZSwuY2FwaWJhcmEuYy1icm93bi5kYXJrLXRoZW1lIC5pbnB1dC1zZWN0aW9uIGlucHV0Lm5hdi1pbnB1dDpmb2N1cywuY2FwaWJhcmEuYy1icm93biAuaW5wdXQtc2VjdGlvbiBpbnB1dC5uYXYtaW5wdXQ6YWN0aXZlLC5jYXBpYmFyYS5jLWJyb3duIC5pbnB1dC1zZWN0aW9uIGlucHV0Lm5hdi1pbnB1dDpmb2N1c3tib3JkZXItY29sb3I6Izc5NTU0ODtib3gtc2hhZG93OjAgNHB4IDZweCByZ2JhKDEyMSw4NSw3MiwuMil9LmNhcGliYXJhLmMtYnJvd24uZGFyay10aGVtZSAuaW5wdXQtc2VjdGlvbi5tc2otaW5wdXQtY29udGFpbmVyIHRleHRhcmVhLm1zaiwuY2FwaWJhcmEuYy1icm93biAuaW5wdXQtc2VjdGlvbi5tc2otaW5wdXQtY29udGFpbmVyIHRleHRhcmVhLm1zantib3JkZXI6MnB4IHNvbGlkICM3OTU1NDh9LmNhcGliYXJhLmMtYnJvd24uZGFyay10aGVtZSAuaW5wdXQtc2VjdGlvbi5tc2otaW5wdXQtY29udGFpbmVyIHRleHRhcmVhLm1zajphY3RpdmUsLmNhcGliYXJhLmMtYnJvd24uZGFyay10aGVtZSAuaW5wdXQtc2VjdGlvbi5tc2otaW5wdXQtY29udGFpbmVyIHRleHRhcmVhLm1zajpmb2N1cywuY2FwaWJhcmEuYy1icm93biAuaW5wdXQtc2VjdGlvbi5tc2otaW5wdXQtY29udGFpbmVyIHRleHRhcmVhLm1zajphY3RpdmUsLmNhcGliYXJhLmMtYnJvd24gLmlucHV0LXNlY3Rpb24ubXNqLWlucHV0LWNvbnRhaW5lciB0ZXh0YXJlYS5tc2o6Zm9jdXN7Ym94LXNoYWRvdzowIDRweCA2cHggcmdiYSgxMjEsODUsNzIsLjIpfS5jYXBpYmFyYS5jLWJyb3duIC5idG4tcmFpc2VkLC5jYXBpYmFyYS5jLWJyb3duLmRhcmstdGhlbWUgLmJ0bi1yYWlzZWR7Ym9yZGVyLWNvbG9yOiM3OTU1NDg7YmFja2dyb3VuZDpyZ2JhKDEyMSw4NSw3MiwuOCl9LmNhcGliYXJhLmMtYnJvd24gLmJ0bi1vdXRsaW5lLC5jYXBpYmFyYS5jLWJyb3duLmRhcmstdGhlbWUgLmJ0bi1vdXRsaW5le2JvcmRlci1jb2xvcjojNzk1NTQ4O2NvbG9yOiM3OTU1NDh9LmNhcGliYXJhLmMtYnJvd24uZGFyay10aGVtZSAuc2VsZWN0LWNvbnRhaW5lciAuc2VsZWN0ZWQtZGF5LC5jYXBpYmFyYS5jLWJyb3duIC5zZWxlY3QtY29udGFpbmVyIC5zZWxlY3RlZC1kYXl7YmFja2dyb3VuZDpyZ2JhKDEyMSw4NSw3MiwuMyk7Ym94LXNoYWRvdzppbnNldCAwIDAgMTBweCByZ2JhKDEyMSw4NSw3MiwuNSl9LmNhcGliYXJhIC5jLWJyb3duLS1iYWNrZ3JvdW5ke2JhY2tncm91bmQ6Izc5NTU0OCFpbXBvcnRhbnR9LmNhcGliYXJhIC5jLWJyb3duLWQtLWJhY2tncm91bmR7YmFja2dyb3VuZDojNDkzMzJiIWltcG9ydGFudH0uY2FwaWJhcmEgLmMtYnJvd24tbC0tYmFja2dyb3VuZHtiYWNrZ3JvdW5kOiNhNTc4NjghaW1wb3J0YW50fS5jYXBpYmFyYSAuYy1icm93bi0tdGV4dHtjb2xvcjojNzk1NTQ4IWltcG9ydGFudH0uY2FwaWJhcmEgLmMtYnJvd24tZC0tdGV4dHtjb2xvcjojNDkzMzJiIWltcG9ydGFudH0uY2FwaWJhcmEgLmMtYnJvd24tbC0tdGV4dHtjb2xvcjojYTU3ODY4IWltcG9ydGFudH0uY2FwaWJhcmEgLmRldGFpbC1kYXkgLmxpc3QtZGV0YWlsIC5pdGVtLWRldGFpbC5jLWJyb3due2JhY2tncm91bmQ6cmdiYSgxMjEsODUsNzIsLjIpO2JvcmRlcjoxcHggc29saWQgIzc5NTU0OH0uY2FwaWJhcmEgLmRldGFpbC1kYXkgLmxpc3QtZGV0YWlsIC5pdGVtLWRldGFpbC5jLWJyb3duIC5sZWZ0LWljb257YmFja2dyb3VuZDojNzk1NTQ4fS5jYXBpYmFyYSAuZGV0YWlsLWRheSAubGlzdC1kZXRhaWwgLml0ZW0tZGV0YWlsLmMtYnJvd24gLmxlZnQtaWNvbi5vdXRsaW5lZHtib3JkZXI6MXB4IHNvbGlkICM3OTU1NDg7Ym94LXNoYWRvdzppbnNldCAwIDAgMCAxcHggcmdiYSgxMjEsODUsNzIsLjcpfS5jYXBpYmFyYSAuZGV0YWlsLWRheSAubGlzdC1kZXRhaWwgLml0ZW0tZGV0YWlsLmMtYnJvd24gLm5hbWV7Y29sb3I6Izc5NTU0OH0uY2FwaWJhcmEgLmZsb2F0LWJveC1jb250YWluZXIgLmZsb2F0LWJveCBzcGFuLmRhdGEuYy1icm93bntiYWNrZ3JvdW5kOnJnYmEoMTIxLDg1LDcyLC44KX0uY2FwaWJhcmEgLmZsb2F0LWJveC1jb250YWluZXIgLmZsb2F0LWJveCBzcGFuLmRhdGEuc2hhcGUtb3V0bGluZWQuYy1icm93bntib3JkZXItY29sb3I6cmdiYSgxMjEsODUsNzIsLjkpO2JhY2tncm91bmQ6cmdiYSgxMjEsODUsNzIsLjEpO2NvbG9yOiM3OTU1NDh9LmNhcGliYXJhIC5mbG9hdC1ib3gtY29udGFpbmVyIC5mbG9hdC1ib3ggc3Bhbi5kYXRhLnNoYXBlLWJhci5jLWJyb3due2JhY2tncm91bmQ6Izc5NTU0OH0uY2FwaWJhcmEgLmZsb2F0LWJveC1jb250YWluZXIgLmZsb2F0LWJveCBzcGFuLmRhdGEuc2hhcGUtYmFyLW91dGxpbmVkLmMtYnJvd257Ym9yZGVyLWNvbG9yOnJnYmEoMTIxLDg1LDcyLC45KTtiYWNrZ3JvdW5kOnJnYmEoMTIxLDg1LDcyLC4xKX0uY2FwaWJhcmEgLmZsb2F0LWJveC1jb250YWluZXIgLmZsb2F0LWJveCAuZG90LmMtYnJvd257YmFja2dyb3VuZDojNzk1NTQ4fS5jYXBpYmFyYSAuZmxvYXQtYm94LWNvbnRhaW5lciAuZmxvYXQtYm94IC5kb3QuYy1icm93bi5vdXRsaW5lZHtib3JkZXI6MXB4IHNvbGlkICM3OTU1NDg7Ym94LXNoYWRvdzppbnNldCAwIDAgMCAxcHggcmdiYSgxMjEsODUsNzIsLjcpfS5jYXBpYmFyYSAuaGVhZGVyLXRvcCAudGFicy1jb250YWluZXIgLnRhYjpub3QoLmRpc2FibGVkKS5jLWJyb3duLmFjdGl2ZXtiYWNrZ3JvdW5kOnJnYmEoMTIxLDg1LDcyLC43KTtib3JkZXItY29sb3I6cmdiYSgxMjEsODUsNzIsLjcpO2NvbG9yOiNmZmZ9LmNhcGliYXJhIC5oZWFkZXItdG9wIC50YWJzLWNvbnRhaW5lciAudGFiOm5vdCguZGlzYWJsZWQpLmMtYnJvd24uYWN0aXZlOmhvdmVye2JhY2tncm91bmQ6cmdiYSgxMjEsODUsNzIsLjgpfS5jYXBpYmFyYSAuaGVhZGVyLXRvcCAudGFicy1jb250YWluZXIgLnRhYjpub3QoLmRpc2FibGVkKS5jLWJyb3duOmhvdmVye2JhY2tncm91bmQ6cmdiYSgxMjEsODUsNzIsLjIpO2JvcmRlci1jb2xvcjpyZ2JhKDEyMSw4NSw3MiwuOSl9LmNhcGliYXJhIC5pbnB1dC1ib3ggLm1pbmktaW5wdXQtc2VjdGlvbi0taWNvbi5jLWJyb3due2JhY2tncm91bmQ6Izc5NTU0OH0uY2FwaWJhcmEuYy1ibHVlX2dyZXk6bm90KC5kYXJrLXRoZW1lKSA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1ie2JhY2tncm91bmQ6Izc2NzY3Nn0uY2FwaWJhcmEuYy1ibHVlX2dyZXk6bm90KC5kYXJrLXRoZW1lKSAuaGVhZGVyLXRvcHtiYWNrZ3JvdW5kOiNkY2RjZGN9LmNhcGliYXJhLmMtYmx1ZV9ncmV5Om5vdCguZGFyay10aGVtZSkgLmNvcm5lcntiYWNrZ3JvdW5kOiNkY2RjZGM7Ym9yZGVyLWNvbG9yOiM5OWFlYjh9LmNhcGliYXJhLmMtYmx1ZV9ncmV5Om5vdCguZGFyay10aGVtZSkgLmNvbnRhaW5lci10bCBoZWFkZXJ7YmFja2dyb3VuZDojZGNkY2RjO2JvcmRlci1ib3R0b20tY29sb3I6Izk5YWViOH0uY2FwaWJhcmEuYy1ibHVlX2dyZXk6bm90KC5kYXJrLXRoZW1lKSAuY29udGFpbmVyLXRsIGhlYWRlciAubWVzLm1lcy1yZWR1Y2VkOmFmdGVye2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDkwZGVnLHRyYW5zcGFyZW50LCNkNWRlZTIpIWltcG9ydGFudH0uY2FwaWJhcmEuYy1ibHVlX2dyZXk6bm90KC5kYXJrLXRoZW1lKSBuYXYucmlnaHR7Ym9yZGVyLWNvbG9yOiM5OWFlYjh9LmNhcGliYXJhLmMtYmx1ZV9ncmV5LmRhcmstdGhlbWUgLmhlYWRlci10b3AsLmNhcGliYXJhLmMtYmx1ZV9ncmV5LmRhcmstdGhlbWUgbmF2LnJpZ2h0e2JvcmRlci1jb2xvcjojMzY0NzRmfS5jYXBpYmFyYS5jLWJsdWVfZ3JleS5kYXJrLXRoZW1lIC5jb250YWluZXItdGwgaGVhZGVyLC5jYXBpYmFyYS5jLWJsdWVfZ3JleS5kYXJrLXRoZW1lIC5jb3JuZXJ7Ym9yZGVyLWJvdHRvbS1jb2xvcjojMzY0NzRmfS5jYXBpYmFyYS5jLWJsdWVfZ3JleS5kYXJrLXRoZW1lIC5wcm9ncmVzcy1iYXIsLmNhcGliYXJhLmMtYmx1ZV9ncmV5IC5wcm9ncmVzcy1iYXJ7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDk2LDEyNSwxMzksLjIpIWltcG9ydGFudH0uY2FwaWJhcmEuYy1ibHVlX2dyZXkuZGFyay10aGVtZSAucHJvZ3Jlc3MtYmFyOmFmdGVyLC5jYXBpYmFyYS5jLWJsdWVfZ3JleS5kYXJrLXRoZW1lIC5wcm9ncmVzcy1iYXI6YmVmb3JlLC5jYXBpYmFyYS5jLWJsdWVfZ3JleSAucHJvZ3Jlc3MtYmFyOmFmdGVyLC5jYXBpYmFyYS5jLWJsdWVfZ3JleSAucHJvZ3Jlc3MtYmFyOmJlZm9yZXtiYWNrZ3JvdW5kLWNvbG9yOiM2MDdkOGIhaW1wb3J0YW50fS5jYXBpYmFyYS5jLWJsdWVfZ3JleS5kYXJrLXRoZW1lIHNlbGVjdC50YWJzLXNlbGVjdCwuY2FwaWJhcmEuYy1ibHVlX2dyZXkgc2VsZWN0LnRhYnMtc2VsZWN0e2JhY2tncm91bmQtY29sb3I6cmdiYSg5NiwxMjUsMTM5LC43KSFpbXBvcnRhbnQ7Ym9yZGVyLWNvbG9yOiM2MDdkOGIhaW1wb3J0YW50fS5jYXBpYmFyYS5jLWJsdWVfZ3JleS5kYXJrLXRoZW1lIC50aW1lLC5jYXBpYmFyYS5jLWJsdWVfZ3JleSAudGltZXtib3JkZXItY29sb3I6cmdiYSg5NiwxMjUsMTM5LC42KX0uY2FwaWJhcmEuYy1ibHVlX2dyZXkuZGFyay10aGVtZSAudGltZSAuc3ltYm9sLC5jYXBpYmFyYS5jLWJsdWVfZ3JleSAudGltZSAuc3ltYm9se2NvbG9yOiM2MDdkOGJ9LmNhcGliYXJhLmMtYmx1ZV9ncmV5LmRhcmstdGhlbWUgLnRpbWUgaW5wdXQ6YWN0aXZlLC5jYXBpYmFyYS5jLWJsdWVfZ3JleS5kYXJrLXRoZW1lIC50aW1lIGlucHV0OmZvY3VzLC5jYXBpYmFyYS5jLWJsdWVfZ3JleSAudGltZSBpbnB1dDphY3RpdmUsLmNhcGliYXJhLmMtYmx1ZV9ncmV5IC50aW1lIGlucHV0OmZvY3Vze2JvcmRlci1jb2xvcjojNjA3ZDhiO2JveC1zaGFkb3c6MCA0cHggNnB4IHJnYmEoOTYsMTI1LDEzOSwuMil9LmNhcGliYXJhLmMtYmx1ZV9ncmV5LmRhcmstdGhlbWUgLmlucHV0LWJveCwuY2FwaWJhcmEuYy1ibHVlX2dyZXkuZGFyay10aGVtZSAuaW5wdXQtc2VjdGlvbiBpbnB1dC5uYXYtaW5wdXQsLmNhcGliYXJhLmMtYmx1ZV9ncmV5IC5pbnB1dC1ib3gsLmNhcGliYXJhLmMtYmx1ZV9ncmV5IC5pbnB1dC1zZWN0aW9uIGlucHV0Lm5hdi1pbnB1dHtib3JkZXItY29sb3I6cmdiYSg5NiwxMjUsMTM5LC42KX0uY2FwaWJhcmEuYy1ibHVlX2dyZXkuZGFyay10aGVtZSAuaW5wdXQtc2VjdGlvbiBpbnB1dC5uYXYtaW5wdXQ6YWN0aXZlLC5jYXBpYmFyYS5jLWJsdWVfZ3JleS5kYXJrLXRoZW1lIC5pbnB1dC1zZWN0aW9uIGlucHV0Lm5hdi1pbnB1dDpmb2N1cywuY2FwaWJhcmEuYy1ibHVlX2dyZXkgLmlucHV0LXNlY3Rpb24gaW5wdXQubmF2LWlucHV0OmFjdGl2ZSwuY2FwaWJhcmEuYy1ibHVlX2dyZXkgLmlucHV0LXNlY3Rpb24gaW5wdXQubmF2LWlucHV0OmZvY3Vze2JvcmRlci1jb2xvcjojNjA3ZDhiO2JveC1zaGFkb3c6MCA0cHggNnB4IHJnYmEoOTYsMTI1LDEzOSwuMil9LmNhcGliYXJhLmMtYmx1ZV9ncmV5LmRhcmstdGhlbWUgLmlucHV0LXNlY3Rpb24ubXNqLWlucHV0LWNvbnRhaW5lciB0ZXh0YXJlYS5tc2osLmNhcGliYXJhLmMtYmx1ZV9ncmV5IC5pbnB1dC1zZWN0aW9uLm1zai1pbnB1dC1jb250YWluZXIgdGV4dGFyZWEubXNqe2JvcmRlcjoycHggc29saWQgIzYwN2Q4Yn0uY2FwaWJhcmEuYy1ibHVlX2dyZXkuZGFyay10aGVtZSAuaW5wdXQtc2VjdGlvbi5tc2otaW5wdXQtY29udGFpbmVyIHRleHRhcmVhLm1zajphY3RpdmUsLmNhcGliYXJhLmMtYmx1ZV9ncmV5LmRhcmstdGhlbWUgLmlucHV0LXNlY3Rpb24ubXNqLWlucHV0LWNvbnRhaW5lciB0ZXh0YXJlYS5tc2o6Zm9jdXMsLmNhcGliYXJhLmMtYmx1ZV9ncmV5IC5pbnB1dC1zZWN0aW9uLm1zai1pbnB1dC1jb250YWluZXIgdGV4dGFyZWEubXNqOmFjdGl2ZSwuY2FwaWJhcmEuYy1ibHVlX2dyZXkgLmlucHV0LXNlY3Rpb24ubXNqLWlucHV0LWNvbnRhaW5lciB0ZXh0YXJlYS5tc2o6Zm9jdXN7Ym94LXNoYWRvdzowIDRweCA2cHggcmdiYSg5NiwxMjUsMTM5LC4yKX0uY2FwaWJhcmEuYy1ibHVlX2dyZXkgLmJ0bi1yYWlzZWQsLmNhcGliYXJhLmMtYmx1ZV9ncmV5LmRhcmstdGhlbWUgLmJ0bi1yYWlzZWR7Ym9yZGVyLWNvbG9yOiM2MDdkOGI7YmFja2dyb3VuZDpyZ2JhKDk2LDEyNSwxMzksLjgpfS5jYXBpYmFyYS5jLWJsdWVfZ3JleSAuYnRuLW91dGxpbmUsLmNhcGliYXJhLmMtYmx1ZV9ncmV5LmRhcmstdGhlbWUgLmJ0bi1vdXRsaW5le2JvcmRlci1jb2xvcjojNjA3ZDhiO2NvbG9yOiM2MDdkOGJ9LmNhcGliYXJhLmMtYmx1ZV9ncmV5LmRhcmstdGhlbWUgLnNlbGVjdC1jb250YWluZXIgLnNlbGVjdGVkLWRheSwuY2FwaWJhcmEuYy1ibHVlX2dyZXkgLnNlbGVjdC1jb250YWluZXIgLnNlbGVjdGVkLWRheXtiYWNrZ3JvdW5kOnJnYmEoOTYsMTI1LDEzOSwuMyk7Ym94LXNoYWRvdzppbnNldCAwIDAgMTBweCByZ2JhKDk2LDEyNSwxMzksLjUpfS5jYXBpYmFyYSAuYy1ibHVlX2dyZXktLWJhY2tncm91bmR7YmFja2dyb3VuZDojNjA3ZDhiIWltcG9ydGFudH0uY2FwaWJhcmEgLmMtYmx1ZV9ncmV5LWQtLWJhY2tncm91bmR7YmFja2dyb3VuZDojNDE1NDVlIWltcG9ydGFudH0uY2FwaWJhcmEgLmMtYmx1ZV9ncmV5LWwtLWJhY2tncm91bmR7YmFja2dyb3VuZDojOGFhMmFlIWltcG9ydGFudH0uY2FwaWJhcmEgLmMtYmx1ZV9ncmV5LS10ZXh0e2NvbG9yOiM2MDdkOGIhaW1wb3J0YW50fS5jYXBpYmFyYSAuYy1ibHVlX2dyZXktZC0tdGV4dHtjb2xvcjojNDE1NDVlIWltcG9ydGFudH0uY2FwaWJhcmEgLmMtYmx1ZV9ncmV5LWwtLXRleHR7Y29sb3I6IzhhYTJhZSFpbXBvcnRhbnR9LmNhcGliYXJhIC5kZXRhaWwtZGF5IC5saXN0LWRldGFpbCAuaXRlbS1kZXRhaWwuYy1ibHVlX2dyZXl7YmFja2dyb3VuZDpyZ2JhKDk2LDEyNSwxMzksLjIpO2JvcmRlcjoxcHggc29saWQgIzYwN2Q4Yn0uY2FwaWJhcmEgLmRldGFpbC1kYXkgLmxpc3QtZGV0YWlsIC5pdGVtLWRldGFpbC5jLWJsdWVfZ3JleSAubGVmdC1pY29ue2JhY2tncm91bmQ6IzYwN2Q4Yn0uY2FwaWJhcmEgLmRldGFpbC1kYXkgLmxpc3QtZGV0YWlsIC5pdGVtLWRldGFpbC5jLWJsdWVfZ3JleSAubGVmdC1pY29uLm91dGxpbmVke2JvcmRlcjoxcHggc29saWQgIzYwN2Q4Yjtib3gtc2hhZG93Omluc2V0IDAgMCAwIDFweCByZ2JhKDk2LDEyNSwxMzksLjcpfS5jYXBpYmFyYSAuZGV0YWlsLWRheSAubGlzdC1kZXRhaWwgLml0ZW0tZGV0YWlsLmMtYmx1ZV9ncmV5IC5uYW1le2NvbG9yOiM2MDdkOGJ9LmNhcGliYXJhIC5mbG9hdC1ib3gtY29udGFpbmVyIC5mbG9hdC1ib3ggc3Bhbi5kYXRhLmMtYmx1ZV9ncmV5e2JhY2tncm91bmQ6cmdiYSg5NiwxMjUsMTM5LC44KX0uY2FwaWJhcmEgLmZsb2F0LWJveC1jb250YWluZXIgLmZsb2F0LWJveCBzcGFuLmRhdGEuc2hhcGUtb3V0bGluZWQuYy1ibHVlX2dyZXl7Ym9yZGVyLWNvbG9yOnJnYmEoOTYsMTI1LDEzOSwuOSk7YmFja2dyb3VuZDpyZ2JhKDk2LDEyNSwxMzksLjEpO2NvbG9yOiM2MDdkOGJ9LmNhcGliYXJhIC5mbG9hdC1ib3gtY29udGFpbmVyIC5mbG9hdC1ib3ggc3Bhbi5kYXRhLnNoYXBlLWJhci5jLWJsdWVfZ3JleXtiYWNrZ3JvdW5kOiM2MDdkOGJ9LmNhcGliYXJhIC5mbG9hdC1ib3gtY29udGFpbmVyIC5mbG9hdC1ib3ggc3Bhbi5kYXRhLnNoYXBlLWJhci1vdXRsaW5lZC5jLWJsdWVfZ3JleXtib3JkZXItY29sb3I6cmdiYSg5NiwxMjUsMTM5LC45KTtiYWNrZ3JvdW5kOnJnYmEoOTYsMTI1LDEzOSwuMSl9LmNhcGliYXJhIC5mbG9hdC1ib3gtY29udGFpbmVyIC5mbG9hdC1ib3ggLmRvdC5jLWJsdWVfZ3JleXtiYWNrZ3JvdW5kOiM2MDdkOGJ9LmNhcGliYXJhIC5mbG9hdC1ib3gtY29udGFpbmVyIC5mbG9hdC1ib3ggLmRvdC5jLWJsdWVfZ3JleS5vdXRsaW5lZHtib3JkZXI6MXB4IHNvbGlkICM2MDdkOGI7Ym94LXNoYWRvdzppbnNldCAwIDAgMCAxcHggcmdiYSg5NiwxMjUsMTM5LC43KX0uY2FwaWJhcmEgLmhlYWRlci10b3AgLnRhYnMtY29udGFpbmVyIC50YWI6bm90KC5kaXNhYmxlZCkuYy1ibHVlX2dyZXkuYWN0aXZle2JhY2tncm91bmQ6cmdiYSg5NiwxMjUsMTM5LC43KTtib3JkZXItY29sb3I6cmdiYSg5NiwxMjUsMTM5LC43KTtjb2xvcjojZmZmfS5jYXBpYmFyYSAuaGVhZGVyLXRvcCAudGFicy1jb250YWluZXIgLnRhYjpub3QoLmRpc2FibGVkKS5jLWJsdWVfZ3JleS5hY3RpdmU6aG92ZXJ7YmFja2dyb3VuZDpyZ2JhKDk2LDEyNSwxMzksLjgpfS5jYXBpYmFyYSAuaGVhZGVyLXRvcCAudGFicy1jb250YWluZXIgLnRhYjpub3QoLmRpc2FibGVkKS5jLWJsdWVfZ3JleTpob3ZlcntiYWNrZ3JvdW5kOnJnYmEoOTYsMTI1LDEzOSwuMik7Ym9yZGVyLWNvbG9yOnJnYmEoOTYsMTI1LDEzOSwuOSl9LmNhcGliYXJhIC5pbnB1dC1ib3ggLm1pbmktaW5wdXQtc2VjdGlvbi0taWNvbi5jLWJsdWVfZ3JleXtiYWNrZ3JvdW5kOiM2MDdkOGJ9LmNhcGliYXJhICosLmNhcGliYXJhIDphZnRlciwuY2FwaWJhcmEgOmJlZm9yZXtib3gtc2l6aW5nOmJvcmRlci1ib3h9LmNhcGliYXJhIGlucHV0e291dGxpbmU6bm9uZX0uY2FwaWJhcmEgaW5wdXRbdHlwZT1udW1iZXJdey1tb3otYXBwZWFyYW5jZTp0ZXh0ZmllbGR9LmNhcGliYXJhIGlucHV0W3R5cGU9bnVtYmVyXTo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbiwuY2FwaWJhcmEgaW5wdXRbdHlwZT1udW1iZXJdOjotd2Via2l0LW91dGVyLXNwaW4tYnV0dG9uey13ZWJraXQtYXBwZWFyYW5jZTpub25lO21hcmdpbjowfS5jYXBpYmFyYSBpbnB1dFt0eXBlPW51bWJlcl06Oi1tb3otcGxhY2Vob2xkZXJ7b3BhY2l0eToxfS5jYXBpYmFyYSBpbnB1dFt0eXBlPW51bWJlcl06LW1zLWlucHV0LXBsYWNlaG9sZGVye29wYWNpdHk6MX0uY2FwaWJhcmEgaW5wdXRbdHlwZT1udW1iZXJdOjpwbGFjZWhvbGRlcntvcGFjaXR5OjF9LmNhcGliYXJhLmRhcmstdGhlbWUgLmhpZGUtZGFyaywuY2FwaWJhcmE6bm90KC5kYXJrLXRoZW1lKSAuaGlkZS1saWdodHtkaXNwbGF5Om5vbmUhaW1wb3J0YW50fS5jYXBpYmFyYSAudHJ1bmNhdGV7d2lkdGg6MTAwJTtkaXNwbGF5OmlubGluZS1ibG9jazt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXN9LmNhcGliYXJhIC5oaWRle2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9LmNhcGliYXJhIC50ZXh0LXRpdGxle2ZvbnQtc2l6ZToxZW07Zm9udC13ZWlnaHQ6NzAwO21hcmdpbjouM2VtfS5jYXBpYmFyYSAudGV4dC1zdWJ0aXRsZXtmb250LXNpemU6Ljg3NWVtO2ZvbnQtd2VpZ2h0OjcwMDttYXJnaW46LjNlbX0uY2FwaWJhcmEgLmQtaW5saW5lLWJsb2Nre2Rpc3BsYXk6aW5saW5lLWJsb2NrfS5jYXBpYmFyYSAuZC1ibG9ja3tkaXNwbGF5OmJsb2NrfUBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6OTYwcHgpey5jYXBpYmFyYSAuYy1kLWRlc2t0b3Atbm9uZXtkaXNwbGF5Om5vbmUhaW1wb3J0YW50fS5jYXBpYmFyYSAuYy1kLWRlc2t0b3AtaW5saW5lLWJsb2Nre2Rpc3BsYXk6aW5saW5lLWJsb2NrIWltcG9ydGFudH0uY2FwaWJhcmEgLmMtZC1kZXNrdG9wLWJsb2Nre2Rpc3BsYXk6YmxvY2shaW1wb3J0YW50fS5jYXBpYmFyYSAuYy1kLWRlc2t0b3AtZmxleHtkaXNwbGF5OmZsZXghaW1wb3J0YW50fX1AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOjk1OXB4KXsuY2FwaWJhcmEgLmMtZC1tb2JpbGUtbm9uZXtkaXNwbGF5Om5vbmUhaW1wb3J0YW50fS5jYXBpYmFyYSAuYy1kLW1vYmlsZS1ibG9ja3tkaXNwbGF5OmJsb2NrIWltcG9ydGFudH0uY2FwaWJhcmEgLmMtZC1tb2JpbGUtaW5saW5lLWJsb2Nre2Rpc3BsYXk6aW5saW5lLWJsb2NrIWltcG9ydGFudH0uY2FwaWJhcmEgLmMtZC1tb2JpbGUtZmxleHtkaXNwbGF5OmZsZXghaW1wb3J0YW50fX0uY2FwaWJhcmEgOjotd2Via2l0LXNjcm9sbGJhcnt3aWR0aDoxMnB4O2hlaWdodDoxMnB4O29wYWNpdHk6LjV9LmNhcGliYXJhIDo6LXdlYmtpdC1zY3JvbGxiYXItY29ybmVyLC5jYXBpYmFyYSA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNre2JhY2tncm91bmQ6dHJhbnNwYXJlbnR9LmNhcGliYXJhIDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWJ7Ym9yZGVyLXJhZGl1czo1cHg7YmFja2dyb3VuZDpncmV5fS5jYXBpYmFyYS5kYXJrLXRoZW1lIDo6LXdlYmtpdC1zY3JvbGxiYXItY29ybmVyLC5jYXBpYmFyYS5kYXJrLXRoZW1lIDo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2t7YmFja2dyb3VuZDp0cmFuc3BhcmVudH0uY2FwaWJhcmEuZGFyay10aGVtZSA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1ie2JhY2tncm91bmQ6I2JkYmRiZH0uY2FwaWJhcmF7cG9zaXRpb246cmVsYXRpdmU7Zm9udC1mYW1pbHk6Um9ib3RvLHNhbnMtc2VyaWY7aGVpZ2h0OmluaGVyaXQ7bWF4LWhlaWdodDppbmhlcml0O292ZXJmbG93OmhpZGRlbjstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7LW1vei11c2VyLXNlbGVjdDpub25lOy1tcy11c2VyLXNlbGVjdDpub25lO3VzZXItc2VsZWN0Om5vbmU7bGluZS1oZWlnaHQ6bm9ybWFsO2ZvbnQtc2l6ZTp2YXIoLS1mb250LXNpemUpO2NvbG9yOiMzNzQ3NGY7YmFja2dyb3VuZDojZjVmNWY1fS5jYXBpYmFyYS5kYXJrLXRoZW1le2NvbG9yOiNmMGYwZjA7YmFja2dyb3VuZDojMjIyODM3fS5jYXBpYmFyYSAuY29udGFpbmVyLXRse3dpZHRoOjEwMCU7aGVpZ2h0OmNhbGMoMTAwJSAtIHZhcigtLWhlYWRlci10b3AtaGVpZ2h0KSk7bWF4LWhlaWdodDpjYWxjKDEwMCUgLSB2YXIoLS1oZWFkZXItdG9wLWhlaWdodCkpO3Bvc2l0aW9uOnJlbGF0aXZlO292ZXJmbG93OnNjcm9sbDttYXJnaW46MH0uY2FwaWJhcmEuZXh0ZW5kZWQtcmlnaHQgLmNvbnRhaW5lci10bHt3aWR0aDpjYWxjKDEwMCUgLSB2YXIoLS1uYXYtcmlnaHQtd2lkdGgpKX0uY2FwaWJhcmEgLmNvbnRhaW5lci10bHtiYWNrZ3JvdW5kOiNmNWY1ZjV9LmNhcGliYXJhLmRhcmstdGhlbWUgLmNvbnRhaW5lci10bHtiYWNrZ3JvdW5kOiMyMjI4Mzd9LmNhcGliYXJhIC5jb250YWluZXItdGwgLnRvZGF5LWxpbmV7aGVpZ2h0OjA7d2lkdGg6MDtwb3NpdGlvbjotd2Via2l0LXN0aWNreTtwb3NpdGlvbjpzdGlja3k7dG9wOnZhcigtLWhlYWRlci1oZWlnaHQpfS5jYXBpYmFyYSAuY29udGFpbmVyLXRsIC50b2RheS1saW5lLmRpc2FibGUtbGluZSwuY2FwaWJhcmEgLmNvbnRhaW5lci10bCAudG9kYXktbGluZS5kaXNhYmxlLWxpbmU6YWZ0ZXJ7ZGlzcGxheTpub25lIWltcG9ydGFudH0uY2FwaWJhcmEgLmNvbnRhaW5lci10bCAudG9kYXktbGluZTphZnRlcnttYXJnaW4tbGVmdDpjYWxjKHZhcigtLW5hdi13aWR0aCkgKyB2YXIoLS1pbml0aWFsLW5hdi13aWR0aCkgKyB2YXIoLS1leC1uYXYtd2lkdGgpICsgdmFyKC0tYnRuLW5hdi13aWR0aCkgKyAxcHgpO3Bvc2l0aW9uOmFic29sdXRlO2Rpc3BsYXk6YmxvY2s7bGVmdDowO3RvcDowO2NvbnRlbnQ6XFxcIlxcXCI7d2lkdGg6MnB4O2hlaWdodDpjYWxjKDEwMHZoIC0gdmFyKC0taGVhZGVyLWhlaWdodCkgLSB2YXIoLS1oZWFkZXItdG9wLWhlaWdodCkpO2JhY2tncm91bmQ6cmdiYSgxODMsMjgsMjgsLjQpfS5jYXBpYmFyYSAuY29udGFpbmVyLXRsLmhlYWRlci1leHRlbmRlZCAuY29udGFpbmVyLXRsIC50b2RheS1saW5lOmFmdGVye2hlaWdodDpjYWxjKDEwMHZoIC0gdmFyKC0taGVhZGVyLWhlaWdodCkgKyB2YXIoLS1leC1oZWFkZXItaGVpZ2h0KSArIHZhcigtLWhlYWRlci10b3AtaGVpZ2h0KSl9LmNhcGliYXJhIC5jb3JuZXJ7cG9zaXRpb246YWJzb2x1dGU7dG9wOnZhcigtLWhlYWRlci10b3AtaGVpZ2h0KTt6LWluZGV4OjQ7aGVpZ2h0OnZhcigtLWhlYWRlci1oZWlnaHQpO2JvcmRlcjpzb2xpZCByZ2JhKDAsMCwwLC40KTtib3JkZXItd2lkdGg6MCAwIDJweDtwYWRkaW5nLWxlZnQ6OHB4fS5jYXBpYmFyYSAuY29ybmVyOm5vdCgucmlnaHQpe2xlZnQ6MDtib3JkZXItcmlnaHQtd2lkdGg6MXB4O3dpZHRoOmNhbGModmFyKC0tbmF2LXdpZHRoKSArIHZhcigtLWluaXRpYWwtbmF2LXdpZHRoKSArIHZhcigtLWV4LW5hdi13aWR0aCkgKyB2YXIoLS1idG4tbmF2LXdpZHRoKSl9LmNhcGliYXJhIC5jb3JuZXIucmlnaHR7cmlnaHQ6MDt3aWR0aDp2YXIoLS1uYXYtcmlnaHQtd2lkdGgpO2Rpc3BsYXk6bm9uZX0uY2FwaWJhcmEgLmNvcm5lcj5kaXY6bm90KFtjbGFzc10pe3dpZHRoOmluaGVyaXQ7aGVpZ2h0OmluaGVyaXR9LmNhcGliYXJhIC5jb3JuZXIgLmNvcm5lci10aXRsZXtoZWlnaHQ6aW5oZXJpdDtkaXNwbGF5OmJsb2NrO3RleHQtYWxpZ246bGVmdDtwb3NpdGlvbjpyZWxhdGl2ZX0uY2FwaWJhcmEgLmNvcm5lciAuY29ybmVyLXRpdGxlIHNwYW4uYm90dG9tLXRleHR7cG9zaXRpb246YWJzb2x1dGU7bGVmdDozNXB4O2JvdHRvbTo4cHh9LmNhcGliYXJhIC5jb3JuZXIgLmluaXRpYWwtY29ybmVye3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6dmFyKC0tbmF2LXdpZHRoKTt0b3A6MDt3aWR0aDp2YXIoLS1pbml0aWFsLW5hdi13aWR0aCk7aGVpZ2h0OnZhcigtLWhlYWRlci1oZWlnaHQpO292ZXJmbG93OmhpZGRlbjtkaXNwbGF5OmJsb2NrfS5jYXBpYmFyYSAuY29ybmVyIC5pbml0aWFsLWNvcm5lciAuaW5pdGlhbC1jb3JuZXItdGl0bGV7aGVpZ2h0OmluaGVyaXQ7d2lkdGg6aW5oZXJpdDtkaXNwbGF5OmlubGluZS1ibG9jazttYXJnaW4tcmlnaHQ6LTFweDtib3gtc2l6aW5nOmJvcmRlci1ib3g7dmVydGljYWwtYWxpZ246dG9wO3Bvc2l0aW9uOnJlbGF0aXZlfS5jYXBpYmFyYSAuY29ybmVyIC5pbml0aWFsLWNvcm5lciAuaW5pdGlhbC1jb3JuZXItdGl0bGUgLmJvdHRvbS1jb250YWluZXJ7cG9zaXRpb246YWJzb2x1dGU7bGVmdDowO2JvdHRvbTo4cHg7d2lkdGg6MTAwJTtib3gtc2l6aW5nOmJvcmRlci1ib3g7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcn0uY2FwaWJhcmEgLmNvcm5lciAuaW5pdGlhbC1jb3JuZXIgLmluaXRpYWwtY29ybmVyLXRpdGxlIC5ib3R0b20tY29udGFpbmVyIC5pdGVtLWNvbHtmbGV4OjAgMCB2YXIoLS1uYXYtaXRlbS1jb2wtd2lkdGgpO3RleHQtYWxpZ246Y2VudGVyO2Rpc3BsYXk6aW5saW5lLWJsb2NrO2ZvbnQtc2l6ZTouNzVlbX0uY2FwaWJhcmEgLmNvcm5lciAuZXh0ZW5kLWNvcm5lcntwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OmNhbGModmFyKC0tbmF2LXdpZHRoKSArIHZhcigtLWluaXRpYWwtbmF2LXdpZHRoKSk7dG9wOjA7d2lkdGg6dmFyKC0tZXgtbmF2LXdpZHRoKTtoZWlnaHQ6dmFyKC0taGVhZGVyLWhlaWdodCk7b3ZlcmZsb3c6aGlkZGVuO2Rpc3BsYXk6YmxvY2t9LmNhcGliYXJhIC5jb3JuZXIgLmV4dGVuZC1jb3JuZXIgLmV4LWNvcm5lci10aXRsZXtoZWlnaHQ6aW5oZXJpdDt3aWR0aDppbmhlcml0O2Rpc3BsYXk6aW5saW5lLWJsb2NrO21hcmdpbi1yaWdodDotMXB4O2JveC1zaXppbmc6Ym9yZGVyLWJveDt2ZXJ0aWNhbC1hbGlnbjp0b3A7cG9zaXRpb246cmVsYXRpdmV9LmNhcGliYXJhIC5jb3JuZXIgLmV4dGVuZC1jb3JuZXIgLmV4LWNvcm5lci10aXRsZSAuYm90dG9tLWNvbnRhaW5lcntwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjA7Ym90dG9tOjhweDt3aWR0aDoxMDAlO2JveC1zaXppbmc6Ym9yZGVyLWJveDtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyfS5jYXBpYmFyYSAuY29ybmVyIC5leHRlbmQtY29ybmVyIC5leC1jb3JuZXItdGl0bGUgLmJvdHRvbS1jb250YWluZXIgLml0ZW0tY29se2ZsZXg6MCAwIHZhcigtLW5hdi1pdGVtLWNvbC13aWR0aCk7dGV4dC1hbGlnbjpjZW50ZXI7ZGlzcGxheTppbmxpbmUtYmxvY2s7Zm9udC1zaXplOi43NWVtfS5jYXBpYmFyYSAuY29ybmVyIC5idG4tbmF2LWNvcm5lcntwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDowO3RvcDowO3dpZHRoOnZhcigtLWJ0bi1uYXYtd2lkdGgpO2hlaWdodDp2YXIoLS1oZWFkZXItaGVpZ2h0KTtwYWRkaW5nLXRvcDp2YXIoLS1oZWFkZXItbGFiZWxzLWhlaWdodCl9LmNhcGliYXJhIC5jb3JuZXIgLmJ0bi1uYXYtY29ybmVyIC5pbnB1dC10aXRsZXN7dGV4dC1hbGlnbjpyaWdodDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OjA7dG9wOnZhcigtLWhlYWRlci1sYWJlbHMtaGVpZ2h0KX0uY2FwaWJhcmEgLmNvcm5lciAuYnRuLW5hdi1jb3JuZXIgLmlucHV0LXRpdGxlcyAuaW5wdXQtdGl0bGUtY29udGFpbmVye3Bvc2l0aW9uOnJlbGF0aXZlfS5jYXBpYmFyYSAuY29ybmVyIC5idG4tbmF2LWNvcm5lciAuaW5wdXQtdGl0bGVzIC5pbnB1dC10aXRsZS1jb250YWluZXI6bm90KC5wZXJzaXN0ZW50KXtkaXNwbGF5Om5vbmV9LmNhcGliYXJhIC5jb3JuZXIgLmJ0bi1uYXYtY29ybmVyIC5pbnB1dC10aXRsZXMgLmlucHV0LXRpdGxlLWNvbnRhaW5lciBzcGFuLmF2ZXJhZ2V7Zm9udC13ZWlnaHQ6NzAwO21hcmdpbi1yaWdodDo0cHh9LmNhcGliYXJhIC5jb3JuZXIgLmJ0bi1uYXYtY29ybmVyIC5pbnB1dC10aXRsZXMgLmlucHV0LXRpdGxlLWNvbnRhaW5lciAuYXZlcmFnZS1ib3h7cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6M2VtO3RvcDowO2ZvbnQtc2l6ZTouODc1ZW07YmFja2dyb3VuZDojZmZmO2JvcmRlci1yaWdodDpub25lO3BhZGRpbmc6M3B4IDEycHggM3B4IDhweDt6LWluZGV4OjI7Ym9yZGVyLXJhZGl1czo1cHg7aGVpZ2h0OjE4cHg7Ym94LXNoYWRvdzoycHggMCA1cHggMnB4IHJnYmEoMCwwLDAsLjIpO2xpbmUtaGVpZ2h0OjEzcHg7Y29sb3I6IzAwMCFpbXBvcnRhbnQ7bWluLXdpZHRoOjRyZW19LmNhcGliYXJhIC5jb3JuZXIgLmJ0bi1uYXYtY29ybmVyIC5pbnB1dC10aXRsZXMgLmlucHV0LXRpdGxlLWNvbnRhaW5lciAuYXZlcmFnZS1ib3g6YWZ0ZXJ7Y29udGVudDpcXFwiXFxcIjt0cmFuc2Zvcm06cm90YXRlKDQ1ZGVnKTtwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDotM3B4O3RvcDozcHg7YmFja2dyb3VuZDojZmZmO3dpZHRoOjEycHg7aGVpZ2h0OjEycHh9LmNhcGliYXJhIC5jb3JuZXIgLmJ0bi1uYXYtY29ybmVyIC5pbnB1dC10aXRsZXMgLmlucHV0LXRpdGxlLWNvbnRhaW5lciAuYXZlcmFnZS1ib3ggLnN5bWJvbHtmb250LXdlaWdodDo3MDB9LmNhcGliYXJhIC5jb3JuZXIgLmJ0bi1uYXYtY29ybmVyIC5pbnB1dC10aXRsZXMgLmlucHV0LXRpdGxlLWNvbnRhaW5lciAuaW5wdXQtdGl0bGV7aGVpZ2h0OmNhbGModmFyKC0taGVhZGVyLWlucHV0LWhlaWdodCkgKyAycHgpO2xpbmUtaGVpZ2h0OmNhbGModmFyKC0taGVhZGVyLWlucHV0LWhlaWdodCkgKyAycHgpO3BhZGRpbmctcmlnaHQ6OHB4O2Rpc3BsYXk6aW5saW5lLWJsb2NrO2ZvbnQtc2l6ZTouNzVlbX0uY2FwaWJhcmEuZXh0ZW5kZWQtcmlnaHQgLmNvcm5lci5yaWdodHtkaXNwbGF5OmJsb2NrfS5jYXBpYmFyYS5oZWFkZXItZXh0ZW5kZWQgLmNvcm5lciwuY2FwaWJhcmEuaGVhZGVyLWV4dGVuZGVkIC5jb3JuZXIgLmJ0bi1uYXYtY29ybmVyLC5jYXBpYmFyYS5oZWFkZXItZXh0ZW5kZWQgLmNvcm5lciAuZXh0ZW5kLWNvcm5lciwuY2FwaWJhcmEuaGVhZGVyLWV4dGVuZGVkIC5jb3JuZXIgLmluaXRpYWwtY29ybmVye2hlaWdodDpjYWxjKHZhcigtLWhlYWRlci1oZWlnaHQpICsgdmFyKC0tZXgtaGVhZGVyLWhlaWdodCkpfS5jYXBpYmFyYS5oZWFkZXItZXh0ZW5kZWQgLmNvcm5lciAuYnRuLW5hdi1jb3JuZXIgLmlucHV0LXRpdGxlcyAuaW5wdXQtdGl0bGUtY29udGFpbmVyOm5vdCgucGVyc2lzdGVudCl7ZGlzcGxheTp1bnNldH0uY2FwaWJhcmEuaGVhZGVyLWV4dGVuZGVkIC5jb3JuZXIgLmJ0bi1uYXYtY29ybmVyIC5pbnB1dC10aXRsZXMgLmlucHV0LXRpdGxlLWNvbnRhaW5lcjpub3QoLnBlcnNpc3RlbnQpIC5hdmVyYWdlLWJveHt2aXNpYmlsaXR5OnZpc2libGV9LmNhcGliYXJhLmhlYWRlci1leHRlbmRlZCAuY29ybmVyIC5idG4tbmF2LWNvcm5lciAuaW5wdXQtdGl0bGVzIC5pbnB1dC10aXRsZS1jb250YWluZXI6bm90KC5wZXJzaXN0ZW50KSAuaW5wdXQtdGl0bGV7dmlzaWJpbGl0eTp2aXNpYmxlO2hlaWdodDphdXRvfS5jYXBpYmFyYSAuY29ybmVye2JhY2tncm91bmQ6I2YxZmZmZX0uY2FwaWJhcmEuZGFyay10aGVtZSAuY29ybmVye2JhY2tncm91bmQ6IzMxM2I1MDtib3JkZXItY29sb3I6cmdiYSg2NCw3OCwxMDUsLjYpfS5jYXBpYmFyYS5kYXJrLXRoZW1lIC5jb3JuZXIgLmlucHV0LXRpdGxlcyAuaW5wdXQtdGl0bGUtY29udGFpbmVyIC5pbnB1dC10aXRsZXtjb2xvcjpoc2xhKDAsMCUsMTAwJSwuOCkhaW1wb3J0YW50fS5jYXBpYmFyYSAuaGVhZGVyLXRvcHtwb3NpdGlvbjpyZWxhdGl2ZTt3aWR0aDoxMDAlO2hlaWdodDp2YXIoLS1oZWFkZXItdG9wLWhlaWdodCk7cGFkZGluZy1yaWdodDo4cHg7ZGlzcGxheTpmbGV4O2ZsZXgtZmxvdzpyb3cgd3JhcH0uY2FwaWJhcmEgLmhlYWRlci10b3AgLnNwYWNlcntmbGV4OjEgMCBhdXRvfS5jYXBpYmFyYSAuaGVhZGVyLXRvcCAudGFicy1jb250YWluZXJ7ZGlzcGxheTpmbGV4O3BhZGRpbmc6MCAxNnB4fS5jYXBpYmFyYSAuaGVhZGVyLXRvcCAudGFicy1jb250YWluZXIgLnRhYntjdXJzb3I6cG9pbnRlcjtwYWRkaW5nOjNweCAxOHB4O2ZvbnQtd2VpZ2h0OjcwMDtib3JkZXI6MXB4IHNvbGlkIHRyYW5zcGFyZW50O21hcmdpbjo4cHg7Ym9yZGVyLXJhZGl1czozMHB4O3RyYW5zaXRpb246YmFja2dyb3VuZCAuMnMgZWFzZX0uY2FwaWJhcmEgLmhlYWRlci10b3AgLnRhYnMtY29udGFpbmVyIC50YWIuZGlzYWJsZWR7Y29sb3I6Z3JleX0uY2FwaWJhcmEgLmhlYWRlci10b3AgLnRhYnMtY29udGFpbmVyIC50YWI6aG92ZXJ7Ym9yZGVyLWNvbG9yOmdyZXl9LmNhcGliYXJhIC5oZWFkZXItdG9we2JhY2tncm91bmQ6I2YxZmZmZX0uY2FwaWJhcmEgLmhlYWRlci10b3AgLnRhYnMtY29udGFpbmVyIC50YWJ7Y29sb3I6IzMxM2I1MH0uY2FwaWJhcmEgLmhlYWRlci10b3AgLnRhYnMtY29udGFpbmVyIC50YWIuZGlzYWJsZWR7Y29sb3I6cmdiYSg0OSw1OSw4MCwuNSl9LmNhcGliYXJhLmRhcmstdGhlbWUgLmhlYWRlci10b3B7YmFja2dyb3VuZDojMzEzYjUwfS5jYXBpYmFyYS5kYXJrLXRoZW1lIC5oZWFkZXItdG9wIC50YWJzLWNvbnRhaW5lciAudGFie2NvbG9yOmhzbGEoMCwwJSwxMDAlLC44KX0uY2FwaWJhcmEuZGFyay10aGVtZSAuaGVhZGVyLXRvcCAudGFicy1jb250YWluZXIgLnRhYi5kaXNhYmxlZHtjb2xvcjpoc2xhKDAsMCUsMTAwJSwuNCl9LmNhcGliYXJhIC5jb3JuZXItZm9vdGVye3Bvc2l0aW9uOi13ZWJraXQtc3RpY2t5O3Bvc2l0aW9uOnN0aWNreTtsZWZ0OjA7Ym90dG9tOjA7ei1pbmRleDozO3dpZHRoOmNhbGModmFyKC0tbmF2LXdpZHRoKSArIHZhcigtLWluaXRpYWwtbmF2LXdpZHRoKSArIHZhcigtLWV4LW5hdi13aWR0aCkgKyB2YXIoLS1idG4tbmF2LXdpZHRoKSk7aGVpZ2h0OnZhcigtLWl0ZW0taGVpZ2h0KTttYXJnaW4tYm90dG9tOmNhbGModmFyKC0taXRlbS1oZWlnaHQpKi0xKTtib3gtc2l6aW5nOmJvcmRlci1ib3h9LmNhcGliYXJhIC5jb3JuZXItZm9vdGVyIC5jb3JuZXItdGl0bGV7bGluZS1oZWlnaHQ6MzBweDtoZWlnaHQ6aW5oZXJpdDtkaXNwbGF5OmJsb2NrO3RleHQtYWxpZ246bGVmdDtib3gtc2l6aW5nOmJvcmRlci1ib3g7cG9zaXRpb246cmVsYXRpdmU7Zm9udC13ZWlnaHQ6NzAwO3BhZGRpbmc6NHB4IDhweH0uY2FwaWJhcmEgLmNvcm5lci1mb290ZXJ7YmFja2dyb3VuZDojNzg5MDljO2NvbG9yOiNmZmZ9LmNhcGliYXJhLmRhcmstdGhlbWUgLmNvcm5lci1mb290ZXJ7YmFja2dyb3VuZDojMzEzYjUwO2NvbG9yOiNmMGYwZjB9LmNhcGliYXJhIG5hdi5yaWdodHtwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDowO3RvcDpjYWxjKHZhcigtLWhlYWRlci1oZWlnaHQpICsgdmFyKC0taGVhZGVyLXRvcC1oZWlnaHQpKTtoZWlnaHQ6Y2FsYygxMDAlIC0gdmFyKC0taGVhZGVyLWhlaWdodCkgLSB2YXIoLS1oZWFkZXItdG9wLWhlaWdodCkpO292ZXJmbG93LXk6c2Nyb2xsO292ZXJmbG93LXg6aGlkZGVuO3otaW5kZXg6NTtkaXNwbGF5Om5vbmU7Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkIHJlZH0uY2FwaWJhcmEgbmF2LnJpZ2h0LC5jYXBpYmFyYSBuYXYucmlnaHQgLmNoaWxkLW5hdi1pdGVtLC5jYXBpYmFyYSBuYXYucmlnaHQgLm5hdi1pdGVte3dpZHRoOnZhcigtLW5hdi1yaWdodC13aWR0aCl9LmNhcGliYXJhIG5hdi5yaWdodCAubmF2LWlucHV0LWNvbnRhaW5lcnt0ZXh0LWFsaWduOmNlbnRlcn0uY2FwaWJhcmEgbmF2LnJpZ2h0IC5uYXYtaW5wdXQtY29udGFpbmVyIC5idXR0b24tc2VjdGlvbntwYWRkaW5nLWJvdHRvbTouNzVlbTtwYWRkaW5nLXRvcDouNzVlbTtwb3NpdGlvbjotd2Via2l0LXN0aWNreTtwb3NpdGlvbjpzdGlja3k7Ym90dG9tOjB9LmNhcGliYXJhIG5hdi5sZWZ0e21pbi1oZWlnaHQ6Y2FsYygxMDAlIC0gdmFyKC0taGVhZGVyLWhlaWdodCkpO3Bvc2l0aW9uOi13ZWJraXQtc3RpY2t5O3Bvc2l0aW9uOnN0aWNreTtsZWZ0OjA7d2lkdGg6Y2FsYyh2YXIoLS1uYXYtd2lkdGgpICsgdmFyKC0taW5pdGlhbC1uYXYtd2lkdGgpICsgdmFyKC0tZXgtbmF2LXdpZHRoKSArIHZhcigtLWJ0bi1uYXYtd2lkdGgpKTtoZWlnaHQ6YXV0bzt6LWluZGV4OjI7Ym9yZGVyLXJpZ2h0OjFweCBzb2xpZCAjYjBiZWM1O292ZXJmbG93OnZpc2libGU7Ym94LXNoYWRvdzowIDJweCA0cHggLTFweCByZ2JhKDAsMCwwLC4yKSwwIDRweCA1cHggMCByZ2JhKDAsMCwwLC4xNCksMCAxcHggMTBweCAwIHJnYmEoMCwwLDAsLjEyKX0uY2FwaWJhcmEgbmF2LmxlZnQgLmNoaWxkLW5hdi1pdGVtLC5jYXBpYmFyYSBuYXYubGVmdCAubmF2LWl0ZW17d2lkdGg6dmFyKC0tbmF2LXdpZHRoKX0uY2FwaWJhcmEgbmF2LmxlZnQgLmRldGFpbC1uYXYtaXRlbXttYXgtd2lkdGg6MzAwcHg7d2lkdGg6LXdlYmtpdC1tYXgtY29udGVudDt3aWR0aDotbW96LW1heC1jb250ZW50O3dpZHRoOm1heC1jb250ZW50O21pbi1oZWlnaHQ6NzBweDtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjNyZW07dG9wOjA7Ym9yZGVyOjFweCBzb2xpZCBncmV5O3otaW5kZXg6Mjtib3JkZXItcmFkaXVzOjVweDtwYWRkaW5nOjE2cHg7dHJhbnNpdGlvbjphbGwgLjNzIGVhc2U7ZmxleC1mbG93OmNvbHVtbiBub3dyYXA7Ym94LXNoYWRvdzowIDZweCA2cHggLTNweCByZ2JhKDAsMCwwLC4yKSwwIDEwcHggMTRweCAxcHggcmdiYSgwLDAsMCwuMTQpLDAgNHB4IDE4cHggM3B4IHJnYmEoMCwwLDAsLjEyKTt0cmFuc2Zvcm06dHJhbnNsYXRlWShjYWxjKC41cmVtICsgdmFyKC0taXRlbS1oZWlnaHQpKSl9LmNhcGliYXJhIG5hdi5sZWZ0IC5kZXRhaWwtbmF2LWl0ZW0udG8tYm90dG9te3RyYW5zZm9ybTp0cmFuc2xhdGVZKGNhbGMoLTEwMCUgLSAuNXJlbSkpfS5jYXBpYmFyYSBuYXYubGVmdCAuZGV0YWlsLW5hdi1pdGVtIC5oZWFkZXItZGV0YWlsIC50aXRsZXtmb250LXNpemU6MS4xMjVlbTtmb250LXdlaWdodDo3MDA7bWFyZ2luLWJvdHRvbTo4cHg7bWF4LXdpZHRoOmNhbGMoMTAwJSAtIDgwcHgpfS5jYXBpYmFyYSBuYXYubGVmdCAuZGV0YWlsLW5hdi1pdGVtIC5oZWFkZXItZGV0YWlsIC5zdWJ0aXRsZXtmb250LXNpemU6Ljg3NTttYXJnaW4tYm90dG9tOjhweH0uY2FwaWJhcmEgbmF2LmxlZnQgLmRldGFpbC1uYXYtaXRlbSAuaGVhZGVyLWRldGFpbCAuaGVhZGVyLWNoaXB7cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6MTZweDt0b3A6MTZweDtwYWRkaW5nOjJweCA4cHg7Ym9yZGVyOjNweCBzb2xpZCBncmV5O2JvcmRlci1yYWRpdXM6NXB4fS5jYXBpYmFyYSBuYXYubGVmdCAuZGV0YWlsLW5hdi1pdGVtIC5kZXRhaWwtY29udGFpbmVyPmRpdnttYXJnaW46NnB4IDB9LmNhcGliYXJhIG5hdi5sZWZ0IC5pbml0aWFsLW5hdi1saXN0e3dpZHRoOnZhcigtLWluaXRpYWwtbmF2LXdpZHRoKTtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OnZhcigtLW5hdi13aWR0aCk7dG9wOjA7b3ZlcmZsb3c6aGlkZGVuO2Rpc3BsYXk6YmxvY2t9LmNhcGliYXJhIG5hdi5sZWZ0IC5pbml0aWFsLW5hdi1saXN0IC5jaGlsZC1pbml0aWFsLW5hdi1pdGVtLC5jYXBpYmFyYSBuYXYubGVmdCAuaW5pdGlhbC1uYXYtbGlzdCAuaW5pdGlhbC1uYXYtaXRlbXtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjYjBiZWM1O2hlaWdodDp2YXIoLS1pdGVtLWhlaWdodCk7Ym94LXNpemluZzpib3JkZXItYm94O2Rpc3BsYXk6ZmxleDtsaW5lLWhlaWdodDozNHB4fS5jYXBpYmFyYSBuYXYubGVmdCAuaW5pdGlhbC1uYXYtbGlzdCAuY2hpbGQtaW5pdGlhbC1uYXYtaXRlbSAuaXRlbS10aXRsZSwuY2FwaWJhcmEgbmF2LmxlZnQgLmluaXRpYWwtbmF2LWxpc3QgLmluaXRpYWwtbmF2LWl0ZW0gLml0ZW0tdGl0bGV7ZmxleDoxIDAgYXV0bztwYWRkaW5nOjRweCA4cHh9LmNhcGliYXJhIG5hdi5sZWZ0IC5pbml0aWFsLW5hdi1saXN0IC5jaGlsZC1pbml0aWFsLW5hdi1pdGVtIC5pdGVtLWNvbCwuY2FwaWJhcmEgbmF2LmxlZnQgLmluaXRpYWwtbmF2LWxpc3QgLmluaXRpYWwtbmF2LWl0ZW0gLml0ZW0tY29se2ZsZXg6MCAwIHZhcigtLW5hdi1pdGVtLWNvbC13aWR0aCk7dGV4dC1hbGlnbjpjZW50ZXI7cGFkZGluZzo0cHggOHB4fS5jYXBpYmFyYSBuYXYubGVmdCAuaW5pdGlhbC1uYXYtbGlzdCAuY2hpbGQtaW5pdGlhbC1uYXYtaXRlbSAuaXRlbS1jb2wuaGFzLWlucHV0LC5jYXBpYmFyYSBuYXYubGVmdCAuaW5pdGlhbC1uYXYtbGlzdCAuaW5pdGlhbC1uYXYtaXRlbSAuaXRlbS1jb2wuaGFzLWlucHV0e3BhZGRpbmc6MH0uY2FwaWJhcmEgbmF2LmxlZnQgLmluaXRpYWwtbmF2LWxpc3QgLmNoaWxkLWluaXRpYWwtbmF2LWl0ZW0gLml0ZW0tY29sLmhhcy1pbnB1dD4uaG91ci1pbnB1dCwuY2FwaWJhcmEgbmF2LmxlZnQgLmluaXRpYWwtbmF2LWxpc3QgLmluaXRpYWwtbmF2LWl0ZW0gLml0ZW0tY29sLmhhcy1pbnB1dD4uaG91ci1pbnB1dHtmb250LXNpemU6Ljg3NWVtO3dpZHRoOmNhbGMoMTAwJSAtIDhweCk7Ym9yZGVyOjFweCBzb2xpZCBncmV5O2JvcmRlci1yYWRpdXM6M3B4O2hlaWdodDoyNHB4fS5jYXBpYmFyYSBuYXYubGVmdCAuaW5pdGlhbC1uYXYtbGlzdCAuY2hpbGQtaW5pdGlhbC1uYXYtaXRlbSAuaXRlbS1jb2wuaGFzLWlucHV0PmlucHV0LC5jYXBpYmFyYSBuYXYubGVmdCAuaW5pdGlhbC1uYXYtbGlzdCAuaW5pdGlhbC1uYXYtaXRlbSAuaXRlbS1jb2wuaGFzLWlucHV0PmlucHV0e3RleHQtYWxpZ246Y2VudGVyO2ZvbnQtc2l6ZTouODc1ZW07d2lkdGg6Y2FsYygxMDAlIC0gOHB4KTtkaXNwbGF5OmJsb2NrO2JvcmRlcjoxcHggc29saWQgZ3JleTtib3JkZXItcmFkaXVzOjNweDtoZWlnaHQ6MjRweDttYXJnaW46OHB4IDRweCA0cHg7YmFja2dyb3VuZDpoc2xhKDAsMCUsMTAwJSwuMil9LmNhcGliYXJhIG5hdi5sZWZ0IC5pbml0aWFsLW5hdi1saXN0IC5jaGlsZC1pbml0aWFsLW5hdi1pdGVtIC5pdGVtLWNvbC5oYXMtaW5wdXQ+aW5wdXQ6YWN0aXZlLC5jYXBpYmFyYSBuYXYubGVmdCAuaW5pdGlhbC1uYXYtbGlzdCAuY2hpbGQtaW5pdGlhbC1uYXYtaXRlbSAuaXRlbS1jb2wuaGFzLWlucHV0PmlucHV0OmZvY3VzLC5jYXBpYmFyYSBuYXYubGVmdCAuaW5pdGlhbC1uYXYtbGlzdCAuaW5pdGlhbC1uYXYtaXRlbSAuaXRlbS1jb2wuaGFzLWlucHV0PmlucHV0OmFjdGl2ZSwuY2FwaWJhcmEgbmF2LmxlZnQgLmluaXRpYWwtbmF2LWxpc3QgLmluaXRpYWwtbmF2LWl0ZW0gLml0ZW0tY29sLmhhcy1pbnB1dD5pbnB1dDpmb2N1c3tiYWNrZ3JvdW5kOmhzbGEoMCwwJSwxMDAlLC44KX0uY2FwaWJhcmEgbmF2LmxlZnQgLmV4dGVuZC1uYXYtbGlzdHt3aWR0aDp2YXIoLS1leC1uYXYtd2lkdGgpO3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6Y2FsYyh2YXIoLS1uYXYtd2lkdGgpICsgdmFyKC0taW5pdGlhbC1uYXYtd2lkdGgpKTt0b3A6MDtvdmVyZmxvdzpoaWRkZW47ZGlzcGxheTpibG9ja30uY2FwaWJhcmEgbmF2LmxlZnQgLmV4dGVuZC1uYXYtbGlzdCAuY2hpbGQtZXgtbmF2LWl0ZW0sLmNhcGliYXJhIG5hdi5sZWZ0IC5leHRlbmQtbmF2LWxpc3QgLmV4LW5hdi1pdGVte2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNiMGJlYzU7aGVpZ2h0OnZhcigtLWl0ZW0taGVpZ2h0KTtib3gtc2l6aW5nOmJvcmRlci1ib3g7ZGlzcGxheTpmbGV4O2xpbmUtaGVpZ2h0OjEuNzVyZW19LmNhcGliYXJhIG5hdi5sZWZ0IC5leHRlbmQtbmF2LWxpc3QgLmNoaWxkLWV4LW5hdi1pdGVtIC5pdGVtLXRpdGxlLC5jYXBpYmFyYSBuYXYubGVmdCAuZXh0ZW5kLW5hdi1saXN0IC5leC1uYXYtaXRlbSAuaXRlbS10aXRsZXtmbGV4OjEgMCBhdXRvO3BhZGRpbmc6NHB4IDhweH0uY2FwaWJhcmEgbmF2LmxlZnQgLmV4dGVuZC1uYXYtbGlzdCAuY2hpbGQtZXgtbmF2LWl0ZW0gLml0ZW0tY29sLC5jYXBpYmFyYSBuYXYubGVmdCAuZXh0ZW5kLW5hdi1saXN0IC5leC1uYXYtaXRlbSAuaXRlbS1jb2x7ZmxleDowIDAgdmFyKC0tbmF2LWl0ZW0tY29sLXdpZHRoKTt0ZXh0LWFsaWduOmNlbnRlcjtwYWRkaW5nOjRweCA4cHh9LmNhcGliYXJhIG5hdi5sZWZ0IC5leHRlbmQtbmF2LWxpc3QgLmNoaWxkLWV4LW5hdi1pdGVtIC5pdGVtLWNvbC5oYXMtaW5wdXQsLmNhcGliYXJhIG5hdi5sZWZ0IC5leHRlbmQtbmF2LWxpc3QgLmV4LW5hdi1pdGVtIC5pdGVtLWNvbC5oYXMtaW5wdXR7cGFkZGluZzowfS5jYXBpYmFyYSBuYXYubGVmdCAuZXh0ZW5kLW5hdi1saXN0IC5jaGlsZC1leC1uYXYtaXRlbSAuaXRlbS1jb2wuaGFzLWlucHV0PmlucHV0LC5jYXBpYmFyYSBuYXYubGVmdCAuZXh0ZW5kLW5hdi1saXN0IC5leC1uYXYtaXRlbSAuaXRlbS1jb2wuaGFzLWlucHV0PmlucHV0e3RleHQtYWxpZ246Y2VudGVyO2ZvbnQtc2l6ZTouODc1ZW07d2lkdGg6Y2FsYygxMDAlIC0gOHB4KTtkaXNwbGF5OmJsb2NrO2JvcmRlcjoxcHggc29saWQgZ3JleTtib3JkZXItcmFkaXVzOjNweDtoZWlnaHQ6MjRweDttYXJnaW46OHB4IDRweCA0cHg7YmFja2dyb3VuZDpoc2xhKDAsMCUsMTAwJSwuMil9LmNhcGliYXJhIG5hdi5sZWZ0IC5leHRlbmQtbmF2LWxpc3QgLmNoaWxkLWV4LW5hdi1pdGVtIC5pdGVtLWNvbC5oYXMtaW5wdXQ+aW5wdXQ6YWN0aXZlLC5jYXBpYmFyYSBuYXYubGVmdCAuZXh0ZW5kLW5hdi1saXN0IC5jaGlsZC1leC1uYXYtaXRlbSAuaXRlbS1jb2wuaGFzLWlucHV0PmlucHV0OmZvY3VzLC5jYXBpYmFyYSBuYXYubGVmdCAuZXh0ZW5kLW5hdi1saXN0IC5leC1uYXYtaXRlbSAuaXRlbS1jb2wuaGFzLWlucHV0PmlucHV0OmFjdGl2ZSwuY2FwaWJhcmEgbmF2LmxlZnQgLmV4dGVuZC1uYXYtbGlzdCAuZXgtbmF2LWl0ZW0gLml0ZW0tY29sLmhhcy1pbnB1dD5pbnB1dDpmb2N1c3tiYWNrZ3JvdW5kOmhzbGEoMCwwJSwxMDAlLC44KX0uY2FwaWJhcmEgbmF2LmxlZnQgLmJ0bi1uYXYtbGlzdHtsZWZ0OmNhbGModmFyKC0tbmF2LXdpZHRoKSArIHZhcigtLWluaXRpYWwtbmF2LXdpZHRoKSArIHZhcigtLWV4LW5hdi13aWR0aCkpO3dpZHRoOnZhcigtLWJ0bi1uYXYtd2lkdGgpO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO292ZXJmbG93OmhpZGRlbn0uY2FwaWJhcmEgbmF2LmxlZnQgLmJ0bi1uYXYtbGlzdCAuYnRuLWNoaWxkLW5hdi1pdGVtIC5idG4tbmF2LWl0ZW0tY29udGVudCwuY2FwaWJhcmEgbmF2LmxlZnQgLmJ0bi1uYXYtbGlzdCAuYnRuLW5hdi1pdGVtIC5idG4tbmF2LWl0ZW0tY29udGVudHtoZWlnaHQ6dmFyKC0taXRlbS1oZWlnaHQpO3dpZHRoOmluaGVyaXQ7cGFkZGluZzo0cHggNnB4O2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNiMGJlYzU7dGV4dC1hbGlnbjpyaWdodH0uY2FwaWJhcmEgbmF2LmxlZnQgLm5hdi1pdGVtLXRvdGFsLWZvb3RlcntwYWRkaW5nLXRvcDozcHh9LmNhcGliYXJhIG5hdiAuYnRuLW5hdi1pdGVtLnBhcmVudCwuY2FwaWJhcmEgbmF2IC5leC1uYXYtaXRlbS5wYXJlbnQsLmNhcGliYXJhIG5hdiAuaW5pdGlhbC1uYXYtaXRlbS5wYXJlbnQsLmNhcGliYXJhIG5hdiAubmF2LWl0ZW0tY29udGFpbmVyLnBhcmVudHtiYWNrZ3JvdW5kOnJnYmEoMjUsMTE4LDIxMCwuMSl9LmNhcGliYXJhIG5hdiAuYnRuLW5hdi1pdGVtLnBhcmVudD4uaXRlbS10aXRsZSwuY2FwaWJhcmEgbmF2IC5leC1uYXYtaXRlbS5wYXJlbnQ+Lml0ZW0tdGl0bGUsLmNhcGliYXJhIG5hdiAuaW5pdGlhbC1uYXYtaXRlbS5wYXJlbnQ+Lml0ZW0tdGl0bGUsLmNhcGliYXJhIG5hdiAubmF2LWl0ZW0tY29udGFpbmVyLnBhcmVudD4uaXRlbS10aXRsZXttYXgtd2lkdGg6Y2FsYyh2YXIoLS1uYXYtd2lkdGgpICsgdmFyKC0tZXgtbmF2LXdpZHRoKSArIHZhcigtLWluaXRpYWwtbmF2LXdpZHRoKSArIHZhcigtLWJ0bi1uYXYtd2lkdGgpIC0gNjBweCk7d2lkdGg6YXV0b30uY2FwaWJhcmEgbmF2IC5uYXYtaXRlbS1saXN0IC5jaGlsZC1uYXYtaXRlbSwuY2FwaWJhcmEgbmF2IC5uYXYtaXRlbS1saXN0IC5uYXYtaXRlbXttaW4taGVpZ2h0OnZhcigtLWl0ZW0taGVpZ2h0KTtib3gtc2l6aW5nOmJvcmRlci1ib3g7cG9zaXRpb246cmVsYXRpdmV9LmNhcGliYXJhIG5hdiAubmF2LWl0ZW0tbGlzdCAuY2hpbGQtbmF2LWl0ZW0gLm5hdi1pdGVtLWNvbnRhaW5lciwuY2FwaWJhcmEgbmF2IC5uYXYtaXRlbS1saXN0IC5uYXYtaXRlbSAubmF2LWl0ZW0tY29udGFpbmVye2Rpc3BsYXk6ZmxleDtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjYjBiZWM1O2hlaWdodDp2YXIoLS1pdGVtLWhlaWdodCl9LmNhcGliYXJhIG5hdiAubmF2LWl0ZW0tbGlzdCAuY2hpbGQtbmF2LWl0ZW0gLm5hdi1pdGVtLWNvbnRhaW5lciAudHJlZS1pY29uLC5jYXBpYmFyYSBuYXYgLm5hdi1pdGVtLWxpc3QgLm5hdi1pdGVtIC5uYXYtaXRlbS1jb250YWluZXIgLnRyZWUtaWNvbnt0cmFuc2l0aW9uOmFsbCAuNXMgZWFzZTtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O2JvcmRlcjpub25lO3dpZHRoOjM0cHg7ZmxleDowIDAgMzRweDtmb250LXNpemU6MS41ZW07dGV4dC1hbGlnbjpjZW50ZXI7Y3Vyc29yOnBvaW50ZXJ9LmNhcGliYXJhIG5hdiAubmF2LWl0ZW0tbGlzdCAuY2hpbGQtbmF2LWl0ZW0gLm5hdi1pdGVtLWNvbnRhaW5lciAubmF2LWl0ZW0taWNvbiwuY2FwaWJhcmEgbmF2IC5uYXYtaXRlbS1saXN0IC5uYXYtaXRlbSAubmF2LWl0ZW0tY29udGFpbmVyIC5uYXYtaXRlbS1pY29ue2ZsZXg6MCAwIDM0cHg7Zm9udC1zaXplOjEuMTI1ZW07dmVydGljYWwtYWxpZ246bWlkZGxlO3RleHQtYWxpZ246Y2VudGVyO2xpbmUtaGVpZ2h0OjQwcHg7bWFyZ2luLXRvcDoxMnB4fS5jYXBpYmFyYSBuYXYgLm5hdi1pdGVtLWxpc3QgLmNoaWxkLW5hdi1pdGVtIC5uYXYtaXRlbS1jb250YWluZXIgLm5hdi1pdGVtLWljb24gcGF0aCwuY2FwaWJhcmEgbmF2IC5uYXYtaXRlbS1saXN0IC5uYXYtaXRlbSAubmF2LWl0ZW0tY29udGFpbmVyIC5uYXYtaXRlbS1pY29uIHBhdGh7d2lkdGg6MjBweDtoZWlnaHQ6MjBweH0uY2FwaWJhcmEgbmF2IC5uYXYtaXRlbS1saXN0IC5jaGlsZC1uYXYtaXRlbSAubmF2LWl0ZW0tY29udGFpbmVyIC5pdGVtLXRpdGxlLC5jYXBpYmFyYSBuYXYgLm5hdi1pdGVtLWxpc3QgLm5hdi1pdGVtIC5uYXYtaXRlbS1jb250YWluZXIgLml0ZW0tdGl0bGV7ZmxleDoxIDEgYXV0bztkaXNwbGF5OmdyaWQ7Zm9udC1zaXplOjFlbTtsaW5lLWhlaWdodDozNHB4O3BhZGRpbmc6NHB4IDhweH0uY2FwaWJhcmEgbmF2IC5uYXYtaXRlbS1saXN0IC5jaGlsZC1uYXYtaXRlbSAubmF2LWl0ZW0tY29udGFpbmVyIC5pdGVtLXRpdGxlLmZ1bGwtd2lkdGgsLmNhcGliYXJhIG5hdiAubmF2LWl0ZW0tbGlzdCAubmF2LWl0ZW0gLm5hdi1pdGVtLWNvbnRhaW5lciAuaXRlbS10aXRsZS5mdWxsLXdpZHRoe2ZsZXg6MSAwIGF1dG87ZGlzcGxheTppbmxpbmUtYmxvY2t9LmNhcGliYXJhIG5hdiAubmF2LWl0ZW0tbGlzdCAuY2hpbGQtbmF2LWl0ZW0gLm5hdi1pdGVtLWNvbnRhaW5lciAuaXRlbS10aXRsZS5jbGlja2VhYmxlLC5jYXBpYmFyYSBuYXYgLm5hdi1pdGVtLWxpc3QgLm5hdi1pdGVtIC5uYXYtaXRlbS1jb250YWluZXIgLml0ZW0tdGl0bGUuY2xpY2tlYWJsZXtjdXJzb3I6cG9pbnRlcn0uY2FwaWJhcmEgbmF2IC5uYXYtaXRlbS1saXN0IC5jaGlsZC1uYXYtaXRlbSAubmF2LWl0ZW0tY29udGFpbmVyIC5pdGVtLXRpdGxlLmNsaWNrZWFibGU6aG92ZXIsLmNhcGliYXJhIG5hdiAubmF2LWl0ZW0tbGlzdCAubmF2LWl0ZW0gLm5hdi1pdGVtLWNvbnRhaW5lciAuaXRlbS10aXRsZS5jbGlja2VhYmxlOmhvdmVye2JhY2tncm91bmQ6aHNsYSgwLDAlLDM5LjIlLC4yKSFpbXBvcnRhbnQ7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZX0uY2FwaWJhcmEuZXh0ZW5kZWQtcmlnaHQgbmF2LnJpZ2h0e2Rpc3BsYXk6YmxvY2t9LmNhcGliYXJhLmhlYWRlci1leHRlbmRlZCBuYXYubGVmdHttaW4taGVpZ2h0OmNhbGMoMTAwJSAtIHZhcigtLWhlYWRlci1oZWlnaHQpICsgdmFyKC0tZXgtaGVhZGVyLWhlaWdodCkpfS5jYXBpYmFyYS5oZWFkZXItZXh0ZW5kZWQgbmF2LnJpZ2h0e3RvcDpjYWxjKHZhcigtLWhlYWRlci1oZWlnaHQpICsgdmFyKC0taGVhZGVyLXRvcC1oZWlnaHQpICsgdmFyKC0tZXgtaGVhZGVyLWhlaWdodCkpO2hlaWdodDpjYWxjKDEwMCUgLSB2YXIoLS1oZWFkZXItaGVpZ2h0KSAtIHZhcigtLWhlYWRlci10b3AtaGVpZ2h0KSAtIHZhcigtLWV4LWhlYWRlci1oZWlnaHQpKX0uY2FwaWJhcmEgbmF2LmxlZnQsLmNhcGliYXJhIG5hdi5yaWdodCwuY2FwaWJhcmEgbmF2LnJpZ2h0IC5idXR0b24tc2VjdGlvbntiYWNrZ3JvdW5kOiNmYWZhZmF9LmNhcGliYXJhIG5hdi5sZWZ0IC5kZXRhaWwtbmF2LWl0ZW17Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjIpO2JhY2tncm91bmQ6I2ZmZn0uY2FwaWJhcmEgbmF2LmxlZnQgLmRldGFpbC1uYXYtaXRlbSAuaGVhZGVyLWNoaXAucmVkLWxpZ2h0e2JvcmRlci1jb2xvcjojZDMyZjJmfS5jYXBpYmFyYSBuYXYubGVmdCAuZGV0YWlsLW5hdi1pdGVtIC5oZWFkZXItY2hpcC55ZWxsb3ctbGlnaHR7Ym9yZGVyLWNvbG9yOiNmZGQ4MzV9LmNhcGliYXJhIG5hdi5sZWZ0IC5kZXRhaWwtbmF2LWl0ZW0gLmhlYWRlci1jaGlwLmdyZWVuLWxpZ2h0e2JvcmRlci1jb2xvcjojMmU3ZDMyfS5jYXBpYmFyYSBuYXYgLm5hdi1pdGVtLWxpc3QgLmNoaWxkLW5hdi1pdGVtIC5uYXYtaXRlbS1jb250YWluZXIgLnRyZWUtaWNvbiwuY2FwaWJhcmEgbmF2IC5uYXYtaXRlbS1saXN0IC5uYXYtaXRlbSAubmF2LWl0ZW0tY29udGFpbmVyIC50cmVlLWljb257Y29sb3I6IzM3NDc0Zn0uY2FwaWJhcmEgbmF2IC5uYXYtaXRlbS1saXN0IC5jaGlsZC1uYXYtaXRlbSAubmF2LWl0ZW0tY29udGFpbmVyIC5uYXYtaXRlbS1pY29uLC5jYXBpYmFyYSBuYXYgLm5hdi1pdGVtLWxpc3QgLm5hdi1pdGVtIC5uYXYtaXRlbS1jb250YWluZXIgLm5hdi1pdGVtLWljb257Y29sb3I6cmdiYSg1NSw3MSw3OSwuMil9LmNhcGliYXJhLmRhcmstdGhlbWUgbmF2LnJpZ2h0LC5jYXBpYmFyYS5kYXJrLXRoZW1lIG5hdi5yaWdodCAuYnV0dG9uLXNlY3Rpb257YmFja2dyb3VuZDojMjIyODM3fS5jYXBpYmFyYS5kYXJrLXRoZW1lIG5hdi5sZWZ0e2JhY2tncm91bmQ6IzIyMjgzNztib3JkZXItY29sb3I6cmdiYSg2NCw3OCwxMDUsLjYpfS5jYXBpYmFyYS5kYXJrLXRoZW1lIG5hdi5sZWZ0IC5kZXRhaWwtbmF2LWl0ZW17Ym9yZGVyLWNvbG9yOiM0MDRlNjk7YmFja2dyb3VuZDojMjIyODM3fS5jYXBpYmFyYS5kYXJrLXRoZW1lIG5hdi5sZWZ0IC5kZXRhaWwtbmF2LWl0ZW0gLmhlYWRlci1jaGlwe2NvbG9yOiNmMGYwZjB9LmNhcGliYXJhLmRhcmstdGhlbWUgbmF2LmxlZnQgLmRldGFpbC1uYXYtaXRlbSAuaGVhZGVyLWNoaXAucmVkLWxpZ2h0e2JvcmRlci1jb2xvcjojYjcxYzFjfS5jYXBpYmFyYS5kYXJrLXRoZW1lIG5hdi5sZWZ0IC5kZXRhaWwtbmF2LWl0ZW0gLmhlYWRlci1jaGlwLnllbGxvdy1saWdodHtib3JkZXItY29sb3I6I2ZiOGMwMH0uY2FwaWJhcmEuZGFyay10aGVtZSBuYXYubGVmdCAuZGV0YWlsLW5hdi1pdGVtIC5oZWFkZXItY2hpcC5ncmVlbi1saWdodHtib3JkZXItY29sb3I6IzM4OGUzY30uY2FwaWJhcmEuZGFyay10aGVtZSBuYXYubGVmdCAuZXh0ZW5kLW5hdi1saXN0IC5jaGlsZC1leC1uYXYtaXRlbSwuY2FwaWJhcmEuZGFyay10aGVtZSBuYXYubGVmdCAuZXh0ZW5kLW5hdi1saXN0IC5jaGlsZC1pbml0aWFsLW5hdi1pdGVtLC5jYXBpYmFyYS5kYXJrLXRoZW1lIG5hdi5sZWZ0IC5leHRlbmQtbmF2LWxpc3QgLmV4LW5hdi1pdGVtLC5jYXBpYmFyYS5kYXJrLXRoZW1lIG5hdi5sZWZ0IC5leHRlbmQtbmF2LWxpc3QgLmluaXRpYWwtbmF2LWl0ZW0sLmNhcGliYXJhLmRhcmstdGhlbWUgbmF2LmxlZnQgLmluaXRpYWwtbmF2LWxpc3QgLmNoaWxkLWV4LW5hdi1pdGVtLC5jYXBpYmFyYS5kYXJrLXRoZW1lIG5hdi5sZWZ0IC5pbml0aWFsLW5hdi1saXN0IC5jaGlsZC1pbml0aWFsLW5hdi1pdGVtLC5jYXBpYmFyYS5kYXJrLXRoZW1lIG5hdi5sZWZ0IC5pbml0aWFsLW5hdi1saXN0IC5leC1uYXYtaXRlbSwuY2FwaWJhcmEuZGFyay10aGVtZSBuYXYubGVmdCAuaW5pdGlhbC1uYXYtbGlzdCAuaW5pdGlhbC1uYXYtaXRlbXtib3JkZXItY29sb3I6cmdiYSg2NCw3OCwxMDUsLjYpfS5jYXBpYmFyYS5kYXJrLXRoZW1lIG5hdi5sZWZ0IC5leHRlbmQtbmF2LWxpc3QgLmNoaWxkLWV4LW5hdi1pdGVtIC5pdGVtLWNvbC5oYXMtaW5wdXQgLmhvdXItaW5wdXQsLmNhcGliYXJhLmRhcmstdGhlbWUgbmF2LmxlZnQgLmV4dGVuZC1uYXYtbGlzdCAuY2hpbGQtZXgtbmF2LWl0ZW0gLml0ZW0tY29sLmhhcy1pbnB1dCBpbnB1dCwuY2FwaWJhcmEuZGFyay10aGVtZSBuYXYubGVmdCAuZXh0ZW5kLW5hdi1saXN0IC5jaGlsZC1pbml0aWFsLW5hdi1pdGVtIC5pdGVtLWNvbC5oYXMtaW5wdXQgLmhvdXItaW5wdXQsLmNhcGliYXJhLmRhcmstdGhlbWUgbmF2LmxlZnQgLmV4dGVuZC1uYXYtbGlzdCAuY2hpbGQtaW5pdGlhbC1uYXYtaXRlbSAuaXRlbS1jb2wuaGFzLWlucHV0IGlucHV0LC5jYXBpYmFyYS5kYXJrLXRoZW1lIG5hdi5sZWZ0IC5leHRlbmQtbmF2LWxpc3QgLmV4LW5hdi1pdGVtIC5pdGVtLWNvbC5oYXMtaW5wdXQgLmhvdXItaW5wdXQsLmNhcGliYXJhLmRhcmstdGhlbWUgbmF2LmxlZnQgLmV4dGVuZC1uYXYtbGlzdCAuZXgtbmF2LWl0ZW0gLml0ZW0tY29sLmhhcy1pbnB1dCBpbnB1dCwuY2FwaWJhcmEuZGFyay10aGVtZSBuYXYubGVmdCAuZXh0ZW5kLW5hdi1saXN0IC5pbml0aWFsLW5hdi1pdGVtIC5pdGVtLWNvbC5oYXMtaW5wdXQgLmhvdXItaW5wdXQsLmNhcGliYXJhLmRhcmstdGhlbWUgbmF2LmxlZnQgLmV4dGVuZC1uYXYtbGlzdCAuaW5pdGlhbC1uYXYtaXRlbSAuaXRlbS1jb2wuaGFzLWlucHV0IGlucHV0LC5jYXBpYmFyYS5kYXJrLXRoZW1lIG5hdi5sZWZ0IC5pbml0aWFsLW5hdi1saXN0IC5jaGlsZC1leC1uYXYtaXRlbSAuaXRlbS1jb2wuaGFzLWlucHV0IC5ob3VyLWlucHV0LC5jYXBpYmFyYS5kYXJrLXRoZW1lIG5hdi5sZWZ0IC5pbml0aWFsLW5hdi1saXN0IC5jaGlsZC1leC1uYXYtaXRlbSAuaXRlbS1jb2wuaGFzLWlucHV0IGlucHV0LC5jYXBpYmFyYS5kYXJrLXRoZW1lIG5hdi5sZWZ0IC5pbml0aWFsLW5hdi1saXN0IC5jaGlsZC1pbml0aWFsLW5hdi1pdGVtIC5pdGVtLWNvbC5oYXMtaW5wdXQgLmhvdXItaW5wdXQsLmNhcGliYXJhLmRhcmstdGhlbWUgbmF2LmxlZnQgLmluaXRpYWwtbmF2LWxpc3QgLmNoaWxkLWluaXRpYWwtbmF2LWl0ZW0gLml0ZW0tY29sLmhhcy1pbnB1dCBpbnB1dCwuY2FwaWJhcmEuZGFyay10aGVtZSBuYXYubGVmdCAuaW5pdGlhbC1uYXYtbGlzdCAuZXgtbmF2LWl0ZW0gLml0ZW0tY29sLmhhcy1pbnB1dCAuaG91ci1pbnB1dCwuY2FwaWJhcmEuZGFyay10aGVtZSBuYXYubGVmdCAuaW5pdGlhbC1uYXYtbGlzdCAuZXgtbmF2LWl0ZW0gLml0ZW0tY29sLmhhcy1pbnB1dCBpbnB1dCwuY2FwaWJhcmEuZGFyay10aGVtZSBuYXYubGVmdCAuaW5pdGlhbC1uYXYtbGlzdCAuaW5pdGlhbC1uYXYtaXRlbSAuaXRlbS1jb2wuaGFzLWlucHV0IC5ob3VyLWlucHV0LC5jYXBpYmFyYS5kYXJrLXRoZW1lIG5hdi5sZWZ0IC5pbml0aWFsLW5hdi1saXN0IC5pbml0aWFsLW5hdi1pdGVtIC5pdGVtLWNvbC5oYXMtaW5wdXQgaW5wdXR7YmFja2dyb3VuZDojNDA0ZTY5O2NvbG9yOiNmMGYwZjB9LmNhcGliYXJhLmRhcmstdGhlbWUgbmF2LmxlZnQgLmV4dGVuZC1uYXYtbGlzdCAuY2hpbGQtZXgtbmF2LWl0ZW0gLml0ZW0tY29sLmhhcy1pbnB1dCAuaG91ci1pbnB1dDphY3RpdmUsLmNhcGliYXJhLmRhcmstdGhlbWUgbmF2LmxlZnQgLmV4dGVuZC1uYXYtbGlzdCAuY2hpbGQtZXgtbmF2LWl0ZW0gLml0ZW0tY29sLmhhcy1pbnB1dCAuaG91ci1pbnB1dDpmb2N1cywuY2FwaWJhcmEuZGFyay10aGVtZSBuYXYubGVmdCAuZXh0ZW5kLW5hdi1saXN0IC5jaGlsZC1leC1uYXYtaXRlbSAuaXRlbS1jb2wuaGFzLWlucHV0IGlucHV0OmFjdGl2ZSwuY2FwaWJhcmEuZGFyay10aGVtZSBuYXYubGVmdCAuZXh0ZW5kLW5hdi1saXN0IC5jaGlsZC1leC1uYXYtaXRlbSAuaXRlbS1jb2wuaGFzLWlucHV0IGlucHV0OmZvY3VzLC5jYXBpYmFyYS5kYXJrLXRoZW1lIG5hdi5sZWZ0IC5leHRlbmQtbmF2LWxpc3QgLmNoaWxkLWluaXRpYWwtbmF2LWl0ZW0gLml0ZW0tY29sLmhhcy1pbnB1dCAuaG91ci1pbnB1dDphY3RpdmUsLmNhcGliYXJhLmRhcmstdGhlbWUgbmF2LmxlZnQgLmV4dGVuZC1uYXYtbGlzdCAuY2hpbGQtaW5pdGlhbC1uYXYtaXRlbSAuaXRlbS1jb2wuaGFzLWlucHV0IC5ob3VyLWlucHV0OmZvY3VzLC5jYXBpYmFyYS5kYXJrLXRoZW1lIG5hdi5sZWZ0IC5leHRlbmQtbmF2LWxpc3QgLmNoaWxkLWluaXRpYWwtbmF2LWl0ZW0gLml0ZW0tY29sLmhhcy1pbnB1dCBpbnB1dDphY3RpdmUsLmNhcGliYXJhLmRhcmstdGhlbWUgbmF2LmxlZnQgLmV4dGVuZC1uYXYtbGlzdCAuY2hpbGQtaW5pdGlhbC1uYXYtaXRlbSAuaXRlbS1jb2wuaGFzLWlucHV0IGlucHV0OmZvY3VzLC5jYXBpYmFyYS5kYXJrLXRoZW1lIG5hdi5sZWZ0IC5leHRlbmQtbmF2LWxpc3QgLmV4LW5hdi1pdGVtIC5pdGVtLWNvbC5oYXMtaW5wdXQgLmhvdXItaW5wdXQ6YWN0aXZlLC5jYXBpYmFyYS5kYXJrLXRoZW1lIG5hdi5sZWZ0IC5leHRlbmQtbmF2LWxpc3QgLmV4LW5hdi1pdGVtIC5pdGVtLWNvbC5oYXMtaW5wdXQgLmhvdXItaW5wdXQ6Zm9jdXMsLmNhcGliYXJhLmRhcmstdGhlbWUgbmF2LmxlZnQgLmV4dGVuZC1uYXYtbGlzdCAuZXgtbmF2LWl0ZW0gLml0ZW0tY29sLmhhcy1pbnB1dCBpbnB1dDphY3RpdmUsLmNhcGliYXJhLmRhcmstdGhlbWUgbmF2LmxlZnQgLmV4dGVuZC1uYXYtbGlzdCAuZXgtbmF2LWl0ZW0gLml0ZW0tY29sLmhhcy1pbnB1dCBpbnB1dDpmb2N1cywuY2FwaWJhcmEuZGFyay10aGVtZSBuYXYubGVmdCAuZXh0ZW5kLW5hdi1saXN0IC5pbml0aWFsLW5hdi1pdGVtIC5pdGVtLWNvbC5oYXMtaW5wdXQgLmhvdXItaW5wdXQ6YWN0aXZlLC5jYXBpYmFyYS5kYXJrLXRoZW1lIG5hdi5sZWZ0IC5leHRlbmQtbmF2LWxpc3QgLmluaXRpYWwtbmF2LWl0ZW0gLml0ZW0tY29sLmhhcy1pbnB1dCAuaG91ci1pbnB1dDpmb2N1cywuY2FwaWJhcmEuZGFyay10aGVtZSBuYXYubGVmdCAuZXh0ZW5kLW5hdi1saXN0IC5pbml0aWFsLW5hdi1pdGVtIC5pdGVtLWNvbC5oYXMtaW5wdXQgaW5wdXQ6YWN0aXZlLC5jYXBpYmFyYS5kYXJrLXRoZW1lIG5hdi5sZWZ0IC5leHRlbmQtbmF2LWxpc3QgLmluaXRpYWwtbmF2LWl0ZW0gLml0ZW0tY29sLmhhcy1pbnB1dCBpbnB1dDpmb2N1cywuY2FwaWJhcmEuZGFyay10aGVtZSBuYXYubGVmdCAuaW5pdGlhbC1uYXYtbGlzdCAuY2hpbGQtZXgtbmF2LWl0ZW0gLml0ZW0tY29sLmhhcy1pbnB1dCAuaG91ci1pbnB1dDphY3RpdmUsLmNhcGliYXJhLmRhcmstdGhlbWUgbmF2LmxlZnQgLmluaXRpYWwtbmF2LWxpc3QgLmNoaWxkLWV4LW5hdi1pdGVtIC5pdGVtLWNvbC5oYXMtaW5wdXQgLmhvdXItaW5wdXQ6Zm9jdXMsLmNhcGliYXJhLmRhcmstdGhlbWUgbmF2LmxlZnQgLmluaXRpYWwtbmF2LWxpc3QgLmNoaWxkLWV4LW5hdi1pdGVtIC5pdGVtLWNvbC5oYXMtaW5wdXQgaW5wdXQ6YWN0aXZlLC5jYXBpYmFyYS5kYXJrLXRoZW1lIG5hdi5sZWZ0IC5pbml0aWFsLW5hdi1saXN0IC5jaGlsZC1leC1uYXYtaXRlbSAuaXRlbS1jb2wuaGFzLWlucHV0IGlucHV0OmZvY3VzLC5jYXBpYmFyYS5kYXJrLXRoZW1lIG5hdi5sZWZ0IC5pbml0aWFsLW5hdi1saXN0IC5jaGlsZC1pbml0aWFsLW5hdi1pdGVtIC5pdGVtLWNvbC5oYXMtaW5wdXQgLmhvdXItaW5wdXQ6YWN0aXZlLC5jYXBpYmFyYS5kYXJrLXRoZW1lIG5hdi5sZWZ0IC5pbml0aWFsLW5hdi1saXN0IC5jaGlsZC1pbml0aWFsLW5hdi1pdGVtIC5pdGVtLWNvbC5oYXMtaW5wdXQgLmhvdXItaW5wdXQ6Zm9jdXMsLmNhcGliYXJhLmRhcmstdGhlbWUgbmF2LmxlZnQgLmluaXRpYWwtbmF2LWxpc3QgLmNoaWxkLWluaXRpYWwtbmF2LWl0ZW0gLml0ZW0tY29sLmhhcy1pbnB1dCBpbnB1dDphY3RpdmUsLmNhcGliYXJhLmRhcmstdGhlbWUgbmF2LmxlZnQgLmluaXRpYWwtbmF2LWxpc3QgLmNoaWxkLWluaXRpYWwtbmF2LWl0ZW0gLml0ZW0tY29sLmhhcy1pbnB1dCBpbnB1dDpmb2N1cywuY2FwaWJhcmEuZGFyay10aGVtZSBuYXYubGVmdCAuaW5pdGlhbC1uYXYtbGlzdCAuZXgtbmF2LWl0ZW0gLml0ZW0tY29sLmhhcy1pbnB1dCAuaG91ci1pbnB1dDphY3RpdmUsLmNhcGliYXJhLmRhcmstdGhlbWUgbmF2LmxlZnQgLmluaXRpYWwtbmF2LWxpc3QgLmV4LW5hdi1pdGVtIC5pdGVtLWNvbC5oYXMtaW5wdXQgLmhvdXItaW5wdXQ6Zm9jdXMsLmNhcGliYXJhLmRhcmstdGhlbWUgbmF2LmxlZnQgLmluaXRpYWwtbmF2LWxpc3QgLmV4LW5hdi1pdGVtIC5pdGVtLWNvbC5oYXMtaW5wdXQgaW5wdXQ6YWN0aXZlLC5jYXBpYmFyYS5kYXJrLXRoZW1lIG5hdi5sZWZ0IC5pbml0aWFsLW5hdi1saXN0IC5leC1uYXYtaXRlbSAuaXRlbS1jb2wuaGFzLWlucHV0IGlucHV0OmZvY3VzLC5jYXBpYmFyYS5kYXJrLXRoZW1lIG5hdi5sZWZ0IC5pbml0aWFsLW5hdi1saXN0IC5pbml0aWFsLW5hdi1pdGVtIC5pdGVtLWNvbC5oYXMtaW5wdXQgLmhvdXItaW5wdXQ6YWN0aXZlLC5jYXBpYmFyYS5kYXJrLXRoZW1lIG5hdi5sZWZ0IC5pbml0aWFsLW5hdi1saXN0IC5pbml0aWFsLW5hdi1pdGVtIC5pdGVtLWNvbC5oYXMtaW5wdXQgLmhvdXItaW5wdXQ6Zm9jdXMsLmNhcGliYXJhLmRhcmstdGhlbWUgbmF2LmxlZnQgLmluaXRpYWwtbmF2LWxpc3QgLmluaXRpYWwtbmF2LWl0ZW0gLml0ZW0tY29sLmhhcy1pbnB1dCBpbnB1dDphY3RpdmUsLmNhcGliYXJhLmRhcmstdGhlbWUgbmF2LmxlZnQgLmluaXRpYWwtbmF2LWxpc3QgLmluaXRpYWwtbmF2LWl0ZW0gLml0ZW0tY29sLmhhcy1pbnB1dCBpbnB1dDpmb2N1c3tiYWNrZ3JvdW5kOmhzbGEoMCwwJSwxMDAlLC4yKX0uY2FwaWJhcmEuZGFyay10aGVtZSBuYXYubGVmdCAuYnRuLW5hdi1saXN0IC5idG4tY2hpbGQtbmF2LWl0ZW0gLmJ0bi1uYXYtaXRlbS1jb250ZW50LC5jYXBpYmFyYS5kYXJrLXRoZW1lIG5hdi5sZWZ0IC5idG4tbmF2LWxpc3QgLmJ0bi1uYXYtaXRlbSAuYnRuLW5hdi1pdGVtLWNvbnRlbnQsLmNhcGliYXJhLmRhcmstdGhlbWUgbmF2IC5uYXYtaXRlbS1saXN0IC5jaGlsZC1uYXYtaXRlbSAubmF2LWl0ZW0tY29udGFpbmVyLC5jYXBpYmFyYS5kYXJrLXRoZW1lIG5hdiAubmF2LWl0ZW0tbGlzdCAubmF2LWl0ZW0gLm5hdi1pdGVtLWNvbnRhaW5lcntib3JkZXItY29sb3I6cmdiYSg2NCw3OCwxMDUsLjYpfS5jYXBpYmFyYS5kYXJrLXRoZW1lIG5hdiAubmF2LWl0ZW0tbGlzdCAuY2hpbGQtbmF2LWl0ZW0gLm5hdi1pdGVtLWNvbnRhaW5lciAudHJlZS1pY29uLC5jYXBpYmFyYS5kYXJrLXRoZW1lIG5hdiAubmF2LWl0ZW0tbGlzdCAubmF2LWl0ZW0gLm5hdi1pdGVtLWNvbnRhaW5lciAudHJlZS1pY29ue2NvbG9yOiNmMGYwZjB9LmNhcGliYXJhLmRhcmstdGhlbWUgbmF2IC5uYXYtaXRlbS1saXN0IC5jaGlsZC1uYXYtaXRlbSAubmF2LWl0ZW0tY29udGFpbmVyIC5uYXYtaXRlbS1pY29uLC5jYXBpYmFyYS5kYXJrLXRoZW1lIG5hdiAubmF2LWl0ZW0tbGlzdCAubmF2LWl0ZW0gLm5hdi1pdGVtLWNvbnRhaW5lciAubmF2LWl0ZW0taWNvbntjb2xvcjpoc2xhKDAsMCUsOTQuMSUsLjIpfS5jYXBpYmFyYSAuY29udGFpbmVyLXRsIGhlYWRlcntoZWlnaHQ6dmFyKC0taGVhZGVyLWhlaWdodCk7d2lkdGg6LXdlYmtpdC1maXQtY29udGVudDt3aWR0aDotbW96LWZpdC1jb250ZW50O3dpZHRoOmZpdC1jb250ZW50O3RvcDowO21pbi13aWR0aDoxMDAlO3Bvc2l0aW9uOi13ZWJraXQtc3RpY2t5O3Bvc2l0aW9uOnN0aWNreTt6LWluZGV4OjM7Ym9yZGVyLWJvdHRvbToycHggc29saWQgZ3JleTtib3gtc2l6aW5nOmJvcmRlci1ib3g7Ym94LXNoYWRvdzowIDJweCA0cHggLTFweCByZ2JhKDAsMCwwLC4yKSwwIDRweCA1cHggMCByZ2JhKDAsMCwwLC4xNCksMCAxcHggMTBweCAwIHJnYmEoMCwwLDAsLjEyKX0uY2FwaWJhcmEgLmNvbnRhaW5lci10bCBoZWFkZXIgLmhlYWRlci1jb250YWluZXItZXh0ZW5kZWR7aGVpZ2h0OmF1dG87cG9zaXRpb246cmVsYXRpdmU7cGFkZGluZy1sZWZ0OmNhbGModmFyKC0tbmF2LXdpZHRoKSArIHZhcigtLWluaXRpYWwtbmF2LXdpZHRoKSArIHZhcigtLWV4LW5hdi13aWR0aCkgKyB2YXIoLS1idG4tbmF2LXdpZHRoKSk7d2lkdGg6MTAwJTtib3gtc2l6aW5nOmJvcmRlci1ib3g7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbn0uY2FwaWJhcmEgLmNvbnRhaW5lci10bCBoZWFkZXIgLmhlYWRlci1jb250YWluZXItZXh0ZW5kZWQgLmlucHV0LWxpc3R7cGFkZGluZzoxcHggMDtmbGV4OjAgMCBhdXRvO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpyb3d9LmNhcGliYXJhIC5jb250YWluZXItdGwgaGVhZGVyIC5oZWFkZXItY29udGFpbmVyLWV4dGVuZGVkIC5pbnB1dC1saXN0Om5vdCgucGVyc2lzdGVudCl7ZGlzcGxheTpub25lfS5jYXBpYmFyYSAuY29udGFpbmVyLXRsIGhlYWRlciAuaGVhZGVyLWNvbnRhaW5lci1leHRlbmRlZCAuaW5wdXQtbGlzdD5kaXZ7d2lkdGg6dmFyKC0tZGF5LXdpZHRoKX0uY2FwaWJhcmEgLmNvbnRhaW5lci10bCBoZWFkZXIgLmhlYWRlci1jb250YWluZXItZXh0ZW5kZWQgLmlucHV0LWxpc3Q+ZGl2PnNwYW57ZGlzcGxheTpibG9jazt3aWR0aDppbmhlcml0O2xpbmUtaGVpZ2h0OnZhcigtLWhlYWRlci1pbnB1dC1oZWlnaHQpO2hlaWdodDp2YXIoLS1oZWFkZXItaW5wdXQtaGVpZ2h0KTt0ZXh0LWFsaWduOmNlbnRlcjtmb250LXNpemU6Ljg3NWVtfS5jYXBpYmFyYSAuY29udGFpbmVyLXRsIGhlYWRlciAuaGVhZGVyLWNvbnRhaW5lci1leHRlbmRlZCAuaW5wdXQtbGlzdCAuZGlhLWlucHV0IGlucHV0e3dpZHRoOmluaGVyaXQ7aGVpZ2h0OnZhcigtLWhlYWRlci1pbnB1dC1oZWlnaHQpO2JvcmRlcjoxcHggc29saWQgZ3JleTtib3JkZXItbGVmdC13aWR0aDowO2JvcmRlci1yYWRpdXM6MDtiYWNrZ3JvdW5kOmhzbGEoMCwwJSwxMDAlLC41KTt0ZXh0LWFsaWduOmNlbnRlcjtmb250LXNpemU6Ljg3NWVtfS5jYXBpYmFyYSAuY29udGFpbmVyLXRsIGhlYWRlciAuaGVhZGVyLWNvbnRhaW5lci1leHRlbmRlZCAuaW5wdXQtbGlzdCAuZGlhLWlucHV0IGlucHV0OmFjdGl2ZSwuY2FwaWJhcmEgLmNvbnRhaW5lci10bCBoZWFkZXIgLmhlYWRlci1jb250YWluZXItZXh0ZW5kZWQgLmlucHV0LWxpc3QgLmRpYS1pbnB1dCBpbnB1dDpmb2N1c3tiYWNrZ3JvdW5kOmhzbGEoMCwwJSwxMDAlLC44KX0uY2FwaWJhcmEgLmNvbnRhaW5lci10bCBoZWFkZXIgLmhlYWRlci1jb250YWluZXJ7cG9zaXRpb246cmVsYXRpdmU7cGFkZGluZy1sZWZ0OmNhbGModmFyKC0tbmF2LXdpZHRoKSArIHZhcigtLWluaXRpYWwtbmF2LXdpZHRoKSArIHZhcigtLWV4LW5hdi13aWR0aCkgKyB2YXIoLS1idG4tbmF2LXdpZHRoKSk7d2lkdGg6MTAwJTtkaXNwbGF5OmZsZXg7aGVpZ2h0OnZhcigtLWhlYWRlci1sYWJlbHMtaGVpZ2h0KX0uY2FwaWJhcmEgLmNvbnRhaW5lci10bCBoZWFkZXIgLmhlYWRlci1jb250YWluZXIgLmhlYWRlci1pdGVte3BhZGRpbmc6NnB4IDhweDttaW4td2lkdGg6dmFyKC0taXRlbS1taW4td2lkdGgpO2hlaWdodDp2YXIoLS1oZWFkZXItaGVpZ2h0KTt0ZXh0LWFsaWduOmNlbnRlcjtib3gtc2l6aW5nOmJvcmRlci1ib3g7cG9zaXRpb246cmVsYXRpdmU7Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkIHJnYmEoMCwwLDAsLjEpfS5jYXBpYmFyYSAuY29udGFpbmVyLXRsIGhlYWRlciAuaGVhZGVyLWNvbnRhaW5lciAuaGVhZGVyLWl0ZW0gc3Bhbi5ib3R0b20tdGV4dHtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjA7Ym90dG9tOjhweDt3aWR0aDoxMDAlfS5jYXBpYmFyYSAuY29udGFpbmVyLXRsIGhlYWRlciAuYWduby1jYWxlbmRhcmlve2Rpc3BsYXk6aW5saW5lLWJsb2NrO3dpZHRoOi13ZWJraXQtbWF4LWNvbnRlbnQ7d2lkdGg6LW1vei1tYXgtY29udGVudDt3aWR0aDptYXgtY29udGVudH0uY2FwaWJhcmEgLmNvbnRhaW5lci10bCBoZWFkZXIgLmFnbm8tY2FsZW5kYXJpbyAuYWdub3twb3NpdGlvbjotd2Via2l0LXN0aWNreTtwb3NpdGlvbjpzdGlja3k7bGVmdDpjYWxjKHZhcigtLW5hdi13aWR0aCkgKyB2YXIoLS1pbml0aWFsLW5hdi13aWR0aCkgKyB2YXIoLS1leC1uYXYtd2lkdGgpICsgdmFyKC0tYnRuLW5hdi13aWR0aCkpO2Rpc3BsYXk6aW5saW5lLWJsb2NrO3BhZGRpbmctbGVmdDo4cHg7cGFkZGluZy1yaWdodDozMnB4O2ZvbnQtc2l6ZTouNzVlbTttYXJnaW4tdG9wOjRweH0uY2FwaWJhcmEgLmNvbnRhaW5lci10bCBoZWFkZXIgLmFnbm8tY2FsZW5kYXJpbyAubWVzZXN7ZGlzcGxheTpibG9jaztkaXNwbGF5OmZsZXh9LmNhcGliYXJhIC5jb250YWluZXItdGwgaGVhZGVyIC5hZ25vLWNhbGVuZGFyaW8gLm1lcy1jYWxlbmRhcmlve2Rpc3BsYXk6aW5saW5lLWJsb2NrO21pbi13aWR0aDp2YXIoLS1kYXktd2lkdGgpfS5jYXBpYmFyYSAuY29udGFpbmVyLXRsIGhlYWRlciAuYWduby1jYWxlbmRhcmlvIC5tZXMtY2FsZW5kYXJpbyAubWVze2Rpc3BsYXk6aW5saW5lLWJsb2NrO3Bvc2l0aW9uOi13ZWJraXQtc3RpY2t5O3Bvc2l0aW9uOnN0aWNreTtsZWZ0OmNhbGModmFyKC0tbmF2LXdpZHRoKSArIHZhcigtLWluaXRpYWwtbmF2LXdpZHRoKSArIHZhcigtLWJ0bi1uYXYtd2lkdGgpKTtwYWRkaW5nLWxlZnQ6LjVlbTtwYWRkaW5nLXJpZ2h0OjJlbTtmb250LXNpemU6Ljg3NWVtO21hcmdpbi10b3A6NnB4fS5jYXBpYmFyYSAuY29udGFpbmVyLXRsIGhlYWRlciAuYWduby1jYWxlbmRhcmlvIC5tZXMtY2FsZW5kYXJpbyAubWVzLm1lcy1yZWR1Y2Vke3dpZHRoOnZhcigtLWRheS13aWR0aCk7bWF4LXdpZHRoOnZhcigtLWRheS13aWR0aCk7b3ZlcmZsb3c6aGlkZGVufS5jYXBpYmFyYSAuY29udGFpbmVyLXRsIGhlYWRlciAuYWduby1jYWxlbmRhcmlvIC5tZXMtY2FsZW5kYXJpbyAubWVzLm1lcy1yZWR1Y2VkLm1lcy1yZWR1Y2VkLTJ7d2lkdGg6Y2FsYyh2YXIoLS1kYXktd2lkdGgpKjIpfS5jYXBpYmFyYSAuY29udGFpbmVyLXRsIGhlYWRlciAuYWduby1jYWxlbmRhcmlvIC5tZXMtY2FsZW5kYXJpbyAubWVzLm1lcy1yZWR1Y2VkLm1lcy1yZWR1Y2VkLTN7d2lkdGg6Y2FsYyh2YXIoLS1kYXktd2lkdGgpKjMpfS5jYXBpYmFyYSAuY29udGFpbmVyLXRsIGhlYWRlciAuYWduby1jYWxlbmRhcmlvIC5tZXMtY2FsZW5kYXJpbyAubWVzLm1lcy1yZWR1Y2VkIC5tZXMtbGFiZWx7d2lkdGg6LXdlYmtpdC1tYXgtY29udGVudDt3aWR0aDotbW96LW1heC1jb250ZW50O3dpZHRoOm1heC1jb250ZW50fS5jYXBpYmFyYSAuY29udGFpbmVyLXRsIGhlYWRlciAuYWduby1jYWxlbmRhcmlvIC5tZXMtY2FsZW5kYXJpbyAubWVzLm1lcy1yZWR1Y2VkOmFmdGVye2NvbnRlbnQ6XFxcIlxcXCI7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoOTBkZWcsdHJhbnNwYXJlbnQscmVkKTtwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDowO3RvcDowO2hlaWdodDoxMDAlO3dpZHRoOmNhbGModmFyKC0tZGF5LXdpZHRoKS8yKX0uY2FwaWJhcmEgLmNvbnRhaW5lci10bCBoZWFkZXIgLmFnbm8tY2FsZW5kYXJpbyAubWVzLWNhbGVuZGFyaW8gLmRpYXN7ZGlzcGxheTpmbGV4O21hcmdpbi10b3A6NXB4fS5jYXBpYmFyYSAuY29udGFpbmVyLXRsIGhlYWRlciAuYWduby1jYWxlbmRhcmlvIC5tZXMtY2FsZW5kYXJpbyAuZGlhcyAuZGlhLWNhbGVuZGFyaW97d2lkdGg6dmFyKC0tZGF5LXdpZHRoKTtoZWlnaHQ6dmFyKC0taGVhZGVyLWRheS1oZWlnaHQpO3ZlcnRpY2FsLWFsaWduOmJvdHRvbTtmb250LXNpemU6Ljg3NWVtO2JvcmRlci1yaWdodDoxcHggc29saWQgcmdiYSgwLDAsMCwuMSk7Ym94LXNpemluZzpib3JkZXItYm94O3BhZGRpbmc6NHB4IDZweDt0ZXh0LWFsaWduOmNlbnRlcn0uY2FwaWJhcmEgLmNvbnRhaW5lci10bCBoZWFkZXIgLmFnbm8tY2FsZW5kYXJpbyAubWVzLWNhbGVuZGFyaW8gLmRpYXMgLmRpYS1jYWxlbmRhcmlvLmlzLWNsaWNrZWFibGV7Y3Vyc29yOnBvaW50ZXJ9LmNhcGliYXJhLmhlYWRlci1leHRlbmRlZCAuY29udGFpbmVyLXRsIGhlYWRlcntoZWlnaHQ6Y2FsYyh2YXIoLS1oZWFkZXItaGVpZ2h0KSArIHZhcigtLWV4LWhlYWRlci1oZWlnaHQpKX0uY2FwaWJhcmEuaGVhZGVyLWV4dGVuZGVkIC5jb250YWluZXItdGwgaGVhZGVyIC5oZWFkZXItY29udGFpbmVyLWV4dGVuZGVkIC5pbnB1dC1saXN0Om5vdCgucGVyc2lzdGVudCl7ZGlzcGxheTpmbGV4fS5jYXBpYmFyYSAuY29udGFpbmVyLXRsIGhlYWRlcntiYWNrZ3JvdW5kOiNmMWZmZmU7Y29sb3I6IzM3NDc0Zn0uY2FwaWJhcmEgLmNvbnRhaW5lci10bCBoZWFkZXIgLmFnbm8tY2FsZW5kYXJpbyAubWVzLWNhbGVuZGFyaW8gLm1lcy5tZXMtcmVkdWNlZDphZnRlcntiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCg5MGRlZyx0cmFuc3BhcmVudCwjZjFmZmZlKX0uY2FwaWJhcmEgLmNvbnRhaW5lci10bCBoZWFkZXIgLmFnbm8tY2FsZW5kYXJpbyAubWVzLWNhbGVuZGFyaW8gLmRpYXMgLmRpYS1jYWxlbmRhcmlvLndlZWtlbmR7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4xKTtjb2xvcjojMjYzMjM4fS5jYXBpYmFyYSAuY29udGFpbmVyLXRsIGhlYWRlciAuYWduby1jYWxlbmRhcmlvIC5tZXMtY2FsZW5kYXJpbyAuZGlhcyAuZGlhLWNhbGVuZGFyaW8udG9kYXl7YmFja2dyb3VuZDpyZ2JhKDIyOSw1Nyw1MywuOSk7Y29sb3I6I2ZmZn0uY2FwaWJhcmEgLmNvbnRhaW5lci10bCBoZWFkZXIgLmFnbm8tY2FsZW5kYXJpbyAubWVzLWNhbGVuZGFyaW8gLmRpYXMgLmRpYS1jYWxlbmRhcmlvLmFjdGl2ZXtiYWNrZ3JvdW5kOmdyZWVuO2NvbG9yOiNmZmZ9LmNhcGliYXJhIC5jb250YWluZXItdGwgaGVhZGVyIC5hZ25vLWNhbGVuZGFyaW8gLm1lcy1jYWxlbmRhcmlvIC5kaWFzIC5kaWEtY2FsZW5kYXJpby5pcy1jbGlja2VhYmxlOmhvdmVye2JhY2tncm91bmQ6aHNsYSgwLDAlLDM5LjIlLC40KX0uY2FwaWJhcmEgLmNvbnRhaW5lci10bCBoZWFkZXIgLmFnbm8tY2FsZW5kYXJpbyAubWVzLWNhbGVuZGFyaW8gLmRpYXMgLmRpYS1jYWxlbmRhcmlvLmlzLWNsaWNrZWFibGU6YWN0aXZle2JhY2tncm91bmQ6aHNsYSgwLDAlLDM5LjIlLC42KX0uY2FwaWJhcmEgLmNvbnRhaW5lci10bCBoZWFkZXIgLmhlYWRlci1jb250YWluZXItZXh0ZW5kZWQgLmlucHV0LWxpc3QgLmRpYS1pbnB1dCBpbnB1dCwuY2FwaWJhcmEgLmNvbnRhaW5lci10bCBoZWFkZXIgLmhlYWRlci1jb250YWluZXItZXh0ZW5kZWQgLmlucHV0LWxpc3QgZGl2PnNwYW57Y29sb3I6IzMxM2I1MH0uY2FwaWJhcmEuZGFyay10aGVtZSAuY29udGFpbmVyLXRsIGhlYWRlcntiYWNrZ3JvdW5kOiMzMTNiNTA7Y29sb3I6I2YwZjBmMDtib3JkZXItY29sb3I6cmdiYSg2NCw3OCwxMDUsLjYpfS5jYXBpYmFyYS5kYXJrLXRoZW1lIC5jb250YWluZXItdGwgaGVhZGVyIC5hZ25vLWNhbGVuZGFyaW8gLm1lcy1jYWxlbmRhcmlvIC5tZXMubWVzLXJlZHVjZWQ6YWZ0ZXJ7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoOTBkZWcsdHJhbnNwYXJlbnQsIzMxM2I1MCl9LmNhcGliYXJhLmRhcmstdGhlbWUgLmNvbnRhaW5lci10bCBoZWFkZXIgLmFnbm8tY2FsZW5kYXJpbyAubWVzLWNhbGVuZGFyaW8gLmRpYXMgLmRpYS1jYWxlbmRhcmlve2JvcmRlci1jb2xvcjpyZ2JhKDY0LDc4LDEwNSwuNil9LmNhcGliYXJhLmRhcmstdGhlbWUgLmNvbnRhaW5lci10bCBoZWFkZXIgLmFnbm8tY2FsZW5kYXJpbyAubWVzLWNhbGVuZGFyaW8gLmRpYXMgLmRpYS1jYWxlbmRhcmlvLndlZWtlbmR7YmFja2dyb3VuZDojMjIyODM3O2NvbG9yOiNmMGYwZjB9LmNhcGliYXJhLmRhcmstdGhlbWUgLmNvbnRhaW5lci10bCBoZWFkZXIgLmFnbm8tY2FsZW5kYXJpbyAubWVzLWNhbGVuZGFyaW8gLmRpYXMgLmRpYS1jYWxlbmRhcmlvLnRvZGF5e2JhY2tncm91bmQ6cmdiYSgxODMsMjgsMjgsLjYpO2NvbG9yOiNmMGYwZjB9LmNhcGliYXJhLmRhcmstdGhlbWUgLmNvbnRhaW5lci10bCBoZWFkZXIgLmFnbm8tY2FsZW5kYXJpbyAubWVzLWNhbGVuZGFyaW8gLmRpYXMgLmRpYS1jYWxlbmRhcmlvLmFjdGl2ZXtiYWNrZ3JvdW5kOnJnYmEoNTYsMTQyLDYwLC42KTtjb2xvcjojZjBmMGYwfS5jYXBpYmFyYS5kYXJrLXRoZW1lIC5jb250YWluZXItdGwgaGVhZGVyIC5hZ25vLWNhbGVuZGFyaW8gLm1lcy1jYWxlbmRhcmlvIC5kaWFzIC5kaWEtY2FsZW5kYXJpby5pcy1jbGlja2VhYmxlOmhvdmVye2JhY2tncm91bmQ6aHNsYSgwLDAlLDM5LjIlLC40KX0uY2FwaWJhcmEuZGFyay10aGVtZSAuY29udGFpbmVyLXRsIGhlYWRlciAuYWduby1jYWxlbmRhcmlvIC5tZXMtY2FsZW5kYXJpbyAuZGlhcyAuZGlhLWNhbGVuZGFyaW8uaXMtY2xpY2tlYWJsZTphY3RpdmV7YmFja2dyb3VuZDpoc2xhKDAsMCUsMzkuMiUsLjYpfS5jYXBpYmFyYS5kYXJrLXRoZW1lIC5jb250YWluZXItdGwgaGVhZGVyIC5oZWFkZXItY29udGFpbmVyLWV4dGVuZGVkIC5pbnB1dC1saXN0IGRpdj5zcGFue2NvbG9yOmhzbGEoMCwwJSwxMDAlLC44KSFpbXBvcnRhbnR9LmNhcGliYXJhLmRhcmstdGhlbWUgLmNvbnRhaW5lci10bCBoZWFkZXIgLmhlYWRlci1jb250YWluZXItZXh0ZW5kZWQgLmlucHV0LWxpc3QgLmRpYS1pbnB1dCBpbnB1dHtiYWNrZ3JvdW5kOnJnYmEoNjQsNzgsMTA1LC42KTtjb2xvcjpoc2xhKDAsMCUsMTAwJSwuOCkhaW1wb3J0YW50O2JvcmRlci1jb2xvcjojMzEzYjUwfS5jYXBpYmFyYS5kYXJrLXRoZW1lIC5jb250YWluZXItdGwgaGVhZGVyIC5oZWFkZXItY29udGFpbmVyLWV4dGVuZGVkIC5pbnB1dC1saXN0IC5kaWEtaW5wdXQgaW5wdXQ6YWN0aXZlLC5jYXBpYmFyYS5kYXJrLXRoZW1lIC5jb250YWluZXItdGwgaGVhZGVyIC5oZWFkZXItY29udGFpbmVyLWV4dGVuZGVkIC5pbnB1dC1saXN0IC5kaWEtaW5wdXQgaW5wdXQ6Zm9jdXN7YmFja2dyb3VuZDpoc2xhKDAsMCUsMTAwJSwuMil9LmNhcGliYXJhIC5jb250YWluZXItdGwgLnBsb3QtdmVydGljYWwtY29udGFpbmVye2hlaWdodDowO3dpZHRoOjA7cG9zaXRpb246LXdlYmtpdC1zdGlja3k7cG9zaXRpb246c3RpY2t5O3RvcDp2YXIoLS1oZWFkZXItaGVpZ2h0KTttYXJnaW4tbGVmdDpjYWxjKHZhcigtLW5hdi13aWR0aCkgKyB2YXIoLS1pbml0aWFsLW5hdi13aWR0aCkgKyB2YXIoLS1leC1uYXYtd2lkdGgpICsgdmFyKC0tYnRuLW5hdi13aWR0aCkpfS5jYXBpYmFyYSAuY29udGFpbmVyLXRsIC5wbG90LXZlcnRpY2FsLWNvbnRhaW5lciAucGxvdC12ZXJ0aWNhbHtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjMpO3dpZHRoOnZhcigtLWRheS13aWR0aCk7aGVpZ2h0OmNhbGMoMTAwdmggLSB2YXIoLS1oZWFkZXItaGVpZ2h0KSAtIHZhcigtLWhlYWRlci10b3AtaGVpZ2h0KSk7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7bGVmdDowfS5jYXBpYmFyYSAuY29udGFpbmVyLXRsIC5wbG90LXZlcnRpY2FsLWNvbnRhaW5lciAucGxvdC12ZXJ0aWNhbC5yYWlue2JhY2tncm91bmQ6LXdlYmtpdC1yZXBlYXRpbmctbGluZWFyLWdyYWRpZW50KDU0ZGVnLHJnYmEoMywxNTUsMjI5LC4yKSxyZ2JhKDMsMTU1LDIyOSwuMikgNXB4LHRyYW5zcGFyZW50IDAsdHJhbnNwYXJlbnQgMTJweCk7YmFja2dyb3VuZDpyZXBlYXRpbmctbGluZWFyLWdyYWRpZW50KDU0ZGVnLHJnYmEoMywxNTUsMjI5LC4yKSxyZ2JhKDMsMTU1LDIyOSwuMikgNXB4LHRyYW5zcGFyZW50IDAsdHJhbnNwYXJlbnQgMTJweCl9LmNhcGliYXJhIC5jb250YWluZXItdGwgLnBsb3QtaG9yaXpvbnRhbC1jb250YWluZXJ7aGVpZ2h0OjA7d2lkdGg6MDtwb3NpdGlvbjotd2Via2l0LXN0aWNreTtwb3NpdGlvbjpzdGlja3k7bGVmdDpjYWxjKHZhcigtLW5hdi13aWR0aCkgKyB2YXIoLS1pbml0aWFsLW5hdi13aWR0aCkgKyB2YXIoLS1leC1uYXYtd2lkdGgpICsgdmFyKC0tYnRuLW5hdi13aWR0aCkpfS5jYXBpYmFyYSAuY29udGFpbmVyLXRsIC5wbG90LWhvcml6b250YWwtY29udGFpbmVyIC5wbG90LWhvcml6b250YWx7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4zKTt3aWR0aDoxMDB2dztoZWlnaHQ6dmFyKC0taXRlbS1oZWlnaHQpO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6MH0uY2FwaWJhcmEgLmNvbnRhaW5lci10bCAucGxvdC1ob3Jpem9udGFsLWNvbnRhaW5lciAucGxvdC1ob3Jpem9udGFsLnBsb3QtcGFyZW50e2JhY2tncm91bmQ6cmdiYSgyNSwxMTgsMjEwLC4xKX0uY2FwaWJhcmEgLmNvbnRhaW5lci10bC5leHRlbmRlZC1yaWdodCAuY29udGFpbmVyLXRsIC5wbG90LWNvbnRhaW5lciAucGxvdC12ZXJ0aWNhbHtoZWlnaHQ6Y2FsYygxMDB2aCAtIHZhcigtLWhlYWRlci1oZWlnaHQpICsgdmFyKC0tZXgtaGVhZGVyLWhlaWdodCkgKyB2YXIoLS1oZWFkZXItdG9wLWhlaWdodCkpfS5jYXBpYmFyYSAuY29udGFpbmVyLXRsIGZvb3Rlcnt3aWR0aDotd2Via2l0LWZpdC1jb250ZW50O3dpZHRoOi1tb3otZml0LWNvbnRlbnQ7d2lkdGg6Zml0LWNvbnRlbnQ7Ym90dG9tOjA7bWluLXdpZHRoOjEwMCU7aGVpZ2h0OnZhcigtLWl0ZW0taGVpZ2h0KTtwb3NpdGlvbjotd2Via2l0LXN0aWNreTtwb3NpdGlvbjpzdGlja3k7ei1pbmRleDoyO2JveC1zaXppbmc6Ym9yZGVyLWJveH0uY2FwaWJhcmEgLmNvbnRhaW5lci10bCBmb290ZXIgLmZvb3Rlci1jb250YWluZXJ7cG9zaXRpb246cmVsYXRpdmU7cGFkZGluZy1sZWZ0OmNhbGModmFyKC0tbmF2LXdpZHRoKSArIHZhcigtLWluaXRpYWwtbmF2LXdpZHRoKSArIHZhcigtLWV4LW5hdi13aWR0aCkgKyB2YXIoLS1idG4tbmF2LXdpZHRoKSk7Ym94LXNpemluZzpib3JkZXItYm94O21pbi13aWR0aDoxMDAlO2Rpc3BsYXk6ZmxleH0uY2FwaWJhcmEgLmNvbnRhaW5lci10bCBmb290ZXIgLmZvb3Rlci1jb250YWluZXIgLmZvb3Rlci1pdGVte3BhZGRpbmc6MTBweCAycHg7d2lkdGg6dmFyKC0tZGF5LXdpZHRoKTtjdXJzb3I6ZGVmYXVsdDtib3JkZXItbGVmdDoxcHggc29saWQgcmdiYSgwLDAsMCwuMSk7Ym94LXNpemluZzpib3JkZXItYm94O2hlaWdodDp2YXIoLS1pdGVtLWhlaWdodCk7dGV4dC1hbGlnbjpjZW50ZXJ9LmNhcGliYXJhIC5jb250YWluZXItdGwgZm9vdGVye2JhY2tncm91bmQ6Izc4OTA5Yztjb2xvcjojZmZmfS5jYXBpYmFyYSAuY29udGFpbmVyLXRsLmRhcmstdGhlbWUgZm9vdGVye2JhY2tncm91bmQ6IzMxM2I1MDtjb2xvcjojZjBmMGYwfS5jYXBpYmFyYSAuY29udGFpbmVyLXRsIC50YWJsZXtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OmNhbGModmFyKC0tbmF2LXdpZHRoKSArIHZhcigtLWluaXRpYWwtbmF2LXdpZHRoKSArIHZhcigtLWV4LW5hdi13aWR0aCkgKyB2YXIoLS1idG4tbmF2LXdpZHRoKSk7dG9wOnZhcigtLWhlYWRlci1oZWlnaHQpO3dpZHRoOmNhbGMoMTAwJSAtIHZhcigtLW5hdi13aWR0aCkgLSB2YXIoLS1pbml0aWFsLW5hdi13aWR0aCkgLSB2YXIoLS1leC1uYXYtd2lkdGgpIC0gdmFyKC0tYnRuLW5hdi13aWR0aCkpO21heC1oZWlnaHQ6Y2FsYygxMDAlIC0gdmFyKC0taGVhZGVyLWhlaWdodCkpO21hcmdpbi10b3A6LTFweH0uY2FwaWJhcmEgLmNvbnRhaW5lci10bCAudGFibGUgLmRheS1tb3VzZS1vdmVye3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MDt0b3A6MDt3aWR0aDp2YXIoLS1kYXktd2lkdGgpO2hlaWdodDp2YXIoLS1pdGVtLWhlaWdodCk7Ym9yZGVyOjNweCBzb2xpZCByZ2JhKDI0NSwxMjQsMCwuNSk7Ym94LXNoYWRvdzowIDAgMnB4ICNmNTdjMDAsaW5zZXQgMCAwIDNweCAjZjU3YzAwO3RyYW5zaXRpb246dHJhbnNmb3JtIC4xcyBlYXNlO292ZXJmbG93OnZpc2libGV9LmNhcGliYXJhIC5jb250YWluZXItdGwgLnRhYmxlIC5kYXktbW91c2Utb3ZlcjphZnRlciwuY2FwaWJhcmEgLmNvbnRhaW5lci10bCAudGFibGUgLmRheS1tb3VzZS1vdmVyOmJlZm9yZXtwb3NpdGlvbjphYnNvbHV0ZTtiYWNrZ3JvdW5kOnJnYmEoMjQ1LDEyNCwwLC4xKTtjb250ZW50OlxcXCJcXFwiO2Rpc3BsYXk6YmxvY2t9LmNhcGliYXJhIC5jb250YWluZXItdGwgLnRhYmxlIC5kYXktbW91c2Utb3ZlcjphZnRlcnt3aWR0aDp2YXIoLS1kYXktd2lkdGgpO2hlaWdodDoxMDB2aDtyaWdodDotNHB4O2JvdHRvbTpjYWxjKHZhcigtLWl0ZW0taGVpZ2h0KSAtIDJweCl9LmNhcGliYXJhIC5jb250YWluZXItdGwgLnRhYmxlIC5kYXktbW91c2Utb3ZlcjpiZWZvcmV7aGVpZ2h0OnZhcigtLWl0ZW0taGVpZ2h0KTt3aWR0aDoxMDB2dztyaWdodDpjYWxjKHZhcigtLWRheS13aWR0aCkgLSAycHgpO2JvdHRvbTotNHB4fS5jYXBpYmFyYSAuY29udGFpbmVyLXRsIC50YWJsZSAuYmFja2dyb3VuZC1ncmlke3dpZHRoOmNhbGModmFyKC0tZGF5LXdpZHRoKSoyMCk7aGVpZ2h0OmNhbGModmFyKC0taXRlbS1oZWlnaHQpKjIwKTtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjA7dG9wOjFweDtiYWNrZ3JvdW5kLXJlcGVhdDpyZXBlYXQ7YmFja2dyb3VuZC1zaXplOnZhcigtLWRheS13aWR0aCkgdmFyKC0taXRlbS1oZWlnaHQpLGNhbGModmFyKC0tZGF5LXdpZHRoKSo3KSB2YXIoLS1pdGVtLWhlaWdodCksY2FsYyh2YXIoLS1kYXktd2lkdGgpKjcpIHZhcigtLWl0ZW0taGVpZ2h0KTtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCg5MGRlZyxyZ2JhKDgwLDgwLDgwLC4zKSAxcHgsdHJhbnNwYXJlbnQgMCksbGluZWFyLWdyYWRpZW50KDBkZWcscmdiYSg4MCw4MCw4MCwuMykgMXB4LHRyYW5zcGFyZW50IDApLGxpbmVhci1ncmFkaWVudCg5MGRlZyx0cmFuc3BhcmVudCBjYWxjKHZhcigtLWRheS13aWR0aCkqNSkscmdiYSg4MCw4MCw4MCwuMSkgMCk7YmFja2dyb3VuZC1wb3NpdGlvbjowIDAsMCAwLDAgMH0uY2FwaWJhcmEgLmNvbnRhaW5lci10bCAudGFibGUgLmRyYXctYm94e3Bvc2l0aW9uOnJlbGF0aXZlfS5jYXBpYmFyYSAuY29udGFpbmVyLXRsIC50YWJsZSAuZHJhdy1ib3ggY2FudmFze3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MDt0b3A6MH0uY2FwaWJhcmEuaGVhZGVyLWV4dGVuZGVkIC5jb250YWluZXItdGwgLnRhYmxle3RvcDpjYWxjKHZhcigtLWhlYWRlci1oZWlnaHQpICsgdmFyKC0tZXgtaGVhZGVyLWhlaWdodCkpfS5jYXBpYmFyYSAuc2VsZWN0LWNvbnRhaW5lcntvdmVyZmxvdzp2aXNpYmxlO3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MDt0b3A6MDt3aWR0aDowO2hlaWdodDowfS5jYXBpYmFyYSAuc2VsZWN0LWNvbnRhaW5lciAuc2VsZWN0ZWQtZGF5e3dpZHRoOnZhcigtLWRheS13aWR0aCk7aGVpZ2h0OnZhcigtLWl0ZW0taGVpZ2h0KTtwb3NpdGlvbjphYnNvbHV0ZTtiYWNrZ3JvdW5kOmhzbGEoMCwwJSw3NC4xJSwuNCk7Ym94LXNoYWRvdzppbnNldCAwIDAgNXB4IGhzbGEoMCwwJSw3NC4xJSwuOCl9LmNhcGliYXJhIC5zZWxlY3QtY29udGFpbmVyIC5zZWxlY3RlZC1kYXlbc2VsZWN0ZWQtaW5kZXhdOmFmdGVye2NvbnRlbnQ6YXR0cihzZWxlY3RlZC1pbmRleCk7ZGlzcGxheTpibG9jaztwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0Oi0ycHg7dG9wOi0ycHg7YmFja2dyb3VuZDpyZWQ7Zm9udC1zaXplOi43NWVtO2NvbG9yOiNmZmY7d2lkdGg6MS4zZW07aGVpZ2h0OjEuM2VtO2JvcmRlci1yYWRpdXM6NTAlO2JvcmRlcjoxcHggc29saWQgIzAwZjt6LWluZGV4OjI7dGV4dC1hbGlnbjpjZW50ZXI7Zm9udC13ZWlnaHQ6NzAwfS5jYXBpYmFyYSAuZGV0YWlsLWRheXttaW4taGVpZ2h0OjUwcHg7bWluLXdpZHRoOjI1MHB4O21heC13aWR0aDozMDBweDtib3JkZXI6MXB4IHNvbGlkIGdyZXk7cGFkZGluZzoxZW07ZGlzcGxheTpmbGV4O2ZsZXgtZmxvdzpjb2x1bW4gbm93cmFwO21hcmdpbjowIDAgMCAxZW07Ym94LXNpemluZzpib3JkZXItYm94O2JveC1zaGFkb3c6MCA2cHggNnB4IC0zcHggcmdiYSgwLDAsMCwuMiksMCAxMHB4IDE0cHggMXB4IHJnYmEoMCwwLDAsLjE0KSwwIDRweCAxOHB4IDNweCByZ2JhKDAsMCwwLC4xMik7cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo1cHg7dHJhbnNpdGlvbjphbGwgLjNzIGVhc2U7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoY2FsYyh2YXIoLS1pdGVtLWhlaWdodCkvMiotMSkpO3otaW5kZXg6NDtvcGFjaXR5OjF9LmNhcGliYXJhIC5kZXRhaWwtZGF5OmFmdGVye2NvbnRlbnQ6XFxcIlxcXCI7YmFja2dyb3VuZDppbmhlcml0O3dpZHRoOjIwcHg7aGVpZ2h0OjIwcHg7ZGlzcGxheTpibG9jaztwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0Oi0xMXB4O3RvcDpjYWxjKHZhcigtLWl0ZW0taGVpZ2h0KS8yICsgN3B4KTt0cmFuc2Zvcm06cm90YXRlKDQ1ZGVnKTtib3JkZXItY29sb3I6Z3JleTtib3JkZXItc3R5bGU6c29saWQ7Ym9yZGVyLXdpZHRoOjAgMCAxcHggMXB4fS5jYXBpYmFyYSAuZGV0YWlsLWRheS5kZC1oaWRle2Rpc3BsYXk6bm9uZX0uY2FwaWJhcmEgLmRldGFpbC1kYXkuaGFzLXJpZ2h0LWFycm93e21hcmdpbjowIDE2cHggMCAwO3RyYW5zZm9ybTp0cmFuc2xhdGVYKGNhbGMoLTEwMCUgLSAyMHB4IC0gdmFyKC0tZGF5LXdpZHRoKSkpIHRyYW5zbGF0ZVkoY2FsYyh2YXIoLS1pdGVtLWhlaWdodCkvMiotMSkpfS5jYXBpYmFyYSAuZGV0YWlsLWRheS5oYXMtcmlnaHQtYXJyb3c6YWZ0ZXJ7Ym9yZGVyLXdpZHRoOjFweCAxcHggMCAwO2xlZnQ6dW5zZXQ7cmlnaHQ6LTExcHh9LmNhcGliYXJhIC5kZXRhaWwtZGF5Lmhhcy1jZWlsLWFycm93e3RyYW5zZm9ybTp0cmFuc2xhdGVZKC03cHgpfS5jYXBpYmFyYSAuZGV0YWlsLWRheS5oYXMtY2VpbC1hcnJvdzphZnRlcnt0b3A6NnB4fS5jYXBpYmFyYSAuZGV0YWlsLWRheS5oYXMtY2VpbC1hcnJvdy5oYXMtcmlnaHQtYXJyb3d7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoY2FsYygtMTAwJSAtIDIwcHggLSB2YXIoLS1kYXktd2lkdGgpKSkgdHJhbnNsYXRlWSgtN3B4KX0uY2FwaWJhcmEgLmRldGFpbC1kYXkuaGFzLWNlaWwtYXJyb3cuaGFzLXJpZ2h0LWFycm93OmFmdGVye2xlZnQ6dW5zZXQ7cmlnaHQ6LTExcHh9LmNhcGliYXJhIC5kZXRhaWwtZGF5Lmhhcy1taWRkbGUtYXJyb3d7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoY2FsYygtNTAlICsgdmFyKC0taXRlbS1oZWlnaHQpLzIpKX0uY2FwaWJhcmEgLmRldGFpbC1kYXkuaGFzLW1pZGRsZS1hcnJvdzphZnRlcnt0b3A6Y2FsYyg1MCUgLSAxMHB4KX0uY2FwaWJhcmEgLmRldGFpbC1kYXkuaGFzLW1pZGRsZS1hcnJvdy5oYXMtcmlnaHQtYXJyb3d7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoY2FsYygtMTAwJSAtIDIwcHggLSB2YXIoLS1kYXktd2lkdGgpKSkgdHJhbnNsYXRlWShjYWxjKC01MCUgKyB2YXIoLS1pdGVtLWhlaWdodCkvMikpfS5jYXBpYmFyYSAuZGV0YWlsLWRheS5oYXMtbWlkZGxlLWFycm93Lmhhcy1yaWdodC1hcnJvdzphZnRlcntsZWZ0OnVuc2V0O3JpZ2h0Oi0xMXB4fS5jYXBpYmFyYSAuZGV0YWlsLWRheS5oYXMtYm90dG9tLWFycm93e3RyYW5zZm9ybTp0cmFuc2xhdGVZKGNhbGMoLTEwMCUgKyB2YXIoLS1pdGVtLWhlaWdodCkpKX0uY2FwaWJhcmEgLmRldGFpbC1kYXkuaGFzLWJvdHRvbS1hcnJvdzphZnRlcnt0b3A6dW5zZXQ7Ym90dG9tOjRweH0uY2FwaWJhcmEgLmRldGFpbC1kYXkuaGFzLWJvdHRvbS1hcnJvdy5oYXMtcmlnaHQtYXJyb3d7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoY2FsYygtMTAwJSAtIDIwcHggLSB2YXIoLS1kYXktd2lkdGgpKSkgdHJhbnNsYXRlWShjYWxjKC0xMDAlICsgdmFyKC0taXRlbS1oZWlnaHQpKSl9LmNhcGliYXJhIC5kZXRhaWwtZGF5Lmhhcy1ib3R0b20tYXJyb3cuaGFzLXJpZ2h0LWFycm93OmFmdGVye2xlZnQ6dW5zZXQ7cmlnaHQ6LTExcHh9LmNhcGliYXJhIC5kZXRhaWwtZGF5IC5oZWFkZXItZGV0YWlsIC50aXRsZXtmb250LXNpemU6MS4yNWVtO2ZvbnQtd2VpZ2h0OjcwMDttYXJnaW4tYm90dG9tOi41ZW07bWluLXdpZHRoOjEwZW07bWF4LXdpZHRoOjIwZW19LmNhcGliYXJhIC5kZXRhaWwtZGF5IC5oZWFkZXItZGV0YWlsIC5zdWJ0aXRsZXtmb250LXNpemU6Ljg3NWVtO21hcmdpbi1ib3R0b206OHB4O21pbi13aWR0aDoxMGVtfS5jYXBpYmFyYSAuZGV0YWlsLWRheSAubGlzdC1kZXRhaWx7bWFyZ2luOjA7ZmxleDowIDAgYXV0b30uY2FwaWJhcmEgLmRldGFpbC1kYXkgLmxpc3QtZGV0YWlsLmxpc3QgLml0ZW0tZGV0YWlse21hcmdpbjowO2ZvbnQtc2l6ZTouODc1ZW07cG9zaXRpb246cmVsYXRpdmU7cGFkZGluZzouNWVtIC41ZW0gLjVlbSAxZW07Ym9yZGVyLXJhZGl1czowO2JveC1zaXppbmc6Ym9yZGVyLWJveDtvdmVyZmxvdzpoaWRkZW47YmFja2dyb3VuZDp0cmFuc3BhcmVudDtib3JkZXI6dW5zZXQ7Ym9yZGVyLXRvcDoxcHggc29saWQgcmdiYSgwLDAsMCwuMSk7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOnJvd30uY2FwaWJhcmEgLmRldGFpbC1kYXkgLmxpc3QtZGV0YWlsLmxpc3QgLml0ZW0tZGV0YWlsIC5sZWZ0LWljb257d2lkdGg6OHB4O2hlaWdodDo4cHg7bWluLWhlaWdodDp1bnNldCFpbXBvcnRhbnQ7bGVmdDoxcHg7dG9wOjEwcHg7Ym9yZGVyLXJhZGl1czo1MCV9LmNhcGliYXJhIC5kZXRhaWwtZGF5IC5saXN0LWRldGFpbC5saXN0IC5pdGVtLWRldGFpbCAubGVmdC1pY29uLmRpYW1vbmR7Ym9yZGVyLXJhZGl1czowO3RyYW5zZm9ybTpyb3RhdGUoNDVkZWcpIHNrZXcoMTBkZWcsMTBkZWcpfS5jYXBpYmFyYSAuZGV0YWlsLWRheSAubGlzdC1kZXRhaWwubGlzdCAuaXRlbS1kZXRhaWwgLmxlZnQtaWNvbi5vdXRsaW5lZHtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50fS5jYXBpYmFyYSAuZGV0YWlsLWRheSAubGlzdC1kZXRhaWwubGlzdCAuaXRlbS1kZXRhaWwgLm5hbWV7ZmxleDoxIDEgNDAlO2ZvbnQtd2VpZ2h0OjcwMDttYXJnaW4tYm90dG9tOjA7bWFyZ2luLXJpZ2h0OjFlbX0uY2FwaWJhcmEgLmRldGFpbC1kYXkgLmxpc3QtZGV0YWlsLmxpc3QgLml0ZW0tZGV0YWlsIC5pdGVtLWRlc2NyaXB0aW9ue2ZsZXg6MSAxIDYwJTt0ZXh0LWFsaWduOnJpZ2h0fS5jYXBpYmFyYSAuZGV0YWlsLWRheSAubGlzdC1kZXRhaWwubGlzdCAuaXRlbS1kZXRhaWwgLml0ZW0tZGVzY3JpcHRpb24gLmRlc2N7cG9zaXRpb246ZmxleDtmbGV4LWRpcmVjdGlvbjpyb3d9LmNhcGliYXJhIC5kZXRhaWwtZGF5IC5saXN0LWRldGFpbC5saXN0IC5pdGVtLWRldGFpbCAuaXRlbS1kZXNjcmlwdGlvbiAuZGVzYyAubGFiZWx7ZGlzcGxheTppbmxpbmUtYmxvY2s7bWluLXdpZHRoOjM2cHg7Zm9udC13ZWlnaHQ6NzAwO3RleHQtYWxpZ246cmlnaHQ7bWFyZ2luLXJpZ2h0Oi41ZW19LmNhcGliYXJhIC5kZXRhaWwtZGF5IC5saXN0LWRldGFpbC5mbGV4e2Rpc3BsYXk6ZmxleDtmbGV4LWZsb3c6cm93IHdyYXA7YWxpZ24tY29udGVudDpmbGV4LXN0YXJ0O2Rpc3BsYXk6aW5saW5lLWZsZXg7ZmxleC1mbG93OndyYXA7LW1zLXdyaXRpbmctbW9kZTp0Yi1scjt3cml0aW5nLW1vZGU6dmVydGljYWwtbHI7bWF4LWhlaWdodDoyNSV9LmNhcGliYXJhIC5kZXRhaWwtZGF5IC5saXN0LWRldGFpbC5mbGV4IC5pdGVtLWRldGFpbHtmbGV4OjAgMCBhdXRvO21pbi13aWR0aDo4ZW07LW1zLXdyaXRpbmctbW9kZTpsci10Yjt3cml0aW5nLW1vZGU6aG9yaXpvbnRhbC10Yn0uY2FwaWJhcmEgLmRldGFpbC1kYXkgLmxpc3QtZGV0YWlsLmNvbHVtbnstbW96LWNvbHVtbnM6N2VtIDM7Y29sdW1uczo3ZW0gMzttaW4td2lkdGg6MzBlbX0uY2FwaWJhcmEgLmRldGFpbC1kYXkgLmxpc3QtZGV0YWlsLmNvbHVtbiAuaXRlbS1kZXRhaWx7ZGlzcGxheTppbmxpbmUtYmxvY2s7d2lkdGg6MTAwJX0uY2FwaWJhcmEgLmRldGFpbC1kYXkgLmxpc3QtZGV0YWlsIC5pdGVtLWRldGFpbHttYXJnaW46NHB4O3Bvc2l0aW9uOnJlbGF0aXZlO3BhZGRpbmc6LjVlbSAxZW07Ym9yZGVyLXJhZGl1czo2cHg7Ym94LXNpemluZzpib3JkZXItYm94O292ZXJmbG93OmhpZGRlbn0uY2FwaWJhcmEgLmRldGFpbC1kYXkgLmxpc3QtZGV0YWlsIC5pdGVtLWRldGFpbCAubmFtZXtmb250LXdlaWdodDo3MDA7bWFyZ2luLWJvdHRvbTouNWVtfS5jYXBpYmFyYSAuZGV0YWlsLWRheSAubGlzdC1kZXRhaWwgLml0ZW0tZGV0YWlsIC5pdGVtLWRlc2NyaXB0aW9uIC5kZXNjIC5sYWJlbHtkaXNwbGF5OmlubGluZS1ibG9jazttaW4td2lkdGg6MzZweDtmb250LXdlaWdodDo3MDB9LmNhcGliYXJhIC5kZXRhaWwtZGF5IC5saXN0LWRldGFpbCAuaXRlbS1kZXRhaWwgLmxlZnQtaWNvbnt3aWR0aDo2cHg7bWluLWhlaWdodDoxMHB4O2hlaWdodDoxMDAlO3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MDt0b3A6MH0uY2FwaWJhcmEgLmRldGFpbC1kYXkgLmVsZW1lbnRzLWRldGFpbHtwYWRkaW5nOi41ZW0gMCAuMjVlbTtkaXNwbGF5OmZsZXg7ZmxleC13cmFwOndyYXB9LmNhcGliYXJhIC5kZXRhaWwtZGF5IC5lbGVtZW50cy1kZXRhaWwgLm5hbWV7ZmxleDoxIDAgMTAwJTtmb250LXdlaWdodDo3MDB9LmNhcGliYXJhIC5kZXRhaWwtZGF5IC5lbGVtZW50cy1kZXRhaWwgLmVsZW1lbnRzLWxpc3R7bWFyZ2luOjRweCAtNHB4fS5jYXBpYmFyYSAuZGV0YWlsLWRheSAuZWxlbWVudHMtZGV0YWlsIC5lbGVtZW50cy1saXN0IC5lbGVtZW50LWRldGFpbHtkaXNwbGF5OmlubGluZS1ibG9jaztwYWRkaW5nOi4yNWVtIC44NzVlbTtib3JkZXItcmFkaXVzOjNweDtjb2xvcjojZmZmO21hcmdpbjouMjVlbX0uY2FwaWJhcmEgLmRldGFpbC1kYXkgLmFsZXJ0e3BhZGRpbmc6LjVlbSAwIC4yNWVtIDJlbTtwb3NpdGlvbjpyZWxhdGl2ZTttaW4td2lkdGg6MTVlbTttaW4td2lkdGg6MTBlbTttYXgtd2lkdGg6MzBlbX0uY2FwaWJhcmEgLmRldGFpbC1kYXkgLmFsZXJ0IC5hbGVydC1pY29ue21heC13aWR0aDoyZW07Zm9udC1zaXplOjEuNzVlbTtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjA7dG9wOi41ZW07Y29sb3I6Z3JleX0uY2FwaWJhcmEgLmRldGFpbC1kYXkgLmFsZXJ0IC5yZWR7Y29sb3I6I2Y0NDMzNn0uY2FwaWJhcmEgLmRldGFpbC1kYXkgLm1zai1jb250YWluZXJ7bWFyZ2luOi41ZW0gLTFlbSAtMWVtO2JvcmRlcjoxcHggc29saWQgZ3JleTt6LWluZGV4OjJ9LmNhcGliYXJhIC5kZXRhaWwtZGF5IC5tc2otY29udGFpbmVyIC5tc2p7bWluLXdpZHRoOjEwZW07bWF4LXdpZHRoOjMwZW07bWFyZ2luOjAgMCAuNWVtO3BhZGRpbmc6MTRweDtmb250LXNpemU6Ljg3NWVtfS5jYXBpYmFyYSAuZGV0YWlsLWRheSAubXNqLWNvbnRhaW5lciAubXNqLWRldGFpbHtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO3BhZGRpbmc6LjI1ZW0gLjVlbX0uY2FwaWJhcmEgLmRldGFpbC1kYXkgLm1zai1jb250YWluZXIgLm1zai1kZXRhaWwgLmVtYWlse2ZvbnQtc2l6ZTouODc1ZW07Zm9udC1zdHlsZTppdGFsaWM7b3BhY2l0eTouNX0uY2FwaWJhcmEgLmRldGFpbC1kYXkgLm1zai1jb250YWluZXIgLm1zai1kZXRhaWwgLmRhdGV7Zm9udC1zaXplOi43MjVlbX0uY2FwaWJhcmEgLmRldGFpbC1kYXl7YmFja2dyb3VuZDojZmZmfS5jYXBpYmFyYSAuZGV0YWlsLWRheSwuY2FwaWJhcmEgLmRldGFpbC1kYXkgLmxpc3QtZGV0YWlsLmxpc3QgLml0ZW0tZGV0YWlsLC5jYXBpYmFyYSAuZGV0YWlsLWRheTphZnRlcntib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMil9LmNhcGliYXJhIC5kZXRhaWwtZGF5IC5lbGVtZW50cy1kZXRhaWwgLmVsZW1lbnRzLWxpc3QgLmVsZW1lbnQtZGV0YWlse2JhY2tncm91bmQ6cmdiYSg1NSw3MSw3OSwuOCl9LmNhcGliYXJhIC5kZXRhaWwtZGF5IC5tc2otY29udGFpbmVye2JhY2tncm91bmQ6I2ZmZWNiMztib3JkZXItY29sb3I6I2ZmY2EyOH0uY2FwaWJhcmEgLmRldGFpbC1kYXkgLm1zai1jb250YWluZXIgLm1zai1kZXRhaWx7YmFja2dyb3VuZDojZmZlMDgyO2JvcmRlci1jb2xvcjojZmZjYTI4fS5jYXBpYmFyYS5kYXJrLXRoZW1lIC5kZXRhaWwtZGF5e2JvcmRlci1jb2xvcjojNDA0ZTY5O2JhY2tncm91bmQ6IzIyMjgzN30uY2FwaWJhcmEuZGFyay10aGVtZSAuZGV0YWlsLWRheTphZnRlcntib3JkZXItY29sb3I6IzQwNGU2OX0uY2FwaWJhcmEuZGFyay10aGVtZSAuZGV0YWlsLWRheSAubGlzdC1kZXRhaWwgLml0ZW0tZGV0YWlse2JhY2tncm91bmQ6dHJhbnNwYXJlbnQhaW1wb3J0YW50fS5jYXBpYmFyYS5kYXJrLXRoZW1lIC5kZXRhaWwtZGF5IC5saXN0LWRldGFpbC5saXN0IC5pdGVtLWRldGFpbHtib3JkZXItY29sb3I6IzQwNGU2OX0uY2FwaWJhcmEuZGFyay10aGVtZSAuZGV0YWlsLWRheSAuZWxlbWVudHMtZGV0YWlsIC5lbGVtZW50cy1saXN0IC5lbGVtZW50LWRldGFpbHtiYWNrZ3JvdW5kOiMyOTMyNDN9LmNhcGliYXJhLmRhcmstdGhlbWUgLmRldGFpbC1kYXkgLm1zai1jb250YWluZXJ7YmFja2dyb3VuZDojMjkzMjQzO2JvcmRlci1jb2xvcjpyZ2JhKDI1MSwxOTIsNDUsLjQpfS5jYXBpYmFyYS5kYXJrLXRoZW1lIC5kZXRhaWwtZGF5IC5tc2otY29udGFpbmVyIC5tc2otZGV0YWlse2JhY2tncm91bmQ6cmdiYSgyNTEsMTkyLDQ1LC4xKX0uY2FwaWJhcmEgLmNhcC1jb250ZXh0LW1lbnUtY29udGFpbmVye3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MDt0b3A6MDt6LWluZGV4OjEwfS5jYXBpYmFyYSAuY2FwLWNvbnRleHQtbWVudS1jb250YWluZXIuY20taGlkZSAuY2FwLWNvbnRleHQtbWVudXt2aXNpYmlsaXR5OmhpZGRlbjtvcGFjaXR5OjB9LmNhcGliYXJhIC5jYXAtY29udGV4dC1tZW51LWNvbnRhaW5lciAuY2FwLWNvbnRleHQtbWVudXtwb3NpdGlvbjphYnNvbHV0ZTttaW4td2lkdGg6MTUwcHg7ei1pbmRleDoyO2JvcmRlci1yYWRpdXM6M3B4O2JvcmRlcjoxcHggc29saWQgZ3JleTtib3gtc2hhZG93OjAgM3B4IDVweCAtMXB4IHJnYmEoMCwwLDAsLjIpLDAgNnB4IDEwcHggMCByZ2JhKDAsMCwwLC4xNCksMCAxcHggMThweCAwIHJnYmEoMCwwLDAsLjEyKTtmb250LXNpemU6Ljc1ZW07dHJhbnNpdGlvbjphbGwgLjFzIGxpbmVhcjt2aXNpYmlsaXR5OnZpc2libGU7b3BhY2l0eToxO3BhZGRpbmc6LjRlbSAwfS5jYXBpYmFyYSAuY2FwLWNvbnRleHQtbWVudS1jb250YWluZXIgLmNhcC1jb250ZXh0LW1lbnUtLWl0ZW17cGFkZGluZzouNWVtIDFlbX0uY2FwaWJhcmEgLmNhcC1jb250ZXh0LW1lbnUtY29udGFpbmVyIC5jYXAtY29udGV4dC1tZW51LS1pdGVtOmhvdmVye2JhY2tncm91bmQ6cmdiYSgyMCwyMCwyMCwuMil9LmNhcGliYXJhIC5jYXAtY29udGV4dC1tZW51LWNvbnRhaW5lciAuY2FwLWNvbnRleHQtbWVudS0taXRlbS5pcy1kaXNhYmxlZHtvcGFjaXR5Oi41fS5jYXBpYmFyYSAuY2FwLWNvbnRleHQtbWVudS1jb250YWluZXIgLmNhcC1jb250ZXh0LW1lbnV7Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjIpO2JhY2tncm91bmQ6I2ZmZn0uY2FwaWJhcmEuZGFyay10aGVtZSAuY2FwLWNvbnRleHQtbWVudS1jb250YWluZXIgLmNhcC1jb250ZXh0LW1lbnV7Ym9yZGVyLWNvbG9yOiM0MDRlNjk7YmFja2dyb3VuZDojMjIyODM3fS5jYXBpYmFyYSAuaG91ci1pbnB1dHtib3JkZXI6MXB4IHNvbGlkIGdyZXk7Ym9yZGVyLXJhZGl1czozcHg7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO2hlaWdodDoyNHB4O21hcmdpbjo4cHggNHB4O292ZXJmbG93OmhpZGRlbn0uY2FwaWJhcmEgLmhvdXItaW5wdXQgaW5wdXR7d2lkdGg6NTAlO2hlaWdodDppbmhlcml0O2JvcmRlcjoxcHggc29saWQgdHJhbnNwYXJlbnQ7YmFja2dyb3VuZDp0cmFuc3BhcmVudDtmb250LXNpemU6Ljg3NWVtfS5jYXBpYmFyYSAuaG91ci1pbnB1dCBpbnB1dDphY3RpdmUsLmNhcGliYXJhIC5ob3VyLWlucHV0IGlucHV0OmZvY3Vze2JvcmRlcjoxcHggc29saWQgcmdiYSgwLDAsMCwuMSl9LmNhcGliYXJhIC5ob3VyLWlucHV0IHNwYW57d2lkdGg6OHB4O3RleHQtYWxpZ246Y2VudGVyfS5jYXBpYmFyYSAuaG91ci1pbnB1dCAuaGh7dGV4dC1hbGlnbjpyaWdodH0uY2FwaWJhcmEgLnRpbWV7Ym9yZGVyLXJhZGl1czo2cHg7ZGlzcGxheTppbmxpbmUtYmxvY2s7Zm9udC1zaXplOjB9LmNhcGliYXJhIC50aW1lIC5zeW1ib2x7ZGlzcGxheTppbmxpbmUtYmxvY2s7aGVpZ2h0OmF1dG87d2lkdGg6MjBweDtmb250LXNpemU6MnJlbTt0ZXh0LWFsaWduOmNlbnRlcjt2ZXJ0aWNhbC1hbGlnbjpjZW50ZXJ9LmNhcGliYXJhIC50aW1lIGlucHV0e2JvcmRlci1yYWRpdXM6NnB4O2JvcmRlcjoycHggc29saWQgdHJhbnNwYXJlbnQ7d2lkdGg6NTJweDt0ZXh0LWFsaWduOmNlbnRlcjtmb250LXNpemU6MnJlbTtwb3NpdGlvbjpyZWxhdGl2ZTt0cmFuc2l0aW9uOmFsbCAuMXMgZWFzZTtvdXRsaW5lOm5vbmU7YmFja2dyb3VuZDp0cmFuc3BhcmVudDtwYWRkaW5nOjZweH0uY2FwaWJhcmEgLnRpbWUgaW5wdXQ6YWN0aXZlLC5jYXBpYmFyYSAudGltZSBpbnB1dDpmb2N1c3t0cmFuc2Zvcm06c2NhbGUoMS4wMyl9LmNhcGliYXJhIC5pbnB1dC1ib3h7bWFyZ2luOjAgMTZweDttaW4taGVpZ2h0OjE4MHB4O2JvcmRlcjoycHggc29saWQgZ3JleTtib3JkZXItcmFkaXVzOjZweDtvdmVyZmxvdy15OnNjcm9sbDtwYWRkaW5nLWJvdHRvbTo2MHB4fS5jYXBpYmFyYSAuaW5wdXQtYm94IC5taW5pLWlucHV0LXNlY3Rpb257cGFkZGluZzo4cHggMTZweDt0ZXh0LWFsaWduOmxlZnQ7d2lkdGg6MTAwJTtwb3NpdGlvbjpyZWxhdGl2ZX0uY2FwaWJhcmEgLmlucHV0LWJveCAubWluaS1pbnB1dC1zZWN0aW9uOm50aC1jaGlsZChvZGQpe2JhY2tncm91bmQ6aHNsYSgwLDAlLDM5LjIlLC4xKX0uY2FwaWJhcmEgLmlucHV0LWJveCAubWluaS1pbnB1dC1zZWN0aW9uLS10b29sdGlwe3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MDt0b3A6MS41ZW07ZGlzcGxheTpub25lO3BhZGRpbmc6LjVlbTttYXJnaW46MWVtO2NvbG9yOiMwMDA7Ym9yZGVyLXJhZGl1czozcHg7ei1pbmRleDoyO2JveC1zaGFkb3c6MCAycHggNXB4IHJnYmEoMCwwLDAsLjMpfS5jYXBpYmFyYSAuaW5wdXQtYm94IC5taW5pLWlucHV0LXNlY3Rpb24tLWljb257ZGlzcGxheTppbmxpbmUtYmxvY2s7d2lkdGg6Ljc1ZW07aGVpZ2h0Oi43NWVtO2JvcmRlci1yYWRpdXM6NTAlO2JhY2tncm91bmQ6Z3JleTtib3gtc2hhZG93OjAgMXB4IDNweCByZ2JhKDAsMCwwLC4zKTttYXJnaW46MCAuMjVlbSAwIDB9LmNhcGliYXJhIC5pbnB1dC1ib3ggLm1pbmktaW5wdXQtc2VjdGlvbjpob3ZlciAubWluaS1pbnB1dC1zZWN0aW9uLS10b29sdGlwe2Rpc3BsYXk6YmxvY2t9LmNhcGliYXJhIC5pbnB1dC1ib3ggLm1pbmktaW5wdXQtc2VjdGlvbiBpbnB1dHt0ZXh0LWFsaWduOmNlbnRlcjt3aWR0aDo2MHB4O21hcmdpbi1yaWdodDouNWVtO2JvcmRlcjoxcHggc29saWQgZ3JleTtib3JkZXItcmFkaXVzOjNweDtiYWNrZ3JvdW5kOmhzbGEoMCwwJSwxMDAlLC4yKTtmb250LXNpemU6MWVtfS5jYXBpYmFyYSAuaW5wdXQtYm94IC5taW5pLWlucHV0LXNlY3Rpb24gaW5wdXQ6YWN0aXZlLC5jYXBpYmFyYSAuaW5wdXQtYm94IC5taW5pLWlucHV0LXNlY3Rpb24gaW5wdXQ6Zm9jdXN7YmFja2dyb3VuZDpoc2xhKDAsMCUsMTAwJSwuOCl9LmNhcGliYXJhIC5pbnB1dC1zZWN0aW9ue21hcmdpbjoxNnB4fS5jYXBpYmFyYSAuaW5wdXQtc2VjdGlvbi1mbGV4e2Rpc3BsYXk6ZmxleDtmbGV4LXdyYXA6d3JhcH0uY2FwaWJhcmEgLmlucHV0LXNlY3Rpb24gLnRleHQtc3VidGl0bGV7ZmxleDoxIDEgMTAwJX0uY2FwaWJhcmEgLmlucHV0LXNlY3Rpb24gaW5wdXQubmF2LWlucHV0e2JvcmRlcjoycHggc29saWQgaHNsYSgwLDAlLDUwLjIlLC43KTtib3JkZXItcmFkaXVzOjZweDt3aWR0aDo1MCU7bWluLXdpZHRoOjEzMHB4O2ZvbnQtc2l6ZToyZW07dGV4dC1hbGlnbjpjZW50ZXI7cGFkZGluZzozcHggNnB4O2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7b3V0bGluZTpub25lO3RyYW5zaXRpb246YWxsIC4xcyBlYXNlfS5jYXBpYmFyYSAuaW5wdXQtc2VjdGlvbiBpbnB1dC5uYXYtaW5wdXQ6YWN0aXZlLC5jYXBpYmFyYSAuaW5wdXQtc2VjdGlvbiBpbnB1dC5uYXYtaW5wdXQ6Zm9jdXN7Ym9yZGVyOjJweCBzb2xpZCBncmV5O2JveC1zaGFkb3c6MCA0cHggNnB4IGhzbGEoMCwwJSw1MC4yJSwuMil9LmNhcGliYXJhIC5pbnB1dC1zZWN0aW9uIC5pbnB1dC1zZWN0aW9uLWNvbHt3aWR0aDphdXRvO3Bvc2l0aW9uOnJlbGF0aXZlO2ZsZXg6MSAxIDEwJX0uY2FwaWJhcmEgLmlucHV0LXNlY3Rpb24gLmlucHV0LXNlY3Rpb24tY29sIGlucHV0Lm5hdi1pbnB1dHttaW4td2lkdGg6dW5zZXQ7d2lkdGg6Y2FsYygxMDAlIC0gMXJlbSk7bWF4LXdpZHRoOjdyZW19LmNhcGliYXJhIC5pbnB1dC1zZWN0aW9uLm1zai1pbnB1dC1jb250YWluZXIgdGV4dGFyZWEubXNqe291dGxpbmU6bm9uZTtib3JkZXItcmFkaXVzOjZweDtib3JkZXI6MnB4IHNvbGlkIGdyZXk7d2lkdGg6MTAwJTttaW4td2lkdGg6MTAwJTttYXgtd2lkdGg6MTAwJTttaW4taGVpZ2h0OjEwMHB4O3RyYW5zaXRpb246YWxsIC4xcyBlYXNlO3BhZGRpbmc6OHB4O2JveC1zaXppbmc6Ym9yZGVyLWJveH0uY2FwaWJhcmEgLmlucHV0LXNlY3Rpb24ubXNqLWlucHV0LWNvbnRhaW5lciB0ZXh0YXJlYS5tc2o6YWN0aXZlLC5jYXBpYmFyYSAuaW5wdXQtc2VjdGlvbi5tc2otaW5wdXQtY29udGFpbmVyIHRleHRhcmVhLm1zajpmb2N1c3tib3gtc2hhZG93OjAgNHB4IDZweCByZ2JhKDI1NSwxNjAsMCwuMil9LmNhcGliYXJhIC5pbnB1dC1zZWN0aW9uIGlucHV0W3R5cGU9Y2hlY2tib3hde3dpZHRoOjE4cHg7aGVpZ2h0OjE4cHg7dmVydGljYWwtYWxpZ246bWlkZGxlfS5jYXBpYmFyYSAudGltZXtib3JkZXI6MnB4IHNvbGlkIHJnYmEoMCwxMjgsMCwuNyk7Y29sb3I6Z3JlZW59LmNhcGliYXJhIC50aW1lIC5zeW1ib2wsLmNhcGliYXJhIC50aW1lIGlucHV0e2NvbG9yOiMzNzQ3NGZ9LmNhcGliYXJhIC50aW1lIGlucHV0OmFjdGl2ZSwuY2FwaWJhcmEgLnRpbWUgaW5wdXQ6Zm9jdXN7Ym9yZGVyLWNvbG9yOmdyZWVuO2JveC1zaGFkb3c6MCA0cHggNnB4IHJnYmEoMCwxMjgsMCwuMil9LmNhcGliYXJhIC5pbnB1dC1ib3h7Y29sb3I6IzM3NDc0Zjtib3JkZXI6MnB4IHNvbGlkIGdyZWVufS5jYXBpYmFyYSAuaW5wdXQtYm94IC5taW5pLWlucHV0LXNlY3Rpb24gaW5wdXQ6YWN0aXZlLC5jYXBpYmFyYSAuaW5wdXQtYm94IC5taW5pLWlucHV0LXNlY3Rpb24gaW5wdXQ6Zm9jdXN7YmFja2dyb3VuZDojZmFmYWZhfS5jYXBpYmFyYSAuaW5wdXQtYm94IC5taW5pLWlucHV0LXNlY3Rpb24tLXRvb2x0aXB7YmFja2dyb3VuZDojZmFmYWZhO2NvbG9yOiMzNzQ3NGY7Ym9yZGVyOjFweCBzb2xpZCAjMzc0NzRmfS5jYXBpYmFyYSAuaW5wdXQtc2VjdGlvbiBpbnB1dC5uYXYtaW5wdXR7Y29sb3I6IzM3NDc0Zjtib3JkZXI6MnB4IHNvbGlkIHJnYmEoMCwxMjgsMCwuNyl9LmNhcGliYXJhIC5pbnB1dC1zZWN0aW9uIGlucHV0Lm5hdi1pbnB1dDphY3RpdmUsLmNhcGliYXJhIC5pbnB1dC1zZWN0aW9uIGlucHV0Lm5hdi1pbnB1dDpmb2N1c3tib3JkZXI6MnB4IHNvbGlkIGdyZWVuO2JveC1zaGFkb3c6MCA0cHggNnB4IHJnYmEoMCwxMjgsMCwuMil9LmNhcGliYXJhIC5pbnB1dC1zZWN0aW9uLm1zai1pbnB1dC1jb250YWluZXIgdGV4dGFyZWEubXNqe2JhY2tncm91bmQ6cmdiYSgyNTUsMjQ5LDE5NiwuNik7Ym9yZGVyOjJweCBzb2xpZCByZ2JhKDAsMCwwLC40KX0uY2FwaWJhcmEgLmlucHV0LXNlY3Rpb24ubXNqLWlucHV0LWNvbnRhaW5lciB0ZXh0YXJlYS5tc2o6YWN0aXZlLC5jYXBpYmFyYSAuaW5wdXQtc2VjdGlvbi5tc2otaW5wdXQtY29udGFpbmVyIHRleHRhcmVhLm1zajpmb2N1c3tiYWNrZ3JvdW5kOnJnYmEoMjU1LDI0OSwxOTYsLjgpO2JveC1zaGFkb3c6MCA0cHggNnB4IHRyYW5zcGFyZW50fS5jYXBpYmFyYS5kYXJrLXRoZW1lIC50aW1le2JvcmRlcjoycHggc29saWQgcmdiYSg2NCw3OCwxMDUsLjcpO2NvbG9yOiM0MDRlNjl9LmNhcGliYXJhLmRhcmstdGhlbWUgLnRpbWUgLnN5bWJvbCwuY2FwaWJhcmEuZGFyay10aGVtZSAudGltZSBpbnB1dHtjb2xvcjojZjBmMGYwfS5jYXBpYmFyYS5kYXJrLXRoZW1lIC50aW1lIGlucHV0OmFjdGl2ZSwuY2FwaWJhcmEuZGFyay10aGVtZSAudGltZSBpbnB1dDpmb2N1c3tib3JkZXItY29sb3I6IzQwNGU2OTtib3gtc2hhZG93OjAgNHB4IDZweCByZ2JhKDY0LDc4LDEwNSwuMil9LmNhcGliYXJhLmRhcmstdGhlbWUgLmlucHV0LWJveHtjb2xvcjojZjBmMGYwO2JvcmRlcjoycHggc29saWQgIzQwNGU2OX0uY2FwaWJhcmEuZGFyay10aGVtZSAuaW5wdXQtYm94IC5taW5pLWlucHV0LXNlY3Rpb24gaW5wdXR7YmFja2dyb3VuZDojNDA0ZTY5O2NvbG9yOiNmMGYwZjB9LmNhcGliYXJhLmRhcmstdGhlbWUgLmlucHV0LWJveCAubWluaS1pbnB1dC1zZWN0aW9uIGlucHV0OmFjdGl2ZSwuY2FwaWJhcmEuZGFyay10aGVtZSAuaW5wdXQtYm94IC5taW5pLWlucHV0LXNlY3Rpb24gaW5wdXQ6Zm9jdXN7YmFja2dyb3VuZDojMjIyODM3fS5jYXBpYmFyYS5kYXJrLXRoZW1lIC5pbnB1dC1ib3ggLm1pbmktaW5wdXQtc2VjdGlvbi0tdG9vbHRpcHtiYWNrZ3JvdW5kOiMyMjI4Mzc7Y29sb3I6I2YwZjBmMDtib3JkZXI6MXB4IHNvbGlkICNmMGYwZjB9LmNhcGliYXJhLmRhcmstdGhlbWUgLmlucHV0LXNlY3Rpb24gaW5wdXQubmF2LWlucHV0e2NvbG9yOiNmMGYwZjA7Ym9yZGVyOjJweCBzb2xpZCByZ2JhKDY0LDc4LDEwNSwuNyl9LmNhcGliYXJhLmRhcmstdGhlbWUgLmlucHV0LXNlY3Rpb24gaW5wdXQubmF2LWlucHV0OmFjdGl2ZSwuY2FwaWJhcmEuZGFyay10aGVtZSAuaW5wdXQtc2VjdGlvbiBpbnB1dC5uYXYtaW5wdXQ6Zm9jdXN7Ym9yZGVyOjJweCBzb2xpZCAjNDA0ZTY5O2JveC1zaGFkb3c6MCA0cHggNnB4IHJnYmEoNjQsNzgsMTA1LC4yKX0uY2FwaWJhcmEuZGFyay10aGVtZSAuaW5wdXQtc2VjdGlvbi5tc2otaW5wdXQtY29udGFpbmVyIHRleHRhcmVhLm1zantiYWNrZ3JvdW5kOnJnYmEoMjUxLDE5Miw0NSwuMSk7Ym9yZGVyOjJweCBzb2xpZCAjOWU5ZTllO2NvbG9yOiNmMGYwZjB9LmNhcGliYXJhLmRhcmstdGhlbWUgLmlucHV0LXNlY3Rpb24ubXNqLWlucHV0LWNvbnRhaW5lciB0ZXh0YXJlYS5tc2o6YWN0aXZlLC5jYXBpYmFyYS5kYXJrLXRoZW1lIC5pbnB1dC1zZWN0aW9uLm1zai1pbnB1dC1jb250YWluZXIgdGV4dGFyZWEubXNqOmZvY3Vze2JhY2tncm91bmQ6cmdiYSgyNTEsMTkyLDQ1LC4zKTtib3gtc2hhZG93OjAgNHB4IDZweCBoc2xhKDAsMCUsNjIlLC4yKX0uY2FwaWJhcmEgYnV0dG9ue291dGxpbmU6bm9uZX0uY2FwaWJhcmEgYnV0dG9uLnJvdGF0ZSAubWRpOmJlZm9yZSwuY2FwaWJhcmEgYnV0dG9uLnJvdGF0ZSBzdmd7dHJhbnNmb3JtOnJvdGF0ZSgxODBkZWcpfS5jYXBpYmFyYSAuYnRuLXJhaXNlZHtiYWNrZ3JvdW5kOmdyZXl9LmNhcGliYXJhIC5idG4tb3V0bGluZSwuY2FwaWJhcmEgLmJ0bi1yYWlzZWR7Y3Vyc29yOnBvaW50ZXI7cGFkZGluZzo4cHggMTZweDttYXJnaW46MCA4cHg7Ym9yZGVyLXJhZGl1czo2cHg7Ym9yZGVyOjJweCBzb2xpZCBncmV5O2ZvbnQtd2VpZ2h0OjcwMH0uY2FwaWJhcmEgLmJ0bi1vdXRsaW5le2NvbG9yOmdyZXl9LmNhcGliYXJhIC5idG4taWNvbntkaXNwbGF5OmlubGluZS1ibG9jaztoZWlnaHQ6MzJweDt3aWR0aDozMnB4O291dGxpbmU6bm9uZTtjdXJzb3I6cG9pbnRlcjt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7bWFyZ2luLXJpZ2h0OjE2cHg7bWFyZ2luLXRvcDo0cHg7YmFja2dyb3VuZDp0cmFuc3BhcmVudDtib3JkZXI6bm9uZTtwYWRkaW5nOjA7Zm9udC1zaXplOjE4cHg7Y29sb3I6Z3JleTtib3JkZXItcmFkaXVzOjUwJX0uY2FwaWJhcmEgLmJ0bi1pY29uIHN2Z3tmaWxsOmdyZXl9LmNhcGliYXJhIC5idG4taWNvbi5idG4taWNvbi1yYWlzZWR7YmFja2dyb3VuZDojZmZmO2JvcmRlcjpub25lfS5jYXBpYmFyYSAuYnRuLWljb24uYnRuLWljb24tb3V0bGluZXtib3JkZXI6MXB4IHNvbGlkIGdyZXl9LmNhcGliYXJhIC5idG4taWNvbi5idG4tdG9nZ2xlLXNpZGViYXJ7cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6MTBweDt0b3A6MTBweDt6LWluZGV4OjI7bWFyZ2luOjB9LmNhcGliYXJhIC5idG4taWNvbiAubWRpe2ZvbnQtc2l6ZToyNHB4fS5jYXBpYmFyYSAuYnRuLWljb24gLmxvYWRpbmctaWNvbiwuY2FwaWJhcmEgLmJ0bi1pY29uLmxvYWRpbmc+Om5vdCgubG9hZGluZy1pY29uKXtkaXNwbGF5Om5vbmV9LmNhcGliYXJhIC5idG4taWNvbi5sb2FkaW5nIC5sb2FkaW5nLWljb257ZGlzcGxheTp1bnNldH0uY2FwaWJhcmEgLmJ0bi1zaGFwZXtkaXNwbGF5OmlubGluZS1ibG9jazt3aWR0aDoyNHB4O2hlaWdodDoyNHB4O291dGxpbmU6bm9uZTtjdXJzb3I6cG9pbnRlcjt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7bWFyZ2luOjRweDtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O2JvcmRlcjpub25lO3BhZGRpbmc6MDtmb250LXNpemU6MTRweH0uY2FwaWJhcmEgLmJ0bi1zaGFwZSAubWRpe2ZvbnQtc2l6ZToyNHB4fS5jYXBpYmFyYSAuYnRuLXNoYXBlLmJ0bi1jaXJjbGV7cG9zaXRpb246cmVsYXRpdmU7Ym9yZGVyOm5vbmU7cGFkZGluZzowfS5jYXBpYmFyYSAuYnRuLXNoYXBlLmJ0bi1jaXJjbGU6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXCI7ZGlzcGxheTpibG9jaztwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjJweDt0b3A6MnB4O2JvcmRlci1yYWRpdXM6NTAlO2JhY2tncm91bmQ6Z3JleTt3aWR0aDoyMnB4O2hlaWdodDoyMnB4fS5jYXBpYmFyYSAuYnRuLXNoYXBlLmJ0bi1jaXJjbGUgc3Bhbntwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjFweDt0b3A6NnB4O3dpZHRoOjEwMCU7ZGlzcGxheTppbmxpbmUtYmxvY2s7Y29sb3I6I2ZmZjt0ZXh0LWFsaWduOmNlbnRlcn0uY2FwaWJhcmEgLmJ0bi1zaGFwZS5idG4tY2lyY2xlLW91dGxpbmV7cG9zaXRpb246cmVsYXRpdmU7Ym9yZGVyOm5vbmU7cGFkZGluZzowfS5jYXBpYmFyYSAuYnRuLXNoYXBlLmJ0bi1jaXJjbGUtb3V0bGluZTpiZWZvcmV7Y29udGVudDpcXFwiXFxcIjtkaXNwbGF5OmJsb2NrO3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MnB4O3RvcDozcHg7Ym9yZGVyLXJhZGl1czo1MCU7Ym9yZGVyOjJweCBzb2xpZCBncmV5O3dpZHRoOjIycHg7aGVpZ2h0OjIycHh9LmNhcGliYXJhIC5idG4tc2hhcGUuYnRuLWNpcmNsZS1vdXRsaW5lIHNwYW57cG9zaXRpb246YWJzb2x1dGU7bGVmdDoxcHg7dG9wOjZweDt3aWR0aDoxMDAlO2Rpc3BsYXk6aW5saW5lLWJsb2NrO2NvbG9yOmdyZXk7dGV4dC1hbGlnbjpjZW50ZXJ9LmNhcGliYXJhIC5idG4tc2hhcGUuYnRuLWRyb3B7cG9zaXRpb246cmVsYXRpdmU7Ym9yZGVyOm5vbmU7cGFkZGluZzowfS5jYXBpYmFyYSAuYnRuLXNoYXBlLmJ0bi1kcm9wOmJlZm9yZXtjb250ZW50OlxcXCJcXFwiO2Rpc3BsYXk6YmxvY2s7cG9zaXRpb246YWJzb2x1dGU7bGVmdDo0cHg7dG9wOjA7Ym9yZGVyLXJhZGl1czowIDUwJSA1MCUgNTAlO2JhY2tncm91bmQ6Z3JleTt3aWR0aDoyMHB4O2hlaWdodDoyMHB4O3RyYW5zZm9ybTp0cmFuc2xhdGUoLTJweCw0cHgpIHJvdGF0ZSg0NWRlZyl9LmNhcGliYXJhIC5idG4tc2hhcGUuYnRuLWRyb3Agc3Bhbntwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjA7dG9wOjZweDt3aWR0aDoxMDAlO2Rpc3BsYXk6aW5saW5lLWJsb2NrO2NvbG9yOiNmZmY7dGV4dC1hbGlnbjpjZW50ZXJ9LmNhcGliYXJhLmV4dGVuZGVkLXJpZ2h0IFt0b2dnbGUtc2lkZWJhci1yaWdodF0gc3ZnLC5jYXBpYmFyYS5oZWFkZXItZXh0ZW5kZWQgW3RvZ2dsZS1oZWFkZXJdIHN2Z3t0cmFuc2Zvcm06cm90YXRlKDE4MGRlZyl9LmNhcGliYXJhIC5idG4tcmFpc2Vke2JhY2tncm91bmQ6IzAwZjtib3JkZXI6MnB4IHNvbGlkICMwMGY7Y29sb3I6I2ZmZn0uY2FwaWJhcmEgLmJ0bi1vdXRsaW5le2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7Ym9yZGVyOjJweCBzb2xpZCAjMDBmO2NvbG9yOiMwMGZ9LmNhcGliYXJhIC5idG4tc2hhcGV7Y29sb3I6IzM3NDc0Zn0uY2FwaWJhcmEgLmJ0bi1zaGFwZS5idG4tY2lyY2xlLC5jYXBpYmFyYSAuYnRuLXNoYXBlLmJ0bi1kcm9we2NvbG9yOiNmZmZ9LmNhcGliYXJhIC5idG4tc2hhcGUuYnRuLWNpcmNsZTpiZWZvcmUsLmNhcGliYXJhIC5idG4tc2hhcGUuYnRuLWRyb3A6YmVmb3Jle2JhY2tncm91bmQ6IzM4OGUzY30uY2FwaWJhcmEgLmJ0bi1zaGFwZS5idG4tY2lyY2xlLW91dGxpbmU6YmVmb3Jle2JvcmRlci1jb2xvcjojMzg4ZTNjfS5jYXBpYmFyYSAuYnRuLWljb24sLmNhcGliYXJhIC5idG4tc2hhcGUuYnRuLWNpcmNsZS1vdXRsaW5lIHNwYW57Y29sb3I6IzM3NDc0Zn0uY2FwaWJhcmEgLmJ0bi1pY29uLmJ0bi1pY29uLXJhaXNlZHtiYWNrZ3JvdW5kOnJnYmEoODQsMTEwLDEyMiwuMSk7Ym9yZGVyLWNvbG9yOiM1NDZlN2E7Y29sb3I6IzU0NmU3YX0uY2FwaWJhcmEgLmJ0bi1pY29uLmJ0bi1pY29uLXJhaXNlZDphY3RpdmV7YmFja2dyb3VuZDojNTQ2ZTdhfS5jYXBpYmFyYSAuYnRuLWljb24uYnRuLWljb24tcmFpc2VkOmZvY3VzLC5jYXBpYmFyYSAuYnRuLWljb24uYnRuLWljb24tcmFpc2VkOmhvdmVye2JhY2tncm91bmQ6cmdiYSg4NCwxMTAsMTIyLC4zKX0uY2FwaWJhcmEgLmJ0bi1pY29uLmJ0bi1pY29uLW91dGxpbmV7YmFja2dyb3VuZDp0cmFuc3BhcmVudDtib3JkZXItY29sb3I6IzU0NmU3YTtjb2xvcjojNTQ2ZTdhfS5jYXBpYmFyYSAuYnRuLWljb24uYnRuLWljb24tb3V0bGluZTphY3RpdmV7YmFja2dyb3VuZDpyZ2JhKDg0LDExMCwxMjIsLjMpfS5jYXBpYmFyYSAuYnRuLWljb24uYnRuLWljb24tb3V0bGluZTpmb2N1cywuY2FwaWJhcmEgLmJ0bi1pY29uLmJ0bi1pY29uLW91dGxpbmU6aG92ZXJ7YmFja2dyb3VuZDpyZ2JhKDg0LDExMCwxMjIsLjEpfS5jYXBpYmFyYS5kYXJrLXRoZW1lIC5idG4tcmFpc2Vke2JhY2tncm91bmQ6IzQwNGU2OTtib3JkZXI6MnB4IHNvbGlkICNmMGYwZjA7Y29sb3I6I2YwZjBmMH0uY2FwaWJhcmEuZGFyay10aGVtZSAuYnRuLW91dGxpbmV7YmFja2dyb3VuZDp0cmFuc3BhcmVudDtib3JkZXI6MnB4IHNvbGlkICNmMGYwZjA7Y29sb3I6I2YwZjBmMH0uY2FwaWJhcmEuZGFyay10aGVtZSAuYnRuLXNoYXBlLC5jYXBpYmFyYS5kYXJrLXRoZW1lIC5idG4tc2hhcGUuYnRuLWNpcmNsZSwuY2FwaWJhcmEuZGFyay10aGVtZSAuYnRuLXNoYXBlLmJ0bi1kcm9we2NvbG9yOmhzbGEoMCwwJSw5NC4xJSwuOCl9LmNhcGliYXJhLmRhcmstdGhlbWUgLmJ0bi1zaGFwZS5idG4tY2lyY2xlOmJlZm9yZSwuY2FwaWJhcmEuZGFyay10aGVtZSAuYnRuLXNoYXBlLmJ0bi1kcm9wOmJlZm9yZXtiYWNrZ3JvdW5kOiMyZTdkMzJ9LmNhcGliYXJhLmRhcmstdGhlbWUgLmJ0bi1zaGFwZS5idG4tY2lyY2xlLW91dGxpbmU6YmVmb3Jle2JvcmRlci1jb2xvcjojMmU3ZDMyfS5jYXBpYmFyYS5kYXJrLXRoZW1lIC5idG4taWNvbiwuY2FwaWJhcmEuZGFyay10aGVtZSAuYnRuLXNoYXBlLmJ0bi1jaXJjbGUtb3V0bGluZSBzcGFue2NvbG9yOmhzbGEoMCwwJSw5NC4xJSwuOCl9LmNhcGliYXJhLmRhcmstdGhlbWUgLmJ0bi1pY29uLmJ0bi1pY29uLXJhaXNlZHtiYWNrZ3JvdW5kOmhzbGEoMCwwJSw5NC4xJSwuMSk7Ym9yZGVyLWNvbG9yOmhzbGEoMCwwJSw5NC4xJSwuOCk7Y29sb3I6aHNsYSgwLDAlLDk0LjElLC44KX0uY2FwaWJhcmEuZGFyay10aGVtZSAuYnRuLWljb24uYnRuLWljb24tcmFpc2VkOmFjdGl2ZXtiYWNrZ3JvdW5kOiNmMGYwZjB9LmNhcGliYXJhLmRhcmstdGhlbWUgLmJ0bi1pY29uLmJ0bi1pY29uLXJhaXNlZDpmb2N1cywuY2FwaWJhcmEuZGFyay10aGVtZSAuYnRuLWljb24uYnRuLWljb24tcmFpc2VkOmhvdmVye2JhY2tncm91bmQ6aHNsYSgwLDAlLDk0LjElLC4zKX0uY2FwaWJhcmEuZGFyay10aGVtZSAuYnRuLWljb24uYnRuLWljb24tb3V0bGluZXtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O2JvcmRlci1jb2xvcjpoc2xhKDAsMCUsOTQuMSUsLjgpO2NvbG9yOmhzbGEoMCwwJSw5NC4xJSwuOCl9LmNhcGliYXJhLmRhcmstdGhlbWUgLmJ0bi1pY29uLmJ0bi1pY29uLW91dGxpbmU6YWN0aXZle2JhY2tncm91bmQ6aHNsYSgwLDAlLDk0LjElLC4xKX0uY2FwaWJhcmEuZGFyay10aGVtZSAuYnRuLWljb24uYnRuLWljb24tb3V0bGluZTpmb2N1cywuY2FwaWJhcmEuZGFyay10aGVtZSAuYnRuLWljb24uYnRuLWljb24tb3V0bGluZTpob3ZlcntiYWNrZ3JvdW5kOmhzbGEoMCwwJSw5NC4xJSwwKX0uY2FwaWJhcmEgW2NhcC10b29sdGlwXXtwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmlubGluZS1ibG9ja30uY2FwaWJhcmEgW2NhcC10b29sdGlwXTpob3ZlcjpiZWZvcmV7cGFkZGluZzo4cHg7b3BhY2l0eToxO2JvcmRlci13aWR0aDoxcHg7aGVpZ2h0OmF1dG99LmNhcGliYXJhIFtjYXAtdG9vbHRpcF06YmVmb3Jle29wYWNpdHk6LjM7aGVpZ2h0OjA7cGFkZGluZzowIDhweDt0ZXh0LWFsaWduOmxlZnQ7b3ZlcmZsb3c6aGlkZGVuO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMDtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6Y2FsYygxMDAlICsgMThweCk7bGVmdDo1MCU7dHJhbnNmb3JtOnRyYW5zbGF0ZXgoLTUwJSk7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC43KTtib3JkZXI6MCBzb2xpZCAjMDAwO2JvcmRlci1yYWRpdXM6NXB4O2NvbG9yOiNmZmY7Y29udGVudDphdHRyKGNhcC10b29sdGlwKTt0ZXh0LXRyYW5zZm9ybTpub25lO3RyYW5zaXRpb246YWxsIC4ycyBlYXNlO21pbi13aWR0aDoxMDBweDt6LWluZGV4OjV9LmNhcGliYXJhIC5mbG9hdC1ib3gtY29udGFpbmVye292ZXJmbG93OnZpc2libGU7cG9zaXRpb246YWJzb2x1dGU7bGVmdDowO3RvcDowO3dpZHRoOjA7aGVpZ2h0OjB9LmNhcGliYXJhIC5mbG9hdC1ib3gtY29udGFpbmVyIC5mbG9hdC1ib3h7d2lkdGg6dmFyKC0tZGF5LXdpZHRoKTttYXgtd2lkdGg6dmFyKC0tZGF5LXdpZHRoKTttaW4td2lkdGg6dmFyKC0tZGF5LXdpZHRoKTtoZWlnaHQ6dmFyKC0taXRlbS1oZWlnaHQpO21heC1oZWlnaHQ6dmFyKC0taXRlbS1oZWlnaHQpO21pbi1oZWlnaHQ6dmFyKC0taXRlbS1oZWlnaHQpO3Bvc2l0aW9uOmFic29sdXRlO292ZXJmbG93OmhpZGRlbjtjdXJzb3I6ZGVmYXVsdH0uY2FwaWJhcmEgLmZsb2F0LWJveC1jb250YWluZXIgLmZsb2F0LWJveC5oYXMtbWVzc2FnZTphZnRlcntjb250ZW50OlxcXCJcXFwiO2Rpc3BsYXk6YmxvY2s7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MDtoZWlnaHQ6MDtyaWdodDowO3RvcDowO2JvcmRlci1jb2xvcjojMDAwICMwMDAgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQ7Ym9yZGVyLXN0eWxlOnNvbGlkO2JvcmRlci13aWR0aDo2cHg7LXdlYmtpdC1hbmltYXRpb246cHVsc2VNZXNzYWdlIDFzIGluZmluaXRlIGFsdGVybmF0ZTthbmltYXRpb246cHVsc2VNZXNzYWdlIDFzIGluZmluaXRlIGFsdGVybmF0ZX0uY2FwaWJhcmEgLmZsb2F0LWJveC1jb250YWluZXIgLmZsb2F0LWJveC5oYXMtZXJyb3JzOmJlZm9yZXtjb250ZW50OlxcXCJcXFwiO2Rpc3BsYXk6YmxvY2s7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6N3B4O2hlaWdodDo3cHg7bGVmdDoxcHg7dG9wOjFweDtib3JkZXItcmFkaXVzOjUwJTstd2Via2l0LWFuaW1hdGlvbjpwdWxzZUJhY2tncm91bmQgMXMgaW5maW5pdGUgYWx0ZXJuYXRlO2FuaW1hdGlvbjpwdWxzZUJhY2tncm91bmQgMXMgaW5maW5pdGUgYWx0ZXJuYXRlfS5jYXBpYmFyYSAuZmxvYXQtYm94LWNvbnRhaW5lciAuZmxvYXQtYm94IC5kb3QtY29udGFpbmVyLWJvdHRvbSwuY2FwaWJhcmEgLmZsb2F0LWJveC1jb250YWluZXIgLmZsb2F0LWJveCAuZG90LWNvbnRhaW5lci1taWRkbGUsLmNhcGliYXJhIC5mbG9hdC1ib3gtY29udGFpbmVyIC5mbG9hdC1ib3ggLmRvdC1jb250YWluZXItdG9we3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MDt3aWR0aDoxMDAlO292ZXJmbG93OnZpc2libGU7aGVpZ2h0OjA7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXJ9LmNhcGliYXJhIC5mbG9hdC1ib3gtY29udGFpbmVyIC5mbG9hdC1ib3ggLmRvdC1jb250YWluZXItdG9we3RvcDoxcHh9LmNhcGliYXJhIC5mbG9hdC1ib3gtY29udGFpbmVyIC5mbG9hdC1ib3ggLmRvdC1jb250YWluZXItdG9wIC5kb3R7Ym9yZGVyLXJhZGl1czowIDAgNTAlIDUwJX0uY2FwaWJhcmEgLmZsb2F0LWJveC1jb250YWluZXIgLmZsb2F0LWJveCAuZG90LWNvbnRhaW5lci1taWRkbGV7dG9wOmNhbGMoNTAlIC0gNHB4KX0uY2FwaWJhcmEgLmZsb2F0LWJveC1jb250YWluZXIgLmZsb2F0LWJveCAuZG90LWNvbnRhaW5lci1ib3R0b217Ym90dG9tOjVweH0uY2FwaWJhcmEgLmZsb2F0LWJveC1jb250YWluZXIgLmZsb2F0LWJveCAuZG90LWNvbnRhaW5lci1ib3R0b20gLmRvdHtib3JkZXItcmFkaXVzOjAgMCA1MCUgNTAlfS5jYXBpYmFyYSAuZmxvYXQtYm94LWNvbnRhaW5lciAuZmxvYXQtYm94IC5kb3R7d2lkdGg6OHB4O21pbi13aWR0aDo4cHg7aGVpZ2h0OjhweDtib3JkZXItcmFkaXVzOjUwJTtiYWNrZ3JvdW5kOiMwZmY7bWFyZ2luOjFweDt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7Ym9yZGVyOjFweCBzb2xpZCBoc2xhKDAsMCUsMTAwJSwuOCk7LXdlYmtpdC1iYWNrZHJvcC1maWx0ZXI6Ymx1cigycHgpO2JhY2tkcm9wLWZpbHRlcjpibHVyKDJweCl9LmNhcGliYXJhIC5mbG9hdC1ib3gtY29udGFpbmVyIC5mbG9hdC1ib3ggLmRvdC5kaWFtb25ke2JvcmRlci1yYWRpdXM6MDt0cmFuc2Zvcm06cm90YXRlKDQ1ZGVnKSBza2V3KDEwZGVnLDEwZGVnKX0uY2FwaWJhcmEgLmZsb2F0LWJveC1jb250YWluZXIgLmZsb2F0LWJveCAuZG90Lm91dGxpbmVke2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnR9LmNhcGliYXJhIC5mbG9hdC1ib3gtY29udGFpbmVyIC5mbG9hdC1ib3ggc3Bhbi5kYXRhe3dpZHRoOjEwMCU7ZGlzcGxheTpibG9jaztmb250LXNpemU6Ljg3NWVtO3RleHQtYWxpZ246Y2VudGVyO2JveC1zaXppbmc6Ym9yZGVyLWJveDtoZWlnaHQ6Y2FsYyh2YXIoLS1pdGVtLWhlaWdodCkvMik7bGluZS1oZWlnaHQ6Y2FsYyh2YXIoLS1pdGVtLWhlaWdodCkvMik7bWFyZ2luLWJvdHRvbToycHg7Zm9udC13ZWlnaHQ6NzAwO2JveC1zaGFkb3c6aW5zZXQgMCAwIDEwcHggaHNsYSgwLDAlLDEwMCUsLjIpO2JvcmRlci1yYWRpdXM6M3B4O2NvbG9yOiNmZmZ9LmNhcGliYXJhIC5mbG9hdC1ib3gtY29udGFpbmVyIC5mbG9hdC1ib3ggc3Bhbi5kYXRhOm5vdCguc2hhcGUtb3V0bGluZWQpe2JvcmRlcjoxcHggc29saWQgaHNsYSgwLDAlLDEwMCUsLjIpfS5jYXBpYmFyYSAuZmxvYXQtYm94LWNvbnRhaW5lciAuZmxvYXQtYm94IHNwYW4uZGF0YS5zaGFwZS1vdXRsaW5lZHtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O2JvcmRlcjoycHggc29saWQgZ3JleTstd2Via2l0LWJhY2tkcm9wLWZpbHRlcjpibHVyKDJweCk7YmFja2Ryb3AtZmlsdGVyOmJsdXIoMnB4KX0uY2FwaWJhcmEgLmZsb2F0LWJveC1jb250YWluZXIgLmZsb2F0LWJveCBzcGFuLmRhdGEuc2hhcGUtYmFye2hlaWdodDpjYWxjKHZhcigtLWl0ZW0taGVpZ2h0KS80KTtsaW5lLWhlaWdodDpjYWxjKHZhcigtLWl0ZW0taGVpZ2h0KS80ICsgMSk7Y29sb3I6dHJhbnNwYXJlbnQ7Ym9yZGVyLXJhZGl1czoxcHg7Ym9yZGVyOjFweCBzb2xpZCAjZmZmO21hcmdpbjowIDAgLTFweH0uY2FwaWJhcmEgLmZsb2F0LWJveC1jb250YWluZXIgLmZsb2F0LWJveCBzcGFuLmRhdGEuc2hhcGUtYmFyLW91dGxpbmVke2hlaWdodDpjYWxjKHZhcigtLWl0ZW0taGVpZ2h0KS80KTtsaW5lLWhlaWdodDowO2NvbG9yOnRyYW5zcGFyZW50O2JvcmRlci1yYWRpdXM6MXB4O21hcmdpbjowIDAgLTFweDtib3JkZXI6MnB4IHNvbGlkIGdyZXk7LXdlYmtpdC1iYWNrZHJvcC1maWx0ZXI6Ymx1cigycHgpO2JhY2tkcm9wLWZpbHRlcjpibHVyKDJweCl9LmNhcGliYXJhIC5mbG9hdC1ib3gtY29udGFpbmVyIC5mbG9hdC1ib3ggc3Bhbi5kYXRhLnNoYXBlLWJhcntib3JkZXItY29sb3I6I2ZmZn0uY2FwaWJhcmEuZGFyay10aGVtZSAuZmxvYXQtYm94LWNvbnRhaW5lciAuZmxvYXQtYm94IHNwYW4uZGF0YS5zaGFwZS1iYXJ7Ym9yZGVyLWNvbG9yOiMzMTNiNTB9LmNhcGliYXJhIC5wcm9ncmVzcy1iYXJ7d2lkdGg6MTAwJTtoZWlnaHQ6NHB4O2JhY2tncm91bmQtY29sb3I6aHNsYSgwLDAlLDg2LjclLC4yKTtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246YWJzb2x1dGU7bGVmdDowO2JvdHRvbTowO3RyYW5zaXRpb246aGVpZ2h0IDFzIGVhc2V9LmNhcGliYXJhIC5wcm9ncmVzcy1iYXIuaGlkZS1wcm9ncmVzc3toZWlnaHQ6MH0uY2FwaWJhcmEgLnByb2dyZXNzLWJhcjpiZWZvcmV7LXdlYmtpdC1hbmltYXRpb24tbmFtZTpsb2FkaW5nLWZhc3QxO2FuaW1hdGlvbi1uYW1lOmxvYWRpbmctZmFzdDE7LXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOmVhc2Utb3V0O2FuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246ZWFzZS1vdXQ7LXdlYmtpdC1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50OmluZmluaXRlO2FuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6aW5maW5pdGV9LmNhcGliYXJhIC5wcm9ncmVzcy1iYXI6YWZ0ZXIsLmNhcGliYXJhIC5wcm9ncmVzcy1iYXI6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXCI7cG9zaXRpb246YWJzb2x1dGU7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTEwMCUpO3dpZHRoOjYyLjUlO2hlaWdodDoxMDAlO2JhY2tncm91bmQtY29sb3I6IzI5MjkyOTstd2Via2l0LWFuaW1hdGlvbi1kdXJhdGlvbjoyczthbmltYXRpb24tZHVyYXRpb246MnN9LmNhcGliYXJhIC5wcm9ncmVzcy1iYXI6YWZ0ZXJ7LXdlYmtpdC1hbmltYXRpb24tbmFtZTpsb2FkaW5nLWZhc3QyO2FuaW1hdGlvbi1uYW1lOmxvYWRpbmctZmFzdDI7LXdlYmtpdC1hbmltYXRpb24tZGVsYXk6MS4zczthbmltYXRpb24tZGVsYXk6MS4zczstd2Via2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246ZWFzZS1vdXQ7YW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjplYXNlLW91dDstd2Via2l0LWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6aW5maW5pdGU7YW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDppbmZpbml0ZX1zcGFuLm1kaXttaW4td2lkdGg6MTRweDttaW4taGVpZ2h0OjE0cHg7ZGlzcGxheTppbmxpbmUtYmxvY2t9c3Bhbi5tZGkubWRpLXN1YmRpcmVjdG9yeS1hcnJvdy1yaWdodHtjb2xvcjpyZ2JhKDAsMCwwLC4yKX0uY2FwaWJhcmEgLmxpZ2h0e2Rpc3BsYXk6YmxvY2s7d2lkdGg6MThweDtoZWlnaHQ6MThweDtmbGV4OjAgMCAxOHB4O2JvcmRlci1yYWRpdXM6NTAlO21hcmdpbjoxMnB4IDhweDtib3JkZXI6MnB4IHNvbGlkIHJnYmEoMCwwLDAsLjMpO2JvcmRlci1jb2xvcjpoc2xhKDAsMCUsMTAwJSwuOCl9LmNhcGliYXJhIC5saWdodC5yZWQtbGlnaHR7YmFja2dyb3VuZDojZDMyZjJmfS5jYXBpYmFyYSAubGlnaHQueWVsbG93LWxpZ2h0e2JhY2tncm91bmQ6I2ZkZDgzNX0uY2FwaWJhcmEgLmxpZ2h0LmdyZWVuLWxpZ2h0e2JhY2tncm91bmQ6IzJlN2QzMn0uY2FwaWJhcmEuZGFyay10aGVtZSAubGlnaHR7Ym9yZGVyLWNvbG9yOiM0MDRlNjl9LmNhcGliYXJhLmRhcmstdGhlbWUgLmxpZ2h0LnJlZC1saWdodHtiYWNrZ3JvdW5kOiNiNzFjMWN9LmNhcGliYXJhLmRhcmstdGhlbWUgLmxpZ2h0LnllbGxvdy1saWdodHtiYWNrZ3JvdW5kOiNmYjhjMDB9LmNhcGliYXJhLmRhcmstdGhlbWUgLmxpZ2h0LmdyZWVuLWxpZ2h0e2JhY2tncm91bmQ6IzM4OGUzY30uY2FwaWJhcmEgc2VsZWN0LnRhYnMtc2VsZWN0e2JhY2tncm91bmQ6Z3JleTtjb2xvcjojZmZmO2ZvbnQtc2l6ZToxNnB4O291dGxpbmU6bm9uZTt3aWR0aDoxMDBweDtwYWRkaW5nOjNweCAxOHB4O2ZvbnQtd2VpZ2h0OjcwMDtib3JkZXI6MXB4IHNvbGlkIHRyYW5zcGFyZW50O21hcmdpbjo4cHg7Ym9yZGVyLXJhZGl1czozMHB4O3RyYW5zaXRpb246YmFja2dyb3VuZCAuMnMgZWFzZTstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZTthcHBlYXJhbmNlOm5vbmV9LmNhcGliYXJhIHNlbGVjdC50YWJzLXNlbGVjdCBvcHRpb257Y29sb3I6Z3JleTtiYWNrZ3JvdW5kOiNmZmY7cGFkZGluZzoxNXB4fS5jYXBpYmFyYSBzZWxlY3QudGFicy1zZWxlY3Q6YWZ0ZXJ7Y29udGVudDpcXFwiXFxcIjtkaXNwbGF5OmJsb2NrO3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OjEwcHg7dG9wOjRweDtib3JkZXItd2lkdGg6NHB4O2JvcmRlci1jb2xvcjojZmZmO3otaW5kZXg6Mn0uY2FwaWJhcmEgc2VsZWN0LnRhYnMtc2VsZWN0LmRpc2FibGVke2NvbG9yOmdyZXl9LmNhcGliYXJhIHNlbGVjdC50YWJzLXNlbGVjdDpob3Zlcntib3JkZXItY29sb3I6Z3JleX1cIiwgXCJcIl0pO1xuLy8gRXhwb3J0c1xubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/src/index.js!./node_modules/sass-loader/dist/cjs.js!./src/scss/style.scss\n");
|
|
106
|
+
eval("// Imports\nvar ___CSS_LOADER_API_IMPORT___ = __webpack_require__(/*! ../../node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\nexports.push([module.i, \"@import url(https://fonts.googleapis.com/css2?family=Roboto:ital,wght@0,300;0,400;0,500;0,700;0,900;1,300;1,400;1,500;1,700;1,900&display=swap);\"]);\n// Module\nexports.push([module.i, \":root{--header-top-height:40px;--header-height:98px;--header-labels-height:50px;--header-day-height:24px;--ex-header-height:110px;--header-input-height:20px;--nav-width:200px;--nav-item-col-width:60px;--initial-nav-width:0px;--ex-nav-width:0px;--btn-nav-width:117px;--nav-right-width:300px;--item-min-width:100px;--item-height:45px;--day-width:45px;--font-size:16px}@-webkit-keyframes pulseMessage{0%{border-color:rgba(211,47,47,.3) rgba(211,47,47,.3) transparent transparent}to{border-color:#d32f2f #d32f2f transparent transparent}}@keyframes pulseMessage{0%{border-color:rgba(211,47,47,.3) rgba(211,47,47,.3) transparent transparent}to{border-color:#d32f2f #d32f2f transparent transparent}}@-webkit-keyframes pulseBackground{0%{background:rgba(211,47,47,.3)}to{background:#d32f2f}}@keyframes pulseBackground{0%{background:rgba(211,47,47,.3)}to{background:#d32f2f}}@-webkit-keyframes loading-fast1{0%{transform:translateX(-100%)}40%{transform:translateX(-100%)}to{transform:translateX(200%)}}@keyframes loading-fast1{0%{transform:translateX(-100%)}40%{transform:translateX(-100%)}to{transform:translateX(200%)}}@-webkit-keyframes loading-fast2{0%{transform:translateX(-100%)}15%{transform:translateX(-100%)}to{transform:translateX(200%)}}@keyframes loading-fast2{0%{transform:translateX(-100%)}15%{transform:translateX(-100%)}to{transform:translateX(200%)}}.capibara.c-red:not(.dark-theme) ::-webkit-scrollbar-thumb{background:#df554b}.capibara.c-red:not(.dark-theme) .header-top{background:#fdfaf9}.capibara.c-red:not(.dark-theme) .corner{background:#fdfaf9;border-color:#f99d97}.capibara.c-red:not(.dark-theme) .container-tl header{background:#fdfaf9;border-bottom-color:#f99d97}.capibara.c-red:not(.dark-theme) .container-tl header .mes.mes-reduced:after{background:linear-gradient(90deg,transparent,#fff8f7)!important}.capibara.c-red:not(.dark-theme) nav.right{border-color:#f99d97}.capibara.c-red.dark-theme .header-top,.capibara.c-red.dark-theme nav.right{border-color:#ba160a}.capibara.c-red.dark-theme .container-tl header,.capibara.c-red.dark-theme .corner{border-bottom-color:#ba160a}.capibara.c-red.dark-theme .progress-bar,.capibara.c-red .progress-bar{background-color:rgba(244,67,54,.2)!important}.capibara.c-red.dark-theme .progress-bar:after,.capibara.c-red.dark-theme .progress-bar:before,.capibara.c-red .progress-bar:after,.capibara.c-red .progress-bar:before{background-color:#f44336!important}.capibara.c-red.dark-theme select.tabs-select,.capibara.c-red select.tabs-select{background-color:rgba(244,67,54,.7)!important;border-color:#f44336!important}.capibara.c-red.dark-theme .time,.capibara.c-red .time{border-color:rgba(244,67,54,.6)}.capibara.c-red.dark-theme .time .symbol,.capibara.c-red .time .symbol{color:#f44336}.capibara.c-red.dark-theme .time input:active,.capibara.c-red.dark-theme .time input:focus,.capibara.c-red .time input:active,.capibara.c-red .time input:focus{border-color:#f44336;box-shadow:0 4px 6px rgba(244,67,54,.2)}.capibara.c-red.dark-theme .input-box,.capibara.c-red.dark-theme .input-section input.nav-input,.capibara.c-red .input-box,.capibara.c-red .input-section input.nav-input{border-color:rgba(244,67,54,.6)}.capibara.c-red.dark-theme .input-section input.nav-input:active,.capibara.c-red.dark-theme .input-section input.nav-input:focus,.capibara.c-red .input-section input.nav-input:active,.capibara.c-red .input-section input.nav-input:focus{border-color:#f44336;box-shadow:0 4px 6px rgba(244,67,54,.2)}.capibara.c-red.dark-theme .input-section.msj-input-container textarea.msj,.capibara.c-red .input-section.msj-input-container textarea.msj{border:2px solid #f44336}.capibara.c-red.dark-theme .input-section.msj-input-container textarea.msj:active,.capibara.c-red.dark-theme .input-section.msj-input-container textarea.msj:focus,.capibara.c-red .input-section.msj-input-container textarea.msj:active,.capibara.c-red .input-section.msj-input-container textarea.msj:focus{box-shadow:0 4px 6px rgba(244,67,54,.2)}.capibara.c-red .btn-raised,.capibara.c-red.dark-theme .btn-raised{border-color:#f44336;background:rgba(244,67,54,.8)}.capibara.c-red .btn-outline,.capibara.c-red.dark-theme .btn-outline{border-color:#f44336;color:#f44336}.capibara.c-red.dark-theme .select-container .selected-day,.capibara.c-red .select-container .selected-day{background:rgba(244,67,54,.3);box-shadow:inset 0 0 10px rgba(244,67,54,.5)}.capibara .c-red--background{background:#f44336!important}.capibara .c-red-d--background{background:#d2190b!important}.capibara .c-red-l--background{background:#f8877f!important}.capibara .c-red--text{color:#f44336!important}.capibara .c-red-d--text{color:#d2190b!important}.capibara .c-red-l--text{color:#f8877f!important}.capibara .detail-day .list-detail .item-detail.c-red{background:rgba(244,67,54,.2);border:1px solid #f44336}.capibara .detail-day .list-detail .item-detail.c-red .left-icon{background:#f44336}.capibara .detail-day .list-detail .item-detail.c-red .left-icon.outlined{border:1px solid #f44336;box-shadow:inset 0 0 0 1px rgba(244,67,54,.7)}.capibara .detail-day .list-detail .item-detail.c-red .name{color:#f44336}.capibara .float-box-container .float-box span.data.c-red{background:rgba(244,67,54,.8)}.capibara .float-box-container .float-box span.data.shape-outlined.c-red{border-color:rgba(244,67,54,.9);background:rgba(244,67,54,.1);color:#f44336}.capibara .float-box-container .float-box span.data.shape-bar.c-red{background:#f44336}.capibara .float-box-container .float-box span.data.shape-bar-outlined.c-red{background:rgba(244,67,54,.5)}.capibara .float-box-container .float-box .dot.c-red{background:#f44336}.capibara .float-box-container .float-box .dot.c-red.outlined{border:1px solid #f44336;box-shadow:inset 0 0 0 1px rgba(244,67,54,.7)}.capibara .header-top .tabs-container .tab:not(.disabled).c-red.active{background:rgba(244,67,54,.7);border-color:rgba(244,67,54,.7);color:#fff}.capibara .header-top .tabs-container .tab:not(.disabled).c-red.active:hover{background:rgba(244,67,54,.8)}.capibara .header-top .tabs-container .tab:not(.disabled).c-red:hover{background:rgba(244,67,54,.2);border-color:rgba(244,67,54,.9)}.capibara .input-box .mini-input-section--icon.c-red{background:#f44336}.capibara.c-pink:not(.dark-theme) ::-webkit-scrollbar-thumb{background:#d0376b}.capibara.c-pink:not(.dark-theme) .header-top{background:#f0e3e7}.capibara.c-pink:not(.dark-theme) .corner{background:#f0e3e7;border-color:#f27ba3}.capibara.c-pink:not(.dark-theme) .container-tl header{background:#f0e3e7;border-bottom-color:#f27ba3}.capibara.c-pink:not(.dark-theme) .container-tl header .mes.mes-reduced:after{background:linear-gradient(90deg,transparent,#fbd8e4)!important}.capibara.c-pink:not(.dark-theme) nav.right{border-color:#f27ba3}.capibara.c-pink.dark-theme .header-top,.capibara.c-pink.dark-theme nav.right{border-color:#930e3b}.capibara.c-pink.dark-theme .container-tl header,.capibara.c-pink.dark-theme .corner{border-bottom-color:#930e3b}.capibara.c-pink.dark-theme .progress-bar,.capibara.c-pink .progress-bar{background-color:rgba(233,30,99,.2)!important}.capibara.c-pink.dark-theme .progress-bar:after,.capibara.c-pink.dark-theme .progress-bar:before,.capibara.c-pink .progress-bar:after,.capibara.c-pink .progress-bar:before{background-color:#e91e63!important}.capibara.c-pink.dark-theme select.tabs-select,.capibara.c-pink select.tabs-select{background-color:rgba(233,30,99,.7)!important;border-color:#e91e63!important}.capibara.c-pink.dark-theme .time,.capibara.c-pink .time{border-color:rgba(233,30,99,.6)}.capibara.c-pink.dark-theme .time .symbol,.capibara.c-pink .time .symbol{color:#e91e63}.capibara.c-pink.dark-theme .time input:active,.capibara.c-pink.dark-theme .time input:focus,.capibara.c-pink .time input:active,.capibara.c-pink .time input:focus{border-color:#e91e63;box-shadow:0 4px 6px rgba(233,30,99,.2)}.capibara.c-pink.dark-theme .input-box,.capibara.c-pink.dark-theme .input-section input.nav-input,.capibara.c-pink .input-box,.capibara.c-pink .input-section input.nav-input{border-color:rgba(233,30,99,.6)}.capibara.c-pink.dark-theme .input-section input.nav-input:active,.capibara.c-pink.dark-theme .input-section input.nav-input:focus,.capibara.c-pink .input-section input.nav-input:active,.capibara.c-pink .input-section input.nav-input:focus{border-color:#e91e63;box-shadow:0 4px 6px rgba(233,30,99,.2)}.capibara.c-pink.dark-theme .input-section.msj-input-container textarea.msj,.capibara.c-pink .input-section.msj-input-container textarea.msj{border:2px solid #e91e63}.capibara.c-pink.dark-theme .input-section.msj-input-container textarea.msj:active,.capibara.c-pink.dark-theme .input-section.msj-input-container textarea.msj:focus,.capibara.c-pink .input-section.msj-input-container textarea.msj:active,.capibara.c-pink .input-section.msj-input-container textarea.msj:focus{box-shadow:0 4px 6px rgba(233,30,99,.2)}.capibara.c-pink .btn-raised,.capibara.c-pink.dark-theme .btn-raised{border-color:#e91e63;background:rgba(233,30,99,.8)}.capibara.c-pink .btn-outline,.capibara.c-pink.dark-theme .btn-outline{border-color:#e91e63;color:#e91e63}.capibara.c-pink.dark-theme .select-container .selected-day,.capibara.c-pink .select-container .selected-day{background:rgba(233,30,99,.3);box-shadow:inset 0 0 10px rgba(233,30,99,.5)}.capibara .c-pink--background{background:#e91e63!important}.capibara .c-pink-d--background{background:#aa1145!important}.capibara .c-pink-l--background{background:#f06493!important}.capibara .c-pink--text{color:#e91e63!important}.capibara .c-pink-d--text{color:#aa1145!important}.capibara .c-pink-l--text{color:#f06493!important}.capibara .detail-day .list-detail .item-detail.c-pink{background:rgba(233,30,99,.2);border:1px solid #e91e63}.capibara .detail-day .list-detail .item-detail.c-pink .left-icon{background:#e91e63}.capibara .detail-day .list-detail .item-detail.c-pink .left-icon.outlined{border:1px solid #e91e63;box-shadow:inset 0 0 0 1px rgba(233,30,99,.7)}.capibara .detail-day .list-detail .item-detail.c-pink .name{color:#e91e63}.capibara .float-box-container .float-box span.data.c-pink{background:rgba(233,30,99,.8)}.capibara .float-box-container .float-box span.data.shape-outlined.c-pink{border-color:rgba(233,30,99,.9);background:rgba(233,30,99,.1);color:#e91e63}.capibara .float-box-container .float-box span.data.shape-bar.c-pink{background:#e91e63}.capibara .float-box-container .float-box span.data.shape-bar-outlined.c-pink{background:rgba(233,30,99,.5)}.capibara .float-box-container .float-box .dot.c-pink{background:#e91e63}.capibara .float-box-container .float-box .dot.c-pink.outlined{border:1px solid #e91e63;box-shadow:inset 0 0 0 1px rgba(233,30,99,.7)}.capibara .header-top .tabs-container .tab:not(.disabled).c-pink.active{background:rgba(233,30,99,.7);border-color:rgba(233,30,99,.7);color:#fff}.capibara .header-top .tabs-container .tab:not(.disabled).c-pink.active:hover{background:rgba(233,30,99,.8)}.capibara .header-top .tabs-container .tab:not(.disabled).c-pink:hover{background:rgba(233,30,99,.2);border-color:rgba(233,30,99,.9)}.capibara .input-box .mini-input-section--icon.c-pink{background:#e91e63}.capibara.c-purple:not(.dark-theme) ::-webkit-scrollbar-thumb{background:#8d3d9b}.capibara.c-purple:not(.dark-theme) .header-top{background:#d6cbd8}.capibara.c-purple:not(.dark-theme) .corner{background:#d6cbd8;border-color:#ca61dc}.capibara.c-purple:not(.dark-theme) .container-tl header{background:#d6cbd8;border-bottom-color:#ca61dc}.capibara.c-purple:not(.dark-theme) .container-tl header .mes.mes-reduced:after{background:linear-gradient(90deg,transparent,#e6b5ee)!important}.capibara.c-purple:not(.dark-theme) nav.right{border-color:#ca61dc}.capibara.c-purple.dark-theme .header-top,.capibara.c-purple.dark-theme nav.right{border-color:#52145d}.capibara.c-purple.dark-theme .container-tl header,.capibara.c-purple.dark-theme .corner{border-bottom-color:#52145d}.capibara.c-purple.dark-theme .progress-bar,.capibara.c-purple .progress-bar{background-color:rgba(156,39,176,.2)!important}.capibara.c-purple.dark-theme .progress-bar:after,.capibara.c-purple.dark-theme .progress-bar:before,.capibara.c-purple .progress-bar:after,.capibara.c-purple .progress-bar:before{background-color:#9c27b0!important}.capibara.c-purple.dark-theme select.tabs-select,.capibara.c-purple select.tabs-select{background-color:rgba(156,39,176,.7)!important;border-color:#9c27b0!important}.capibara.c-purple.dark-theme .time,.capibara.c-purple .time{border-color:rgba(156,39,176,.6)}.capibara.c-purple.dark-theme .time .symbol,.capibara.c-purple .time .symbol{color:#9c27b0}.capibara.c-purple.dark-theme .time input:active,.capibara.c-purple.dark-theme .time input:focus,.capibara.c-purple .time input:active,.capibara.c-purple .time input:focus{border-color:#9c27b0;box-shadow:0 4px 6px rgba(156,39,176,.2)}.capibara.c-purple.dark-theme .input-box,.capibara.c-purple.dark-theme .input-section input.nav-input,.capibara.c-purple .input-box,.capibara.c-purple .input-section input.nav-input{border-color:rgba(156,39,176,.6)}.capibara.c-purple.dark-theme .input-section input.nav-input:active,.capibara.c-purple.dark-theme .input-section input.nav-input:focus,.capibara.c-purple .input-section input.nav-input:active,.capibara.c-purple .input-section input.nav-input:focus{border-color:#9c27b0;box-shadow:0 4px 6px rgba(156,39,176,.2)}.capibara.c-purple.dark-theme .input-section.msj-input-container textarea.msj,.capibara.c-purple .input-section.msj-input-container textarea.msj{border:2px solid #9c27b0}.capibara.c-purple.dark-theme .input-section.msj-input-container textarea.msj:active,.capibara.c-purple.dark-theme .input-section.msj-input-container textarea.msj:focus,.capibara.c-purple .input-section.msj-input-container textarea.msj:active,.capibara.c-purple .input-section.msj-input-container textarea.msj:focus{box-shadow:0 4px 6px rgba(156,39,176,.2)}.capibara.c-purple .btn-raised,.capibara.c-purple.dark-theme .btn-raised{border-color:#9c27b0;background:rgba(156,39,176,.8)}.capibara.c-purple .btn-outline,.capibara.c-purple.dark-theme .btn-outline{border-color:#9c27b0;color:#9c27b0}.capibara.c-purple.dark-theme .select-container .selected-day,.capibara.c-purple .select-container .selected-day{background:rgba(156,39,176,.3);box-shadow:inset 0 0 10px rgba(156,39,176,.5)}.capibara .c-purple--background{background:#9c27b0!important}.capibara .c-purple-d--background{background:#641971!important}.capibara .c-purple-l--background{background:#c34cd7!important}.capibara .c-purple--text{color:#9c27b0!important}.capibara .c-purple-d--text{color:#641971!important}.capibara .c-purple-l--text{color:#c34cd7!important}.capibara .detail-day .list-detail .item-detail.c-purple{background:rgba(156,39,176,.2);border:1px solid #9c27b0}.capibara .detail-day .list-detail .item-detail.c-purple .left-icon{background:#9c27b0}.capibara .detail-day .list-detail .item-detail.c-purple .left-icon.outlined{border:1px solid #9c27b0;box-shadow:inset 0 0 0 1px rgba(156,39,176,.7)}.capibara .detail-day .list-detail .item-detail.c-purple .name{color:#9c27b0}.capibara .float-box-container .float-box span.data.c-purple{background:rgba(156,39,176,.8)}.capibara .float-box-container .float-box span.data.shape-outlined.c-purple{border-color:rgba(156,39,176,.9);background:rgba(156,39,176,.1);color:#9c27b0}.capibara .float-box-container .float-box span.data.shape-bar.c-purple{background:#9c27b0}.capibara .float-box-container .float-box span.data.shape-bar-outlined.c-purple{background:rgba(156,39,176,.5)}.capibara .float-box-container .float-box .dot.c-purple{background:#9c27b0}.capibara .float-box-container .float-box .dot.c-purple.outlined{border:1px solid #9c27b0;box-shadow:inset 0 0 0 1px rgba(156,39,176,.7)}.capibara .header-top .tabs-container .tab:not(.disabled).c-purple.active{background:rgba(156,39,176,.7);border-color:rgba(156,39,176,.7);color:#fff}.capibara .header-top .tabs-container .tab:not(.disabled).c-purple.active:hover{background:rgba(156,39,176,.8)}.capibara .header-top .tabs-container .tab:not(.disabled).c-purple:hover{background:rgba(156,39,176,.2);border-color:rgba(156,39,176,.9)}.capibara .input-box .mini-input-section--icon.c-purple{background:#9c27b0}.capibara.c-deep-purple:not(.dark-theme) ::-webkit-scrollbar-thumb{background:#6e529f}.capibara.c-deep-purple:not(.dark-theme) .header-top{background:#dededf}.capibara.c-deep-purple:not(.dark-theme) .corner{background:#dededf;border-color:#9f80d7}.capibara.c-deep-purple:not(.dark-theme) .container-tl header{background:#dededf;border-bottom-color:#9f80d7}.capibara.c-deep-purple:not(.dark-theme) .container-tl header .mes.mes-reduced:after{background:linear-gradient(90deg,transparent,#daceef)!important}.capibara.c-deep-purple:not(.dark-theme) nav.right{border-color:#9f80d7}.capibara.c-deep-purple.dark-theme .header-top,.capibara.c-deep-purple.dark-theme nav.right{border-color:#3b216a}.capibara.c-deep-purple.dark-theme .container-tl header,.capibara.c-deep-purple.dark-theme .corner{border-bottom-color:#3b216a}.capibara.c-deep-purple.dark-theme .progress-bar,.capibara.c-deep-purple .progress-bar{background-color:rgba(103,58,183,.2)!important}.capibara.c-deep-purple.dark-theme .progress-bar:after,.capibara.c-deep-purple.dark-theme .progress-bar:before,.capibara.c-deep-purple .progress-bar:after,.capibara.c-deep-purple .progress-bar:before{background-color:#673ab7!important}.capibara.c-deep-purple.dark-theme select.tabs-select,.capibara.c-deep-purple select.tabs-select{background-color:rgba(103,58,183,.7)!important;border-color:#673ab7!important}.capibara.c-deep-purple.dark-theme .time,.capibara.c-deep-purple .time{border-color:rgba(103,58,183,.6)}.capibara.c-deep-purple.dark-theme .time .symbol,.capibara.c-deep-purple .time .symbol{color:#673ab7}.capibara.c-deep-purple.dark-theme .time input:active,.capibara.c-deep-purple.dark-theme .time input:focus,.capibara.c-deep-purple .time input:active,.capibara.c-deep-purple .time input:focus{border-color:#673ab7;box-shadow:0 4px 6px rgba(103,58,183,.2)}.capibara.c-deep-purple.dark-theme .input-box,.capibara.c-deep-purple.dark-theme .input-section input.nav-input,.capibara.c-deep-purple .input-box,.capibara.c-deep-purple .input-section input.nav-input{border-color:rgba(103,58,183,.6)}.capibara.c-deep-purple.dark-theme .input-section input.nav-input:active,.capibara.c-deep-purple.dark-theme .input-section input.nav-input:focus,.capibara.c-deep-purple .input-section input.nav-input:active,.capibara.c-deep-purple .input-section input.nav-input:focus{border-color:#673ab7;box-shadow:0 4px 6px rgba(103,58,183,.2)}.capibara.c-deep-purple.dark-theme .input-section.msj-input-container textarea.msj,.capibara.c-deep-purple .input-section.msj-input-container textarea.msj{border:2px solid #673ab7}.capibara.c-deep-purple.dark-theme .input-section.msj-input-container textarea.msj:active,.capibara.c-deep-purple.dark-theme .input-section.msj-input-container textarea.msj:focus,.capibara.c-deep-purple .input-section.msj-input-container textarea.msj:active,.capibara.c-deep-purple .input-section.msj-input-container textarea.msj:focus{box-shadow:0 4px 6px rgba(103,58,183,.2)}.capibara.c-deep-purple .btn-raised,.capibara.c-deep-purple.dark-theme .btn-raised{border-color:#673ab7;background:rgba(103,58,183,.8)}.capibara.c-deep-purple .btn-outline,.capibara.c-deep-purple.dark-theme .btn-outline{border-color:#673ab7;color:#673ab7}.capibara.c-deep-purple.dark-theme .select-container .selected-day,.capibara.c-deep-purple .select-container .selected-day{background:rgba(103,58,183,.3);box-shadow:inset 0 0 10px rgba(103,58,183,.5)}.capibara .c-deep-purple--background{background:#673ab7!important}.capibara .c-deep-purple-d--background{background:#46287d!important}.capibara .c-deep-purple-l--background{background:#916dd1!important}.capibara .c-deep-purple--text{color:#673ab7!important}.capibara .c-deep-purple-d--text{color:#46287d!important}.capibara .c-deep-purple-l--text{color:#916dd1!important}.capibara .detail-day .list-detail .item-detail.c-deep-purple{background:rgba(103,58,183,.2);border:1px solid #673ab7}.capibara .detail-day .list-detail .item-detail.c-deep-purple .left-icon{background:#673ab7}.capibara .detail-day .list-detail .item-detail.c-deep-purple .left-icon.outlined{border:1px solid #673ab7;box-shadow:inset 0 0 0 1px rgba(103,58,183,.7)}.capibara .detail-day .list-detail .item-detail.c-deep-purple .name{color:#673ab7}.capibara .float-box-container .float-box span.data.c-deep-purple{background:rgba(103,58,183,.8)}.capibara .float-box-container .float-box span.data.shape-outlined.c-deep-purple{border-color:rgba(103,58,183,.9);background:rgba(103,58,183,.1);color:#673ab7}.capibara .float-box-container .float-box span.data.shape-bar.c-deep-purple{background:#673ab7}.capibara .float-box-container .float-box span.data.shape-bar-outlined.c-deep-purple{background:rgba(103,58,183,.5)}.capibara .float-box-container .float-box .dot.c-deep-purple{background:#673ab7}.capibara .float-box-container .float-box .dot.c-deep-purple.outlined{border:1px solid #673ab7;box-shadow:inset 0 0 0 1px rgba(103,58,183,.7)}.capibara .header-top .tabs-container .tab:not(.disabled).c-deep-purple.active{background:rgba(103,58,183,.7);border-color:rgba(103,58,183,.7);color:#fff}.capibara .header-top .tabs-container .tab:not(.disabled).c-deep-purple.active:hover{background:rgba(103,58,183,.8)}.capibara .header-top .tabs-container .tab:not(.disabled).c-deep-purple:hover{background:rgba(103,58,183,.2);border-color:rgba(103,58,183,.9)}.capibara .input-box .mini-input-section--icon.c-deep-purple{background:#673ab7}.capibara.c-indigo:not(.dark-theme) ::-webkit-scrollbar-thumb{background:#57629d}.capibara.c-indigo:not(.dark-theme) .header-top{background:#e0e0e0}.capibara.c-indigo:not(.dark-theme) .corner{background:#e0e0e0;border-color:#8591d5}.capibara.c-indigo:not(.dark-theme) .container-tl header{background:#e0e0e0;border-bottom-color:#8591d5}.capibara.c-indigo:not(.dark-theme) .container-tl header .mes.mes-reduced:after{background:linear-gradient(90deg,transparent,#d1d6ef)!important}.capibara.c-indigo:not(.dark-theme) nav.right{border-color:#8591d5}.capibara.c-indigo.dark-theme .header-top,.capibara.c-indigo.dark-theme nav.right{border-color:#252f69}.capibara.c-indigo.dark-theme .container-tl header,.capibara.c-indigo.dark-theme .corner{border-bottom-color:#252f69}.capibara.c-indigo.dark-theme .progress-bar,.capibara.c-indigo .progress-bar{background-color:rgba(63,81,181,.2)!important}.capibara.c-indigo.dark-theme .progress-bar:after,.capibara.c-indigo.dark-theme .progress-bar:before,.capibara.c-indigo .progress-bar:after,.capibara.c-indigo .progress-bar:before{background-color:#3f51b5!important}.capibara.c-indigo.dark-theme select.tabs-select,.capibara.c-indigo select.tabs-select{background-color:rgba(63,81,181,.7)!important;border-color:#3f51b5!important}.capibara.c-indigo.dark-theme .time,.capibara.c-indigo .time{border-color:rgba(63,81,181,.6)}.capibara.c-indigo.dark-theme .time .symbol,.capibara.c-indigo .time .symbol{color:#3f51b5}.capibara.c-indigo.dark-theme .time input:active,.capibara.c-indigo.dark-theme .time input:focus,.capibara.c-indigo .time input:active,.capibara.c-indigo .time input:focus{border-color:#3f51b5;box-shadow:0 4px 6px rgba(63,81,181,.2)}.capibara.c-indigo.dark-theme .input-box,.capibara.c-indigo.dark-theme .input-section input.nav-input,.capibara.c-indigo .input-box,.capibara.c-indigo .input-section input.nav-input{border-color:rgba(63,81,181,.6)}.capibara.c-indigo.dark-theme .input-section input.nav-input:active,.capibara.c-indigo.dark-theme .input-section input.nav-input:focus,.capibara.c-indigo .input-section input.nav-input:active,.capibara.c-indigo .input-section input.nav-input:focus{border-color:#3f51b5;box-shadow:0 4px 6px rgba(63,81,181,.2)}.capibara.c-indigo.dark-theme .input-section.msj-input-container textarea.msj,.capibara.c-indigo .input-section.msj-input-container textarea.msj{border:2px solid #3f51b5}.capibara.c-indigo.dark-theme .input-section.msj-input-container textarea.msj:active,.capibara.c-indigo.dark-theme .input-section.msj-input-container textarea.msj:focus,.capibara.c-indigo .input-section.msj-input-container textarea.msj:active,.capibara.c-indigo .input-section.msj-input-container textarea.msj:focus{box-shadow:0 4px 6px rgba(63,81,181,.2)}.capibara.c-indigo .btn-raised,.capibara.c-indigo.dark-theme .btn-raised{border-color:#3f51b5;background:rgba(63,81,181,.8)}.capibara.c-indigo .btn-outline,.capibara.c-indigo.dark-theme .btn-outline{border-color:#3f51b5;color:#3f51b5}.capibara.c-indigo.dark-theme .select-container .selected-day,.capibara.c-indigo .select-container .selected-day{background:rgba(63,81,181,.3);box-shadow:inset 0 0 10px rgba(63,81,181,.5)}.capibara .c-indigo--background{background:#3f51b5!important}.capibara .c-indigo-d--background{background:#2b387c!important}.capibara .c-indigo-l--background{background:#7280ce!important}.capibara .c-indigo--text{color:#3f51b5!important}.capibara .c-indigo-d--text{color:#2b387c!important}.capibara .c-indigo-l--text{color:#7280ce!important}.capibara .detail-day .list-detail .item-detail.c-indigo{background:rgba(63,81,181,.2);border:1px solid #3f51b5}.capibara .detail-day .list-detail .item-detail.c-indigo .left-icon{background:#3f51b5}.capibara .detail-day .list-detail .item-detail.c-indigo .left-icon.outlined{border:1px solid #3f51b5;box-shadow:inset 0 0 0 1px rgba(63,81,181,.7)}.capibara .detail-day .list-detail .item-detail.c-indigo .name{color:#3f51b5}.capibara .float-box-container .float-box span.data.c-indigo{background:rgba(63,81,181,.8)}.capibara .float-box-container .float-box span.data.shape-outlined.c-indigo{border-color:rgba(63,81,181,.9);background:rgba(63,81,181,.1);color:#3f51b5}.capibara .float-box-container .float-box span.data.shape-bar.c-indigo{background:#3f51b5}.capibara .float-box-container .float-box span.data.shape-bar-outlined.c-indigo{background:rgba(63,81,181,.5)}.capibara .float-box-container .float-box .dot.c-indigo{background:#3f51b5}.capibara .float-box-container .float-box .dot.c-indigo.outlined{border:1px solid #3f51b5;box-shadow:inset 0 0 0 1px rgba(63,81,181,.7)}.capibara .header-top .tabs-container .tab:not(.disabled).c-indigo.active{background:rgba(63,81,181,.7);border-color:rgba(63,81,181,.7);color:#fff}.capibara .header-top .tabs-container .tab:not(.disabled).c-indigo.active:hover{background:rgba(63,81,181,.8)}.capibara .header-top .tabs-container .tab:not(.disabled).c-indigo:hover{background:rgba(63,81,181,.2);border-color:rgba(63,81,181,.9)}.capibara .input-box .mini-input-section--icon.c-indigo{background:#3f51b5}.capibara.c-blue:not(.dark-theme) ::-webkit-scrollbar-thumb{background:#3176bb}.capibara.c-blue:not(.dark-theme) .header-top{background:#d1dce6}.capibara.c-blue:not(.dark-theme) .corner{background:#d1dce6;border-color:#64a9ed}.capibara.c-blue:not(.dark-theme) .container-tl header{background:#d1dce6;border-bottom-color:#64a9ed}.capibara.c-blue:not(.dark-theme) .container-tl header .mes.mes-reduced:after{background:linear-gradient(90deg,transparent,#c0dcf7)!important}.capibara.c-blue:not(.dark-theme) nav.right{border-color:#64a9ed}.capibara.c-blue.dark-theme .header-top,.capibara.c-blue.dark-theme nav.right{border-color:#0e4377}.capibara.c-blue.dark-theme .container-tl header,.capibara.c-blue.dark-theme .corner{border-bottom-color:#0e4377}.capibara.c-blue.dark-theme .progress-bar,.capibara.c-blue .progress-bar{background-color:rgba(25,118,210,.2)!important}.capibara.c-blue.dark-theme .progress-bar:after,.capibara.c-blue.dark-theme .progress-bar:before,.capibara.c-blue .progress-bar:after,.capibara.c-blue .progress-bar:before{background-color:#1976d2!important}.capibara.c-blue.dark-theme select.tabs-select,.capibara.c-blue select.tabs-select{background-color:rgba(25,118,210,.7)!important;border-color:#1976d2!important}.capibara.c-blue.dark-theme .time,.capibara.c-blue .time{border-color:rgba(25,118,210,.6)}.capibara.c-blue.dark-theme .time .symbol,.capibara.c-blue .time .symbol{color:#1976d2}.capibara.c-blue.dark-theme .time input:active,.capibara.c-blue.dark-theme .time input:focus,.capibara.c-blue .time input:active,.capibara.c-blue .time input:focus{border-color:#1976d2;box-shadow:0 4px 6px rgba(25,118,210,.2)}.capibara.c-blue.dark-theme .input-box,.capibara.c-blue.dark-theme .input-section input.nav-input,.capibara.c-blue .input-box,.capibara.c-blue .input-section input.nav-input{border-color:rgba(25,118,210,.6)}.capibara.c-blue.dark-theme .input-section input.nav-input:active,.capibara.c-blue.dark-theme .input-section input.nav-input:focus,.capibara.c-blue .input-section input.nav-input:active,.capibara.c-blue .input-section input.nav-input:focus{border-color:#1976d2;box-shadow:0 4px 6px rgba(25,118,210,.2)}.capibara.c-blue.dark-theme .input-section.msj-input-container textarea.msj,.capibara.c-blue .input-section.msj-input-container textarea.msj{border:2px solid #1976d2}.capibara.c-blue.dark-theme .input-section.msj-input-container textarea.msj:active,.capibara.c-blue.dark-theme .input-section.msj-input-container textarea.msj:focus,.capibara.c-blue .input-section.msj-input-container textarea.msj:active,.capibara.c-blue .input-section.msj-input-container textarea.msj:focus{box-shadow:0 4px 6px rgba(25,118,210,.2)}.capibara.c-blue .btn-raised,.capibara.c-blue.dark-theme .btn-raised{border-color:#1976d2;background:rgba(25,118,210,.8)}.capibara.c-blue .btn-outline,.capibara.c-blue.dark-theme .btn-outline{border-color:#1976d2;color:#1976d2}.capibara.c-blue.dark-theme .select-container .selected-day,.capibara.c-blue .select-container .selected-day{background:rgba(25,118,210,.3);box-shadow:inset 0 0 10px rgba(25,118,210,.5)}.capibara .c-blue--background{background:#1976d2!important}.capibara .c-blue-d--background{background:#11508e!important}.capibara .c-blue-l--background{background:#4e9cea!important}.capibara .c-blue--text{color:#1976d2!important}.capibara .c-blue-d--text{color:#11508e!important}.capibara .c-blue-l--text{color:#4e9cea!important}.capibara .detail-day .list-detail .item-detail.c-blue{background:rgba(25,118,210,.2);border:1px solid #1976d2}.capibara .detail-day .list-detail .item-detail.c-blue .left-icon{background:#1976d2}.capibara .detail-day .list-detail .item-detail.c-blue .left-icon.outlined{border:1px solid #1976d2;box-shadow:inset 0 0 0 1px rgba(25,118,210,.7)}.capibara .detail-day .list-detail .item-detail.c-blue .name{color:#1976d2}.capibara .float-box-container .float-box span.data.c-blue{background:rgba(25,118,210,.8)}.capibara .float-box-container .float-box span.data.shape-outlined.c-blue{border-color:rgba(25,118,210,.9);background:rgba(25,118,210,.1);color:#1976d2}.capibara .float-box-container .float-box span.data.shape-bar.c-blue{background:#1976d2}.capibara .float-box-container .float-box span.data.shape-bar-outlined.c-blue{background:rgba(25,118,210,.5)}.capibara .float-box-container .float-box .dot.c-blue{background:#1976d2}.capibara .float-box-container .float-box .dot.c-blue.outlined{border:1px solid #1976d2;box-shadow:inset 0 0 0 1px rgba(25,118,210,.7)}.capibara .header-top .tabs-container .tab:not(.disabled).c-blue.active{background:rgba(25,118,210,.7);border-color:rgba(25,118,210,.7);color:#fff}.capibara .header-top .tabs-container .tab:not(.disabled).c-blue.active:hover{background:rgba(25,118,210,.8)}.capibara .header-top .tabs-container .tab:not(.disabled).c-blue:hover{background:rgba(25,118,210,.2);border-color:rgba(25,118,210,.9)}.capibara .input-box .mini-input-section--icon.c-blue{background:#1976d2}.capibara.c-light-blue:not(.dark-theme) ::-webkit-scrollbar-thumb{background:#1ca0db}.capibara.c-light-blue:not(.dark-theme) .header-top{background:#d3e7f0}.capibara.c-light-blue:not(.dark-theme) .corner{background:#d3e7f0;border-color:#60ccfd}.capibara.c-light-blue:not(.dark-theme) .container-tl header{background:#d3e7f0;border-bottom-color:#60ccfd}.capibara.c-light-blue:not(.dark-theme) .container-tl header .mes.mes-reduced:after{background:linear-gradient(90deg,transparent,#c5ecfe)!important}.capibara.c-light-blue:not(.dark-theme) nav.right{border-color:#60ccfd}.capibara.c-light-blue.dark-theme .header-top,.capibara.c-light-blue.dark-theme nav.right{border-color:#02638f}.capibara.c-light-blue.dark-theme .container-tl header,.capibara.c-light-blue.dark-theme .corner{border-bottom-color:#02638f}.capibara.c-light-blue.dark-theme .progress-bar,.capibara.c-light-blue .progress-bar{background-color:rgba(3,169,244,.2)!important}.capibara.c-light-blue.dark-theme .progress-bar:after,.capibara.c-light-blue.dark-theme .progress-bar:before,.capibara.c-light-blue .progress-bar:after,.capibara.c-light-blue .progress-bar:before{background-color:#03a9f4!important}.capibara.c-light-blue.dark-theme select.tabs-select,.capibara.c-light-blue select.tabs-select{background-color:rgba(3,169,244,.7)!important;border-color:#03a9f4!important}.capibara.c-light-blue.dark-theme .time,.capibara.c-light-blue .time{border-color:rgba(3,169,244,.6)}.capibara.c-light-blue.dark-theme .time .symbol,.capibara.c-light-blue .time .symbol{color:#03a9f4}.capibara.c-light-blue.dark-theme .time input:active,.capibara.c-light-blue.dark-theme .time input:focus,.capibara.c-light-blue .time input:active,.capibara.c-light-blue .time input:focus{border-color:#03a9f4;box-shadow:0 4px 6px rgba(3,169,244,.2)}.capibara.c-light-blue.dark-theme .input-box,.capibara.c-light-blue.dark-theme .input-section input.nav-input,.capibara.c-light-blue .input-box,.capibara.c-light-blue .input-section input.nav-input{border-color:rgba(3,169,244,.6)}.capibara.c-light-blue.dark-theme .input-section input.nav-input:active,.capibara.c-light-blue.dark-theme .input-section input.nav-input:focus,.capibara.c-light-blue .input-section input.nav-input:active,.capibara.c-light-blue .input-section input.nav-input:focus{border-color:#03a9f4;box-shadow:0 4px 6px rgba(3,169,244,.2)}.capibara.c-light-blue.dark-theme .input-section.msj-input-container textarea.msj,.capibara.c-light-blue .input-section.msj-input-container textarea.msj{border:2px solid #03a9f4}.capibara.c-light-blue.dark-theme .input-section.msj-input-container textarea.msj:active,.capibara.c-light-blue.dark-theme .input-section.msj-input-container textarea.msj:focus,.capibara.c-light-blue .input-section.msj-input-container textarea.msj:active,.capibara.c-light-blue .input-section.msj-input-container textarea.msj:focus{box-shadow:0 4px 6px rgba(3,169,244,.2)}.capibara.c-light-blue .btn-raised,.capibara.c-light-blue.dark-theme .btn-raised{border-color:#03a9f4;background:rgba(3,169,244,.8)}.capibara.c-light-blue .btn-outline,.capibara.c-light-blue.dark-theme .btn-outline{border-color:#03a9f4;color:#03a9f4}.capibara.c-light-blue.dark-theme .select-container .selected-day,.capibara.c-light-blue .select-container .selected-day{background:rgba(3,169,244,.3);box-shadow:inset 0 0 10px rgba(3,169,244,.5)}.capibara .c-light-blue--background{background:#03a9f4!important}.capibara .c-light-blue-d--background{background:#0275a8!important}.capibara .c-light-blue-l--background{background:#47c4fd!important}.capibara .c-light-blue--text{color:#03a9f4!important}.capibara .c-light-blue-d--text{color:#0275a8!important}.capibara .c-light-blue-l--text{color:#47c4fd!important}.capibara .detail-day .list-detail .item-detail.c-light-blue{background:rgba(3,169,244,.2);border:1px solid #03a9f4}.capibara .detail-day .list-detail .item-detail.c-light-blue .left-icon{background:#03a9f4}.capibara .detail-day .list-detail .item-detail.c-light-blue .left-icon.outlined{border:1px solid #03a9f4;box-shadow:inset 0 0 0 1px rgba(3,169,244,.7)}.capibara .detail-day .list-detail .item-detail.c-light-blue .name{color:#03a9f4}.capibara .float-box-container .float-box span.data.c-light-blue{background:rgba(3,169,244,.8)}.capibara .float-box-container .float-box span.data.shape-outlined.c-light-blue{border-color:rgba(3,169,244,.9);background:rgba(3,169,244,.1);color:#03a9f4}.capibara .float-box-container .float-box span.data.shape-bar.c-light-blue{background:#03a9f4}.capibara .float-box-container .float-box span.data.shape-bar-outlined.c-light-blue{background:rgba(3,169,244,.5)}.capibara .float-box-container .float-box .dot.c-light-blue{background:#03a9f4}.capibara .float-box-container .float-box .dot.c-light-blue.outlined{border:1px solid #03a9f4;box-shadow:inset 0 0 0 1px rgba(3,169,244,.7)}.capibara .header-top .tabs-container .tab:not(.disabled).c-light-blue.active{background:rgba(3,169,244,.7);border-color:rgba(3,169,244,.7);color:#fff}.capibara .header-top .tabs-container .tab:not(.disabled).c-light-blue.active:hover{background:rgba(3,169,244,.8)}.capibara .header-top .tabs-container .tab:not(.disabled).c-light-blue:hover{background:rgba(3,169,244,.2);border-color:rgba(3,169,244,.9)}.capibara .input-box .mini-input-section--icon.c-light-blue{background:#03a9f4}.capibara.c-cyan:not(.dark-theme) ::-webkit-scrollbar-thumb{background:#15acbf}.capibara.c-cyan:not(.dark-theme) .header-top{background:#b9e2e8}.capibara.c-cyan:not(.dark-theme) .corner{background:#b9e2e8;border-color:#3be9ff}.capibara.c-cyan:not(.dark-theme) .container-tl header{background:#b9e2e8;border-bottom-color:#3be9ff}.capibara.c-cyan:not(.dark-theme) .container-tl header .mes.mes-reduced:after{background:linear-gradient(90deg,transparent,#a1f4ff)!important}.capibara.c-cyan:not(.dark-theme) nav.right{border-color:#3be9ff}.capibara.c-cyan.dark-theme .header-top,.capibara.c-cyan.dark-theme nav.right{border-color:#00626e}.capibara.c-cyan.dark-theme .container-tl header,.capibara.c-cyan.dark-theme .corner{border-bottom-color:#00626e}.capibara.c-cyan.dark-theme .progress-bar,.capibara.c-cyan .progress-bar{background-color:rgba(0,188,212,.2)!important}.capibara.c-cyan.dark-theme .progress-bar:after,.capibara.c-cyan.dark-theme .progress-bar:before,.capibara.c-cyan .progress-bar:after,.capibara.c-cyan .progress-bar:before{background-color:#00bcd4!important}.capibara.c-cyan.dark-theme select.tabs-select,.capibara.c-cyan select.tabs-select{background-color:rgba(0,188,212,.7)!important;border-color:#00bcd4!important}.capibara.c-cyan.dark-theme .time,.capibara.c-cyan .time{border-color:rgba(0,188,212,.6)}.capibara.c-cyan.dark-theme .time .symbol,.capibara.c-cyan .time .symbol{color:#00bcd4}.capibara.c-cyan.dark-theme .time input:active,.capibara.c-cyan.dark-theme .time input:focus,.capibara.c-cyan .time input:active,.capibara.c-cyan .time input:focus{border-color:#00bcd4;box-shadow:0 4px 6px rgba(0,188,212,.2)}.capibara.c-cyan.dark-theme .input-box,.capibara.c-cyan.dark-theme .input-section input.nav-input,.capibara.c-cyan .input-box,.capibara.c-cyan .input-section input.nav-input{border-color:rgba(0,188,212,.6)}.capibara.c-cyan.dark-theme .input-section input.nav-input:active,.capibara.c-cyan.dark-theme .input-section input.nav-input:focus,.capibara.c-cyan .input-section input.nav-input:active,.capibara.c-cyan .input-section input.nav-input:focus{border-color:#00bcd4;box-shadow:0 4px 6px rgba(0,188,212,.2)}.capibara.c-cyan.dark-theme .input-section.msj-input-container textarea.msj,.capibara.c-cyan .input-section.msj-input-container textarea.msj{border:2px solid #00bcd4}.capibara.c-cyan.dark-theme .input-section.msj-input-container textarea.msj:active,.capibara.c-cyan.dark-theme .input-section.msj-input-container textarea.msj:focus,.capibara.c-cyan .input-section.msj-input-container textarea.msj:active,.capibara.c-cyan .input-section.msj-input-container textarea.msj:focus{box-shadow:0 4px 6px rgba(0,188,212,.2)}.capibara.c-cyan .btn-raised,.capibara.c-cyan.dark-theme .btn-raised{border-color:#00bcd4;background:rgba(0,188,212,.8)}.capibara.c-cyan .btn-outline,.capibara.c-cyan.dark-theme .btn-outline{border-color:#00bcd4;color:#00bcd4}.capibara.c-cyan.dark-theme .select-container .selected-day,.capibara.c-cyan .select-container .selected-day{background:rgba(0,188,212,.3);box-shadow:inset 0 0 10px rgba(0,188,212,.5)}.capibara .c-cyan--background{background:#00bcd4!important}.capibara .c-cyan-d--background{background:#007888!important}.capibara .c-cyan-l--background{background:#22e6ff!important}.capibara .c-cyan--text{color:#00bcd4!important}.capibara .c-cyan-d--text{color:#007888!important}.capibara .c-cyan-l--text{color:#22e6ff!important}.capibara .detail-day .list-detail .item-detail.c-cyan{background:rgba(0,188,212,.2);border:1px solid #00bcd4}.capibara .detail-day .list-detail .item-detail.c-cyan .left-icon{background:#00bcd4}.capibara .detail-day .list-detail .item-detail.c-cyan .left-icon.outlined{border:1px solid #00bcd4;box-shadow:inset 0 0 0 1px rgba(0,188,212,.7)}.capibara .detail-day .list-detail .item-detail.c-cyan .name{color:#00bcd4}.capibara .float-box-container .float-box span.data.c-cyan{background:rgba(0,188,212,.8)}.capibara .float-box-container .float-box span.data.shape-outlined.c-cyan{border-color:rgba(0,188,212,.9);background:rgba(0,188,212,.1);color:#00bcd4}.capibara .float-box-container .float-box span.data.shape-bar.c-cyan{background:#00bcd4}.capibara .float-box-container .float-box span.data.shape-bar-outlined.c-cyan{background:rgba(0,188,212,.5)}.capibara .float-box-container .float-box .dot.c-cyan{background:#00bcd4}.capibara .float-box-container .float-box .dot.c-cyan.outlined{border:1px solid #00bcd4;box-shadow:inset 0 0 0 1px rgba(0,188,212,.7)}.capibara .header-top .tabs-container .tab:not(.disabled).c-cyan.active{background:rgba(0,188,212,.7);border-color:rgba(0,188,212,.7);color:#fff}.capibara .header-top .tabs-container .tab:not(.disabled).c-cyan.active:hover{background:rgba(0,188,212,.8)}.capibara .header-top .tabs-container .tab:not(.disabled).c-cyan:hover{background:rgba(0,188,212,.2);border-color:rgba(0,188,212,.9)}.capibara .input-box .mini-input-section--icon.c-cyan{background:#00bcd4}.capibara.c-teal:not(.dark-theme) ::-webkit-scrollbar-thumb{background:#0f877c}.capibara.c-teal:not(.dark-theme) .header-top{background:#8ad8d1}.capibara.c-teal:not(.dark-theme) .corner{background:#8ad8d1;border-color:#00fce4}.capibara.c-teal:not(.dark-theme) .container-tl header{background:#8ad8d1;border-bottom-color:#00fce4}.capibara.c-teal:not(.dark-theme) .container-tl header .mes.mes-reduced:after{background:linear-gradient(90deg,transparent,#63fff0)!important}.capibara.c-teal:not(.dark-theme) nav.right{border-color:#00fce4}.capibara.c-teal.dark-theme .header-top,.capibara.c-teal.dark-theme nav.right{border-color:#00302c}.capibara.c-teal.dark-theme .container-tl header,.capibara.c-teal.dark-theme .corner{border-bottom-color:#00302c}.capibara.c-teal.dark-theme .progress-bar,.capibara.c-teal .progress-bar{background-color:rgba(0,150,136,.2)!important}.capibara.c-teal.dark-theme .progress-bar:after,.capibara.c-teal.dark-theme .progress-bar:before,.capibara.c-teal .progress-bar:after,.capibara.c-teal .progress-bar:before{background-color:#009688!important}.capibara.c-teal.dark-theme select.tabs-select,.capibara.c-teal select.tabs-select{background-color:rgba(0,150,136,.7)!important;border-color:#009688!important}.capibara.c-teal.dark-theme .time,.capibara.c-teal .time{border-color:rgba(0,150,136,.6)}.capibara.c-teal.dark-theme .time .symbol,.capibara.c-teal .time .symbol{color:#009688}.capibara.c-teal.dark-theme .time input:active,.capibara.c-teal.dark-theme .time input:focus,.capibara.c-teal .time input:active,.capibara.c-teal .time input:focus{border-color:#009688;box-shadow:0 4px 6px rgba(0,150,136,.2)}.capibara.c-teal.dark-theme .input-box,.capibara.c-teal.dark-theme .input-section input.nav-input,.capibara.c-teal .input-box,.capibara.c-teal .input-section input.nav-input{border-color:rgba(0,150,136,.6)}.capibara.c-teal.dark-theme .input-section input.nav-input:active,.capibara.c-teal.dark-theme .input-section input.nav-input:focus,.capibara.c-teal .input-section input.nav-input:active,.capibara.c-teal .input-section input.nav-input:focus{border-color:#009688;box-shadow:0 4px 6px rgba(0,150,136,.2)}.capibara.c-teal.dark-theme .input-section.msj-input-container textarea.msj,.capibara.c-teal .input-section.msj-input-container textarea.msj{border:2px solid #009688}.capibara.c-teal.dark-theme .input-section.msj-input-container textarea.msj:active,.capibara.c-teal.dark-theme .input-section.msj-input-container textarea.msj:focus,.capibara.c-teal .input-section.msj-input-container textarea.msj:active,.capibara.c-teal .input-section.msj-input-container textarea.msj:focus{box-shadow:0 4px 6px rgba(0,150,136,.2)}.capibara.c-teal .btn-raised,.capibara.c-teal.dark-theme .btn-raised{border-color:#009688;background:rgba(0,150,136,.8)}.capibara.c-teal .btn-outline,.capibara.c-teal.dark-theme .btn-outline{border-color:#009688;color:#009688}.capibara.c-teal.dark-theme .select-container .selected-day,.capibara.c-teal .select-container .selected-day{background:rgba(0,150,136,.3);box-shadow:inset 0 0 10px rgba(0,150,136,.5)}.capibara .c-teal--background{background:#009688!important}.capibara .c-teal-d--background{background:#004a43!important}.capibara .c-teal-l--background{background:#00e3cd!important}.capibara .c-teal--text{color:#009688!important}.capibara .c-teal-d--text{color:#004a43!important}.capibara .c-teal-l--text{color:#00e3cd!important}.capibara .detail-day .list-detail .item-detail.c-teal{background:rgba(0,150,136,.2);border:1px solid #009688}.capibara .detail-day .list-detail .item-detail.c-teal .left-icon{background:#009688}.capibara .detail-day .list-detail .item-detail.c-teal .left-icon.outlined{border:1px solid #009688;box-shadow:inset 0 0 0 1px rgba(0,150,136,.7)}.capibara .detail-day .list-detail .item-detail.c-teal .name{color:#009688}.capibara .float-box-container .float-box span.data.c-teal{background:rgba(0,150,136,.8)}.capibara .float-box-container .float-box span.data.shape-outlined.c-teal{border-color:rgba(0,150,136,.9);background:rgba(0,150,136,.1);color:#009688}.capibara .float-box-container .float-box span.data.shape-bar.c-teal{background:#009688}.capibara .float-box-container .float-box span.data.shape-bar-outlined.c-teal{background:rgba(0,150,136,.5)}.capibara .float-box-container .float-box .dot.c-teal{background:#009688}.capibara .float-box-container .float-box .dot.c-teal.outlined{border:1px solid #009688;box-shadow:inset 0 0 0 1px rgba(0,150,136,.7)}.capibara .header-top .tabs-container .tab:not(.disabled).c-teal.active{background:rgba(0,150,136,.7);border-color:rgba(0,150,136,.7);color:#fff}.capibara .header-top .tabs-container .tab:not(.disabled).c-teal.active:hover{background:rgba(0,150,136,.8)}.capibara .header-top .tabs-container .tab:not(.disabled).c-teal:hover{background:rgba(0,150,136,.2);border-color:rgba(0,150,136,.9)}.capibara .input-box .mini-input-section--icon.c-teal{background:#009688}.capibara.c-green:not(.dark-theme) ::-webkit-scrollbar-thumb{background:#659667}.capibara.c-green:not(.dark-theme) .header-top{background:#e4e4e4}.capibara.c-green:not(.dark-theme) .corner{background:#e4e4e4;border-color:#92cf94}.capibara.c-green:not(.dark-theme) .container-tl header{background:#e4e4e4;border-bottom-color:#92cf94}.capibara.c-green:not(.dark-theme) .container-tl header .mes.mes-reduced:after{background:linear-gradient(90deg,transparent,#d9eeda)!important}.capibara.c-green:not(.dark-theme) nav.right{border-color:#92cf94}.capibara.c-green.dark-theme .header-top,.capibara.c-green.dark-theme nav.right{border-color:#2d682f}.capibara.c-green.dark-theme .container-tl header,.capibara.c-green.dark-theme .corner{border-bottom-color:#2d682f}.capibara.c-green.dark-theme .progress-bar,.capibara.c-green .progress-bar{background-color:rgba(76,175,80,.2)!important}.capibara.c-green.dark-theme .progress-bar:after,.capibara.c-green.dark-theme .progress-bar:before,.capibara.c-green .progress-bar:after,.capibara.c-green .progress-bar:before{background-color:#4caf50!important}.capibara.c-green.dark-theme select.tabs-select,.capibara.c-green select.tabs-select{background-color:rgba(76,175,80,.7)!important;border-color:#4caf50!important}.capibara.c-green.dark-theme .time,.capibara.c-green .time{border-color:rgba(76,175,80,.6)}.capibara.c-green.dark-theme .time .symbol,.capibara.c-green .time .symbol{color:#4caf50}.capibara.c-green.dark-theme .time input:active,.capibara.c-green.dark-theme .time input:focus,.capibara.c-green .time input:active,.capibara.c-green .time input:focus{border-color:#4caf50;box-shadow:0 4px 6px rgba(76,175,80,.2)}.capibara.c-green.dark-theme .input-box,.capibara.c-green.dark-theme .input-section input.nav-input,.capibara.c-green .input-box,.capibara.c-green .input-section input.nav-input{border-color:rgba(76,175,80,.6)}.capibara.c-green.dark-theme .input-section input.nav-input:active,.capibara.c-green.dark-theme .input-section input.nav-input:focus,.capibara.c-green .input-section input.nav-input:active,.capibara.c-green .input-section input.nav-input:focus{border-color:#4caf50;box-shadow:0 4px 6px rgba(76,175,80,.2)}.capibara.c-green.dark-theme .input-section.msj-input-container textarea.msj,.capibara.c-green .input-section.msj-input-container textarea.msj{border:2px solid #4caf50}.capibara.c-green.dark-theme .input-section.msj-input-container textarea.msj:active,.capibara.c-green.dark-theme .input-section.msj-input-container textarea.msj:focus,.capibara.c-green .input-section.msj-input-container textarea.msj:active,.capibara.c-green .input-section.msj-input-container textarea.msj:focus{box-shadow:0 4px 6px rgba(76,175,80,.2)}.capibara.c-green .btn-raised,.capibara.c-green.dark-theme .btn-raised{border-color:#4caf50;background:rgba(76,175,80,.8)}.capibara.c-green .btn-outline,.capibara.c-green.dark-theme .btn-outline{border-color:#4caf50;color:#4caf50}.capibara.c-green.dark-theme .select-container .selected-day,.capibara.c-green .select-container .selected-day{background:rgba(76,175,80,.3);box-shadow:inset 0 0 10px rgba(76,175,80,.5)}.capibara .c-green--background{background:#4caf50!important}.capibara .c-green-d--background{background:#357a38!important}.capibara .c-green-l--background{background:#80c883!important}.capibara .c-green--text{color:#4caf50!important}.capibara .c-green-d--text{color:#357a38!important}.capibara .c-green-l--text{color:#80c883!important}.capibara .detail-day .list-detail .item-detail.c-green{background:rgba(76,175,80,.2);border:1px solid #4caf50}.capibara .detail-day .list-detail .item-detail.c-green .left-icon{background:#4caf50}.capibara .detail-day .list-detail .item-detail.c-green .left-icon.outlined{border:1px solid #4caf50;box-shadow:inset 0 0 0 1px rgba(76,175,80,.7)}.capibara .detail-day .list-detail .item-detail.c-green .name{color:#4caf50}.capibara .float-box-container .float-box span.data.c-green{background:rgba(76,175,80,.8)}.capibara .float-box-container .float-box span.data.shape-outlined.c-green{border-color:rgba(76,175,80,.9);background:rgba(76,175,80,.1);color:#4caf50}.capibara .float-box-container .float-box span.data.shape-bar.c-green{background:#4caf50}.capibara .float-box-container .float-box span.data.shape-bar-outlined.c-green{background:rgba(76,175,80,.5)}.capibara .float-box-container .float-box .dot.c-green{background:#4caf50}.capibara .float-box-container .float-box .dot.c-green.outlined{border:1px solid #4caf50;box-shadow:inset 0 0 0 1px rgba(76,175,80,.7)}.capibara .header-top .tabs-container .tab:not(.disabled).c-green.active{background:rgba(76,175,80,.7);border-color:rgba(76,175,80,.7);color:#fff}.capibara .header-top .tabs-container .tab:not(.disabled).c-green.active:hover{background:rgba(76,175,80,.8)}.capibara .header-top .tabs-container .tab:not(.disabled).c-green:hover{background:rgba(76,175,80,.2);border-color:rgba(76,175,80,.9)}.capibara .input-box .mini-input-section--icon.c-green{background:#4caf50}.capibara.c-light-green:not(.dark-theme) ::-webkit-scrollbar-thumb{background:#89ab62}.capibara.c-light-green:not(.dark-theme) .header-top{background:#ededec}.capibara.c-light-green:not(.dark-theme) .corner{background:#ededec;border-color:#bcdc97}.capibara.c-light-green:not(.dark-theme) .container-tl header{background:#ededec;border-bottom-color:#bcdc97}.capibara.c-light-green:not(.dark-theme) .container-tl header .mes.mes-reduced:after{background:linear-gradient(90deg,transparent,#edf6e3)!important}.capibara.c-light-green:not(.dark-theme) nav.right{border-color:#bcdc97}.capibara.c-light-green.dark-theme .header-top,.capibara.c-light-green.dark-theme nav.right{border-color:#577d2a}.capibara.c-light-green.dark-theme .container-tl header,.capibara.c-light-green.dark-theme .corner{border-bottom-color:#577d2a}.capibara.c-light-green.dark-theme .progress-bar,.capibara.c-light-green .progress-bar{background-color:rgba(139,195,74,.2)!important}.capibara.c-light-green.dark-theme .progress-bar:after,.capibara.c-light-green.dark-theme .progress-bar:before,.capibara.c-light-green .progress-bar:after,.capibara.c-light-green .progress-bar:before{background-color:#8bc34a!important}.capibara.c-light-green.dark-theme select.tabs-select,.capibara.c-light-green select.tabs-select{background-color:rgba(139,195,74,.7)!important;border-color:#8bc34a!important}.capibara.c-light-green.dark-theme .time,.capibara.c-light-green .time{border-color:rgba(139,195,74,.6)}.capibara.c-light-green.dark-theme .time .symbol,.capibara.c-light-green .time .symbol{color:#8bc34a}.capibara.c-light-green.dark-theme .time input:active,.capibara.c-light-green.dark-theme .time input:focus,.capibara.c-light-green .time input:active,.capibara.c-light-green .time input:focus{border-color:#8bc34a;box-shadow:0 4px 6px rgba(139,195,74,.2)}.capibara.c-light-green.dark-theme .input-box,.capibara.c-light-green.dark-theme .input-section input.nav-input,.capibara.c-light-green .input-box,.capibara.c-light-green .input-section input.nav-input{border-color:rgba(139,195,74,.6)}.capibara.c-light-green.dark-theme .input-section input.nav-input:active,.capibara.c-light-green.dark-theme .input-section input.nav-input:focus,.capibara.c-light-green .input-section input.nav-input:active,.capibara.c-light-green .input-section input.nav-input:focus{border-color:#8bc34a;box-shadow:0 4px 6px rgba(139,195,74,.2)}.capibara.c-light-green.dark-theme .input-section.msj-input-container textarea.msj,.capibara.c-light-green .input-section.msj-input-container textarea.msj{border:2px solid #8bc34a}.capibara.c-light-green.dark-theme .input-section.msj-input-container textarea.msj:active,.capibara.c-light-green.dark-theme .input-section.msj-input-container textarea.msj:focus,.capibara.c-light-green .input-section.msj-input-container textarea.msj:active,.capibara.c-light-green .input-section.msj-input-container textarea.msj:focus{box-shadow:0 4px 6px rgba(139,195,74,.2)}.capibara.c-light-green .btn-raised,.capibara.c-light-green.dark-theme .btn-raised{border-color:#8bc34a;background:rgba(139,195,74,.8)}.capibara.c-light-green .btn-outline,.capibara.c-light-green.dark-theme .btn-outline{border-color:#8bc34a;color:#8bc34a}.capibara.c-light-green.dark-theme .select-container .selected-day,.capibara.c-light-green .select-container .selected-day{background:rgba(139,195,74,.3);box-shadow:inset 0 0 10px rgba(139,195,74,.5)}.capibara .c-light-green--background{background:#8bc34a!important}.capibara .c-light-green-d--background{background:#649130!important}.capibara .c-light-green-l--background{background:#b0d683!important}.capibara .c-light-green--text{color:#8bc34a!important}.capibara .c-light-green-d--text{color:#649130!important}.capibara .c-light-green-l--text{color:#b0d683!important}.capibara .detail-day .list-detail .item-detail.c-light-green{background:rgba(139,195,74,.2);border:1px solid #8bc34a}.capibara .detail-day .list-detail .item-detail.c-light-green .left-icon{background:#8bc34a}.capibara .detail-day .list-detail .item-detail.c-light-green .left-icon.outlined{border:1px solid #8bc34a;box-shadow:inset 0 0 0 1px rgba(139,195,74,.7)}.capibara .detail-day .list-detail .item-detail.c-light-green .name{color:#8bc34a}.capibara .float-box-container .float-box span.data.c-light-green{background:rgba(139,195,74,.8)}.capibara .float-box-container .float-box span.data.shape-outlined.c-light-green{border-color:rgba(139,195,74,.9);background:rgba(139,195,74,.1);color:#8bc34a}.capibara .float-box-container .float-box span.data.shape-bar.c-light-green{background:#8bc34a}.capibara .float-box-container .float-box span.data.shape-bar-outlined.c-light-green{background:rgba(139,195,74,.5)}.capibara .float-box-container .float-box .dot.c-light-green{background:#8bc34a}.capibara .float-box-container .float-box .dot.c-light-green.outlined{border:1px solid #8bc34a;box-shadow:inset 0 0 0 1px rgba(139,195,74,.7)}.capibara .header-top .tabs-container .tab:not(.disabled).c-light-green.active{background:rgba(139,195,74,.7);border-color:rgba(139,195,74,.7);color:#fff}.capibara .header-top .tabs-container .tab:not(.disabled).c-light-green.active:hover{background:rgba(139,195,74,.8)}.capibara .header-top .tabs-container .tab:not(.disabled).c-light-green:hover{background:rgba(139,195,74,.2);border-color:rgba(139,195,74,.9)}.capibara .input-box .mini-input-section--icon.c-light-green{background:#8bc34a}.capibara.c-lime:not(.dark-theme) ::-webkit-scrollbar-thumb{background:#bac550}.capibara.c-lime:not(.dark-theme) .header-top{background:#f3f3ee}.capibara.c-lime:not(.dark-theme) .corner{background:#f3f3ee;border-color:#e3eb90}.capibara.c-lime:not(.dark-theme) .container-tl header{background:#f3f3ee;border-bottom-color:#e3eb90}.capibara.c-lime:not(.dark-theme) .container-tl header .mes.mes-reduced:after{background:linear-gradient(90deg,transparent,#f9fbe6)!important}.capibara.c-lime:not(.dark-theme) nav.right{border-color:#e3eb90}.capibara.c-lime.dark-theme .header-top,.capibara.c-lime.dark-theme nav.right{border-color:#89951a}.capibara.c-lime.dark-theme .container-tl header,.capibara.c-lime.dark-theme .corner{border-bottom-color:#89951a}.capibara.c-lime.dark-theme .progress-bar,.capibara.c-lime .progress-bar{background-color:rgba(205,220,57,.2)!important}.capibara.c-lime.dark-theme .progress-bar:after,.capibara.c-lime.dark-theme .progress-bar:before,.capibara.c-lime .progress-bar:after,.capibara.c-lime .progress-bar:before{background-color:#cddc39!important}.capibara.c-lime.dark-theme select.tabs-select,.capibara.c-lime select.tabs-select{background-color:rgba(205,220,57,.7)!important;border-color:#cddc39!important}.capibara.c-lime.dark-theme .time,.capibara.c-lime .time{border-color:rgba(205,220,57,.6)}.capibara.c-lime.dark-theme .time .symbol,.capibara.c-lime .time .symbol{color:#cddc39}.capibara.c-lime.dark-theme .time input:active,.capibara.c-lime.dark-theme .time input:focus,.capibara.c-lime .time input:active,.capibara.c-lime .time input:focus{border-color:#cddc39;box-shadow:0 4px 6px rgba(205,220,57,.2)}.capibara.c-lime.dark-theme .input-box,.capibara.c-lime.dark-theme .input-section input.nav-input,.capibara.c-lime .input-box,.capibara.c-lime .input-section input.nav-input{border-color:rgba(205,220,57,.6)}.capibara.c-lime.dark-theme .input-section input.nav-input:active,.capibara.c-lime.dark-theme .input-section input.nav-input:focus,.capibara.c-lime .input-section input.nav-input:active,.capibara.c-lime .input-section input.nav-input:focus{border-color:#cddc39;box-shadow:0 4px 6px rgba(205,220,57,.2)}.capibara.c-lime.dark-theme .input-section.msj-input-container textarea.msj,.capibara.c-lime .input-section.msj-input-container textarea.msj{border:2px solid #cddc39}.capibara.c-lime.dark-theme .input-section.msj-input-container textarea.msj:active,.capibara.c-lime.dark-theme .input-section.msj-input-container textarea.msj:focus,.capibara.c-lime .input-section.msj-input-container textarea.msj:active,.capibara.c-lime .input-section.msj-input-container textarea.msj:focus{box-shadow:0 4px 6px rgba(205,220,57,.2)}.capibara.c-lime .btn-raised,.capibara.c-lime.dark-theme .btn-raised{border-color:#cddc39;background:rgba(205,220,57,.8)}.capibara.c-lime .btn-outline,.capibara.c-lime.dark-theme .btn-outline{border-color:#cddc39;color:#cddc39}.capibara.c-lime.dark-theme .select-container .selected-day,.capibara.c-lime .select-container .selected-day{background:rgba(205,220,57,.3);box-shadow:inset 0 0 10px rgba(205,220,57,.5)}.capibara .c-lime--background{background:#cddc39!important}.capibara .c-lime-d--background{background:#9daa1e!important}.capibara .c-lime-l--background{background:#dde77a!important}.capibara .c-lime--text{color:#cddc39!important}.capibara .c-lime-d--text{color:#9daa1e!important}.capibara .c-lime-l--text{color:#dde77a!important}.capibara .detail-day .list-detail .item-detail.c-lime{background:rgba(205,220,57,.2);border:1px solid #cddc39}.capibara .detail-day .list-detail .item-detail.c-lime .left-icon{background:#cddc39}.capibara .detail-day .list-detail .item-detail.c-lime .left-icon.outlined{border:1px solid #cddc39;box-shadow:inset 0 0 0 1px rgba(205,220,57,.7)}.capibara .detail-day .list-detail .item-detail.c-lime .name{color:#cddc39}.capibara .float-box-container .float-box span.data.c-lime{background:rgba(205,220,57,.8)}.capibara .float-box-container .float-box span.data.shape-outlined.c-lime{border-color:rgba(205,220,57,.9);background:rgba(205,220,57,.1);color:#cddc39}.capibara .float-box-container .float-box span.data.shape-bar.c-lime{background:#cddc39}.capibara .float-box-container .float-box span.data.shape-bar-outlined.c-lime{background:rgba(205,220,57,.5)}.capibara .float-box-container .float-box .dot.c-lime{background:#cddc39}.capibara .float-box-container .float-box .dot.c-lime.outlined{border:1px solid #cddc39;box-shadow:inset 0 0 0 1px rgba(205,220,57,.7)}.capibara .header-top .tabs-container .tab:not(.disabled).c-lime.active{background:rgba(205,220,57,.7);border-color:rgba(205,220,57,.7);color:#fff}.capibara .header-top .tabs-container .tab:not(.disabled).c-lime.active:hover{background:rgba(205,220,57,.8)}.capibara .header-top .tabs-container .tab:not(.disabled).c-lime:hover{background:rgba(205,220,57,.2);border-color:rgba(205,220,57,.9)}.capibara .input-box .mini-input-section--icon.c-lime{background:#cddc39}.capibara.c-yellow:not(.dark-theme) ::-webkit-scrollbar-thumb{background:#ebdb4f}.capibara.c-yellow:not(.dark-theme) .header-top{background:#fff}.capibara.c-yellow:not(.dark-theme) .corner{background:#fff;border-color:#fff5a1}.capibara.c-yellow:not(.dark-theme) .container-tl header{background:#fff;border-bottom-color:#fff5a1}.capibara.c-yellow:not(.dark-theme) .container-tl header .mes.mes-reduced:after{background:linear-gradient(90deg,transparent,#fff)!important}.capibara.c-yellow:not(.dark-theme) nav.right{border-color:#fff5a1}.capibara.c-yellow.dark-theme .header-top,.capibara.c-yellow.dark-theme nav.right{border-color:#d4be00}.capibara.c-yellow.dark-theme .container-tl header,.capibara.c-yellow.dark-theme .corner{border-bottom-color:#d4be00}.capibara.c-yellow.dark-theme .progress-bar,.capibara.c-yellow .progress-bar{background-color:rgba(255,235,59,.2)!important}.capibara.c-yellow.dark-theme .progress-bar:after,.capibara.c-yellow.dark-theme .progress-bar:before,.capibara.c-yellow .progress-bar:after,.capibara.c-yellow .progress-bar:before{background-color:#ffeb3b!important}.capibara.c-yellow.dark-theme select.tabs-select,.capibara.c-yellow select.tabs-select{background-color:rgba(255,235,59,.7)!important;border-color:#ffeb3b!important}.capibara.c-yellow.dark-theme .time,.capibara.c-yellow .time{border-color:rgba(255,235,59,.6)}.capibara.c-yellow.dark-theme .time .symbol,.capibara.c-yellow .time .symbol{color:#ffeb3b}.capibara.c-yellow.dark-theme .time input:active,.capibara.c-yellow.dark-theme .time input:focus,.capibara.c-yellow .time input:active,.capibara.c-yellow .time input:focus{border-color:#ffeb3b;box-shadow:0 4px 6px rgba(255,235,59,.2)}.capibara.c-yellow.dark-theme .input-box,.capibara.c-yellow.dark-theme .input-section input.nav-input,.capibara.c-yellow .input-box,.capibara.c-yellow .input-section input.nav-input{border-color:rgba(255,235,59,.6)}.capibara.c-yellow.dark-theme .input-section input.nav-input:active,.capibara.c-yellow.dark-theme .input-section input.nav-input:focus,.capibara.c-yellow .input-section input.nav-input:active,.capibara.c-yellow .input-section input.nav-input:focus{border-color:#ffeb3b;box-shadow:0 4px 6px rgba(255,235,59,.2)}.capibara.c-yellow.dark-theme .input-section.msj-input-container textarea.msj,.capibara.c-yellow .input-section.msj-input-container textarea.msj{border:2px solid #ffeb3b}.capibara.c-yellow.dark-theme .input-section.msj-input-container textarea.msj:active,.capibara.c-yellow.dark-theme .input-section.msj-input-container textarea.msj:focus,.capibara.c-yellow .input-section.msj-input-container textarea.msj:active,.capibara.c-yellow .input-section.msj-input-container textarea.msj:focus{box-shadow:0 4px 6px rgba(255,235,59,.2)}.capibara.c-yellow .btn-raised,.capibara.c-yellow.dark-theme .btn-raised{border-color:#ffeb3b;background:rgba(255,235,59,.8)}.capibara.c-yellow .btn-outline,.capibara.c-yellow.dark-theme .btn-outline{border-color:#ffeb3b;color:#ffeb3b}.capibara.c-yellow.dark-theme .select-container .selected-day,.capibara.c-yellow .select-container .selected-day{background:rgba(255,235,59,.3);box-shadow:inset 0 0 10px rgba(255,235,59,.5)}.capibara .c-yellow--background{background:#ffeb3b!important}.capibara .c-yellow-d--background{background:#eed500!important}.capibara .c-yellow-l--background{background:#fff388!important}.capibara .c-yellow--text{color:#ffeb3b!important}.capibara .c-yellow-d--text{color:#eed500!important}.capibara .c-yellow-l--text{color:#fff388!important}.capibara .detail-day .list-detail .item-detail.c-yellow{background:rgba(255,235,59,.2);border:1px solid #ffeb3b}.capibara .detail-day .list-detail .item-detail.c-yellow .left-icon{background:#ffeb3b}.capibara .detail-day .list-detail .item-detail.c-yellow .left-icon.outlined{border:1px solid #ffeb3b;box-shadow:inset 0 0 0 1px rgba(255,235,59,.7)}.capibara .detail-day .list-detail .item-detail.c-yellow .name{color:#ffeb3b}.capibara .float-box-container .float-box span.data.c-yellow{background:rgba(255,235,59,.8)}.capibara .float-box-container .float-box span.data.shape-outlined.c-yellow{border-color:rgba(255,235,59,.9);background:rgba(255,235,59,.1);color:#ffeb3b}.capibara .float-box-container .float-box span.data.shape-bar.c-yellow{background:#ffeb3b}.capibara .float-box-container .float-box span.data.shape-bar-outlined.c-yellow{background:rgba(255,235,59,.5)}.capibara .float-box-container .float-box .dot.c-yellow{background:#ffeb3b}.capibara .float-box-container .float-box .dot.c-yellow.outlined{border:1px solid #ffeb3b;box-shadow:inset 0 0 0 1px rgba(255,235,59,.7)}.capibara .header-top .tabs-container .tab:not(.disabled).c-yellow.active{background:rgba(255,235,59,.7);border-color:rgba(255,235,59,.7);color:#fff}.capibara .header-top .tabs-container .tab:not(.disabled).c-yellow.active:hover{background:rgba(255,235,59,.8)}.capibara .header-top .tabs-container .tab:not(.disabled).c-yellow:hover{background:rgba(255,235,59,.2);border-color:rgba(255,235,59,.9)}.capibara .input-box .mini-input-section--icon.c-yellow{background:#ffeb3b}.capibara.c-amber:not(.dark-theme) ::-webkit-scrollbar-thumb{background:#e6b520}.capibara.c-amber:not(.dark-theme) .header-top{background:#f4efde}.capibara.c-amber:not(.dark-theme) .corner{background:#f4efde;border-color:#ffdb6d}.capibara.c-amber:not(.dark-theme) .container-tl header{background:#f4efde;border-bottom-color:#ffdb6d}.capibara.c-amber:not(.dark-theme) .container-tl header .mes.mes-reduced:after{background:linear-gradient(90deg,transparent,#fff4d3)!important}.capibara.c-amber:not(.dark-theme) nav.right{border-color:#ffdb6d}.capibara.c-amber.dark-theme .header-top,.capibara.c-amber.dark-theme nav.right{border-color:#a07800}.capibara.c-amber.dark-theme .container-tl header,.capibara.c-amber.dark-theme .corner{border-bottom-color:#a07800}.capibara.c-amber.dark-theme .progress-bar,.capibara.c-amber .progress-bar{background-color:rgba(255,193,7,.2)!important}.capibara.c-amber.dark-theme .progress-bar:after,.capibara.c-amber.dark-theme .progress-bar:before,.capibara.c-amber .progress-bar:after,.capibara.c-amber .progress-bar:before{background-color:#ffc107!important}.capibara.c-amber.dark-theme select.tabs-select,.capibara.c-amber select.tabs-select{background-color:rgba(255,193,7,.7)!important;border-color:#ffc107!important}.capibara.c-amber.dark-theme .time,.capibara.c-amber .time{border-color:rgba(255,193,7,.6)}.capibara.c-amber.dark-theme .time .symbol,.capibara.c-amber .time .symbol{color:#ffc107}.capibara.c-amber.dark-theme .time input:active,.capibara.c-amber.dark-theme .time input:focus,.capibara.c-amber .time input:active,.capibara.c-amber .time input:focus{border-color:#ffc107;box-shadow:0 4px 6px rgba(255,193,7,.2)}.capibara.c-amber.dark-theme .input-box,.capibara.c-amber.dark-theme .input-section input.nav-input,.capibara.c-amber .input-box,.capibara.c-amber .input-section input.nav-input{border-color:rgba(255,193,7,.6)}.capibara.c-amber.dark-theme .input-section input.nav-input:active,.capibara.c-amber.dark-theme .input-section input.nav-input:focus,.capibara.c-amber .input-section input.nav-input:active,.capibara.c-amber .input-section input.nav-input:focus{border-color:#ffc107;box-shadow:0 4px 6px rgba(255,193,7,.2)}.capibara.c-amber.dark-theme .input-section.msj-input-container textarea.msj,.capibara.c-amber .input-section.msj-input-container textarea.msj{border:2px solid #ffc107}.capibara.c-amber.dark-theme .input-section.msj-input-container textarea.msj:active,.capibara.c-amber.dark-theme .input-section.msj-input-container textarea.msj:focus,.capibara.c-amber .input-section.msj-input-container textarea.msj:active,.capibara.c-amber .input-section.msj-input-container textarea.msj:focus{box-shadow:0 4px 6px rgba(255,193,7,.2)}.capibara.c-amber .btn-raised,.capibara.c-amber.dark-theme .btn-raised{border-color:#ffc107;background:rgba(255,193,7,.8)}.capibara.c-amber .btn-outline,.capibara.c-amber.dark-theme .btn-outline{border-color:#ffc107;color:#ffc107}.capibara.c-amber.dark-theme .select-container .selected-day,.capibara.c-amber .select-container .selected-day{background:rgba(255,193,7,.3);box-shadow:inset 0 0 10px rgba(255,193,7,.5)}.capibara .c-amber--background{background:#ffc107!important}.capibara .c-amber-d--background{background:#ba8b00!important}.capibara .c-amber-l--background{background:#ffd454!important}.capibara .c-amber--text{color:#ffc107!important}.capibara .c-amber-d--text{color:#ba8b00!important}.capibara .c-amber-l--text{color:#ffd454!important}.capibara .detail-day .list-detail .item-detail.c-amber{background:rgba(255,193,7,.2);border:1px solid #ffc107}.capibara .detail-day .list-detail .item-detail.c-amber .left-icon{background:#ffc107}.capibara .detail-day .list-detail .item-detail.c-amber .left-icon.outlined{border:1px solid #ffc107;box-shadow:inset 0 0 0 1px rgba(255,193,7,.7)}.capibara .detail-day .list-detail .item-detail.c-amber .name{color:#ffc107}.capibara .float-box-container .float-box span.data.c-amber{background:rgba(255,193,7,.8)}.capibara .float-box-container .float-box span.data.shape-outlined.c-amber{border-color:rgba(255,193,7,.9);background:rgba(255,193,7,.1);color:#ffc107}.capibara .float-box-container .float-box span.data.shape-bar.c-amber{background:#ffc107}.capibara .float-box-container .float-box span.data.shape-bar-outlined.c-amber{background:rgba(255,193,7,.5)}.capibara .float-box-container .float-box .dot.c-amber{background:#ffc107}.capibara .float-box-container .float-box .dot.c-amber.outlined{border:1px solid #ffc107;box-shadow:inset 0 0 0 1px rgba(255,193,7,.7)}.capibara .header-top .tabs-container .tab:not(.disabled).c-amber.active{background:rgba(255,193,7,.7);border-color:rgba(255,193,7,.7);color:#fff}.capibara .header-top .tabs-container .tab:not(.disabled).c-amber.active:hover{background:rgba(255,193,7,.8)}.capibara .header-top .tabs-container .tab:not(.disabled).c-amber:hover{background:rgba(255,193,7,.2);border-color:rgba(255,193,7,.9)}.capibara .input-box .mini-input-section--icon.c-amber{background:#ffc107}.capibara.c-orange:not(.dark-theme) ::-webkit-scrollbar-thumb{background:#e6931a}.capibara.c-orange:not(.dark-theme) .header-top{background:#f2e8d9}.capibara.c-orange:not(.dark-theme) .corner{background:#f2e8d9;border-color:#ffc166}.capibara.c-orange:not(.dark-theme) .container-tl header{background:#f2e8d9;border-bottom-color:#ffc166}.capibara.c-orange:not(.dark-theme) .container-tl header .mes.mes-reduced:after{background:linear-gradient(90deg,transparent,#ffeacc)!important}.capibara.c-orange:not(.dark-theme) nav.right{border-color:#ffc166}.capibara.c-orange.dark-theme .header-top,.capibara.c-orange.dark-theme nav.right{border-color:#995b00}.capibara.c-orange.dark-theme .container-tl header,.capibara.c-orange.dark-theme .corner{border-bottom-color:#995b00}.capibara.c-orange.dark-theme .progress-bar,.capibara.c-orange .progress-bar{background-color:rgba(255,152,0,.2)!important}.capibara.c-orange.dark-theme .progress-bar:after,.capibara.c-orange.dark-theme .progress-bar:before,.capibara.c-orange .progress-bar:after,.capibara.c-orange .progress-bar:before{background-color:#ff9800!important}.capibara.c-orange.dark-theme select.tabs-select,.capibara.c-orange select.tabs-select{background-color:rgba(255,152,0,.7)!important;border-color:#ff9800!important}.capibara.c-orange.dark-theme .time,.capibara.c-orange .time{border-color:rgba(255,152,0,.6)}.capibara.c-orange.dark-theme .time .symbol,.capibara.c-orange .time .symbol{color:#ff9800}.capibara.c-orange.dark-theme .time input:active,.capibara.c-orange.dark-theme .time input:focus,.capibara.c-orange .time input:active,.capibara.c-orange .time input:focus{border-color:#ff9800;box-shadow:0 4px 6px rgba(255,152,0,.2)}.capibara.c-orange.dark-theme .input-box,.capibara.c-orange.dark-theme .input-section input.nav-input,.capibara.c-orange .input-box,.capibara.c-orange .input-section input.nav-input{border-color:rgba(255,152,0,.6)}.capibara.c-orange.dark-theme .input-section input.nav-input:active,.capibara.c-orange.dark-theme .input-section input.nav-input:focus,.capibara.c-orange .input-section input.nav-input:active,.capibara.c-orange .input-section input.nav-input:focus{border-color:#ff9800;box-shadow:0 4px 6px rgba(255,152,0,.2)}.capibara.c-orange.dark-theme .input-section.msj-input-container textarea.msj,.capibara.c-orange .input-section.msj-input-container textarea.msj{border:2px solid #ff9800}.capibara.c-orange.dark-theme .input-section.msj-input-container textarea.msj:active,.capibara.c-orange.dark-theme .input-section.msj-input-container textarea.msj:focus,.capibara.c-orange .input-section.msj-input-container textarea.msj:active,.capibara.c-orange .input-section.msj-input-container textarea.msj:focus{box-shadow:0 4px 6px rgba(255,152,0,.2)}.capibara.c-orange .btn-raised,.capibara.c-orange.dark-theme .btn-raised{border-color:#ff9800;background:rgba(255,152,0,.8)}.capibara.c-orange .btn-outline,.capibara.c-orange.dark-theme .btn-outline{border-color:#ff9800;color:#ff9800}.capibara.c-orange.dark-theme .select-container .selected-day,.capibara.c-orange .select-container .selected-day{background:rgba(255,152,0,.3);box-shadow:inset 0 0 10px rgba(255,152,0,.5)}.capibara .c-orange--background{background:#ff9800!important}.capibara .c-orange-d--background{background:#b36a00!important}.capibara .c-orange-l--background{background:#ffb74d!important}.capibara .c-orange--text{color:#ff9800!important}.capibara .c-orange-d--text{color:#b36a00!important}.capibara .c-orange-l--text{color:#ffb74d!important}.capibara .detail-day .list-detail .item-detail.c-orange{background:rgba(255,152,0,.2);border:1px solid #ff9800}.capibara .detail-day .list-detail .item-detail.c-orange .left-icon{background:#ff9800}.capibara .detail-day .list-detail .item-detail.c-orange .left-icon.outlined{border:1px solid #ff9800;box-shadow:inset 0 0 0 1px rgba(255,152,0,.7)}.capibara .detail-day .list-detail .item-detail.c-orange .name{color:#ff9800}.capibara .float-box-container .float-box span.data.c-orange{background:rgba(255,152,0,.8)}.capibara .float-box-container .float-box span.data.shape-outlined.c-orange{border-color:rgba(255,152,0,.9);background:rgba(255,152,0,.1);color:#ff9800}.capibara .float-box-container .float-box span.data.shape-bar.c-orange{background:#ff9800}.capibara .float-box-container .float-box span.data.shape-bar-outlined.c-orange{background:rgba(255,152,0,.5)}.capibara .float-box-container .float-box .dot.c-orange{background:#ff9800}.capibara .float-box-container .float-box .dot.c-orange.outlined{border:1px solid #ff9800;box-shadow:inset 0 0 0 1px rgba(255,152,0,.7)}.capibara .header-top .tabs-container .tab:not(.disabled).c-orange.active{background:rgba(255,152,0,.7);border-color:rgba(255,152,0,.7);color:#fff}.capibara .header-top .tabs-container .tab:not(.disabled).c-orange.active:hover{background:rgba(255,152,0,.8)}.capibara .header-top .tabs-container .tab:not(.disabled).c-orange:hover{background:rgba(255,152,0,.2);border-color:rgba(255,152,0,.9)}.capibara .input-box .mini-input-section--icon.c-orange{background:#ff9800}.capibara.c-deep-orange:not(.dark-theme) ::-webkit-scrollbar-thumb{background:#cd5733}.capibara.c-deep-orange:not(.dark-theme) .header-top{background:#ede1de}.capibara.c-deep-orange:not(.dark-theme) .corner{background:#ede1de;border-color:#f09275}.capibara.c-deep-orange:not(.dark-theme) .container-tl header{background:#ede1de;border-bottom-color:#f09275}.capibara.c-deep-orange:not(.dark-theme) .container-tl header .mes.mes-reduced:after{background:linear-gradient(90deg,transparent,#fadbd1)!important}.capibara.c-deep-orange:not(.dark-theme) nav.right{border-color:#f09275}.capibara.c-deep-orange.dark-theme .header-top,.capibara.c-deep-orange.dark-theme nav.right{border-color:#8a2c0f}.capibara.c-deep-orange.dark-theme .container-tl header,.capibara.c-deep-orange.dark-theme .corner{border-bottom-color:#8a2c0f}.capibara.c-deep-orange.dark-theme .progress-bar,.capibara.c-deep-orange .progress-bar{background-color:rgba(230,74,25,.2)!important}.capibara.c-deep-orange.dark-theme .progress-bar:after,.capibara.c-deep-orange.dark-theme .progress-bar:before,.capibara.c-deep-orange .progress-bar:after,.capibara.c-deep-orange .progress-bar:before{background-color:#e64a19!important}.capibara.c-deep-orange.dark-theme select.tabs-select,.capibara.c-deep-orange select.tabs-select{background-color:rgba(230,74,25,.7)!important;border-color:#e64a19!important}.capibara.c-deep-orange.dark-theme .time,.capibara.c-deep-orange .time{border-color:rgba(230,74,25,.6)}.capibara.c-deep-orange.dark-theme .time .symbol,.capibara.c-deep-orange .time .symbol{color:#e64a19}.capibara.c-deep-orange.dark-theme .time input:active,.capibara.c-deep-orange.dark-theme .time input:focus,.capibara.c-deep-orange .time input:active,.capibara.c-deep-orange .time input:focus{border-color:#e64a19;box-shadow:0 4px 6px rgba(230,74,25,.2)}.capibara.c-deep-orange.dark-theme .input-box,.capibara.c-deep-orange.dark-theme .input-section input.nav-input,.capibara.c-deep-orange .input-box,.capibara.c-deep-orange .input-section input.nav-input{border-color:rgba(230,74,25,.6)}.capibara.c-deep-orange.dark-theme .input-section input.nav-input:active,.capibara.c-deep-orange.dark-theme .input-section input.nav-input:focus,.capibara.c-deep-orange .input-section input.nav-input:active,.capibara.c-deep-orange .input-section input.nav-input:focus{border-color:#e64a19;box-shadow:0 4px 6px rgba(230,74,25,.2)}.capibara.c-deep-orange.dark-theme .input-section.msj-input-container textarea.msj,.capibara.c-deep-orange .input-section.msj-input-container textarea.msj{border:2px solid #e64a19}.capibara.c-deep-orange.dark-theme .input-section.msj-input-container textarea.msj:active,.capibara.c-deep-orange.dark-theme .input-section.msj-input-container textarea.msj:focus,.capibara.c-deep-orange .input-section.msj-input-container textarea.msj:active,.capibara.c-deep-orange .input-section.msj-input-container textarea.msj:focus{box-shadow:0 4px 6px rgba(230,74,25,.2)}.capibara.c-deep-orange .btn-raised,.capibara.c-deep-orange.dark-theme .btn-raised{border-color:#e64a19;background:rgba(230,74,25,.8)}.capibara.c-deep-orange .btn-outline,.capibara.c-deep-orange.dark-theme .btn-outline{border-color:#e64a19;color:#e64a19}.capibara.c-deep-orange.dark-theme .select-container .selected-day,.capibara.c-deep-orange .select-container .selected-day{background:rgba(230,74,25,.3);box-shadow:inset 0 0 10px rgba(230,74,25,.5)}.capibara .c-deep-orange--background{background:#e64a19!important}.capibara .c-deep-orange-d--background{background:#a13412!important}.capibara .c-deep-orange-l--background{background:#ee805e!important}.capibara .c-deep-orange--text{color:#e64a19!important}.capibara .c-deep-orange-d--text{color:#a13412!important}.capibara .c-deep-orange-l--text{color:#ee805e!important}.capibara .detail-day .list-detail .item-detail.c-deep-orange{background:rgba(230,74,25,.2);border:1px solid #e64a19}.capibara .detail-day .list-detail .item-detail.c-deep-orange .left-icon{background:#e64a19}.capibara .detail-day .list-detail .item-detail.c-deep-orange .left-icon.outlined{border:1px solid #e64a19;box-shadow:inset 0 0 0 1px rgba(230,74,25,.7)}.capibara .detail-day .list-detail .item-detail.c-deep-orange .name{color:#e64a19}.capibara .float-box-container .float-box span.data.c-deep-orange{background:rgba(230,74,25,.8)}.capibara .float-box-container .float-box span.data.shape-outlined.c-deep-orange{border-color:rgba(230,74,25,.9);background:rgba(230,74,25,.1);color:#e64a19}.capibara .float-box-container .float-box span.data.shape-bar.c-deep-orange{background:#e64a19}.capibara .float-box-container .float-box span.data.shape-bar-outlined.c-deep-orange{background:rgba(230,74,25,.5)}.capibara .float-box-container .float-box .dot.c-deep-orange{background:#e64a19}.capibara .float-box-container .float-box .dot.c-deep-orange.outlined{border:1px solid #e64a19;box-shadow:inset 0 0 0 1px rgba(230,74,25,.7)}.capibara .header-top .tabs-container .tab:not(.disabled).c-deep-orange.active{background:rgba(230,74,25,.7);border-color:rgba(230,74,25,.7);color:#fff}.capibara .header-top .tabs-container .tab:not(.disabled).c-deep-orange.active:hover{background:rgba(230,74,25,.8)}.capibara .header-top .tabs-container .tab:not(.disabled).c-deep-orange:hover{background:rgba(230,74,25,.2);border-color:rgba(230,74,25,.9)}.capibara .input-box .mini-input-section--icon.c-deep-orange{background:#e64a19}.capibara.c-brown:not(.dark-theme) ::-webkit-scrollbar-thumb{background:#665e5b}.capibara.c-brown:not(.dark-theme) .header-top{background:#c7c7c7}.capibara.c-brown:not(.dark-theme) .corner{background:#c7c7c7;border-color:#af8778}.capibara.c-brown:not(.dark-theme) .container-tl header{background:#c7c7c7;border-bottom-color:#af8778}.capibara.c-brown:not(.dark-theme) .container-tl header .mes.mes-reduced:after{background:linear-gradient(90deg,transparent,#d5c0b8)!important}.capibara.c-brown:not(.dark-theme) nav.right{border-color:#af8778}.capibara.c-brown.dark-theme .header-top,.capibara.c-brown.dark-theme nav.right{border-color:#392822}.capibara.c-brown.dark-theme .container-tl header,.capibara.c-brown.dark-theme .corner{border-bottom-color:#392822}.capibara.c-brown.dark-theme .progress-bar,.capibara.c-brown .progress-bar{background-color:rgba(121,85,72,.2)!important}.capibara.c-brown.dark-theme .progress-bar:after,.capibara.c-brown.dark-theme .progress-bar:before,.capibara.c-brown .progress-bar:after,.capibara.c-brown .progress-bar:before{background-color:#795548!important}.capibara.c-brown.dark-theme select.tabs-select,.capibara.c-brown select.tabs-select{background-color:rgba(121,85,72,.7)!important;border-color:#795548!important}.capibara.c-brown.dark-theme .time,.capibara.c-brown .time{border-color:rgba(121,85,72,.6)}.capibara.c-brown.dark-theme .time .symbol,.capibara.c-brown .time .symbol{color:#795548}.capibara.c-brown.dark-theme .time input:active,.capibara.c-brown.dark-theme .time input:focus,.capibara.c-brown .time input:active,.capibara.c-brown .time input:focus{border-color:#795548;box-shadow:0 4px 6px rgba(121,85,72,.2)}.capibara.c-brown.dark-theme .input-box,.capibara.c-brown.dark-theme .input-section input.nav-input,.capibara.c-brown .input-box,.capibara.c-brown .input-section input.nav-input{border-color:rgba(121,85,72,.6)}.capibara.c-brown.dark-theme .input-section input.nav-input:active,.capibara.c-brown.dark-theme .input-section input.nav-input:focus,.capibara.c-brown .input-section input.nav-input:active,.capibara.c-brown .input-section input.nav-input:focus{border-color:#795548;box-shadow:0 4px 6px rgba(121,85,72,.2)}.capibara.c-brown.dark-theme .input-section.msj-input-container textarea.msj,.capibara.c-brown .input-section.msj-input-container textarea.msj{border:2px solid #795548}.capibara.c-brown.dark-theme .input-section.msj-input-container textarea.msj:active,.capibara.c-brown.dark-theme .input-section.msj-input-container textarea.msj:focus,.capibara.c-brown .input-section.msj-input-container textarea.msj:active,.capibara.c-brown .input-section.msj-input-container textarea.msj:focus{box-shadow:0 4px 6px rgba(121,85,72,.2)}.capibara.c-brown .btn-raised,.capibara.c-brown.dark-theme .btn-raised{border-color:#795548;background:rgba(121,85,72,.8)}.capibara.c-brown .btn-outline,.capibara.c-brown.dark-theme .btn-outline{border-color:#795548;color:#795548}.capibara.c-brown.dark-theme .select-container .selected-day,.capibara.c-brown .select-container .selected-day{background:rgba(121,85,72,.3);box-shadow:inset 0 0 10px rgba(121,85,72,.5)}.capibara .c-brown--background{background:#795548!important}.capibara .c-brown-d--background{background:#49332b!important}.capibara .c-brown-l--background{background:#a57868!important}.capibara .c-brown--text{color:#795548!important}.capibara .c-brown-d--text{color:#49332b!important}.capibara .c-brown-l--text{color:#a57868!important}.capibara .detail-day .list-detail .item-detail.c-brown{background:rgba(121,85,72,.2);border:1px solid #795548}.capibara .detail-day .list-detail .item-detail.c-brown .left-icon{background:#795548}.capibara .detail-day .list-detail .item-detail.c-brown .left-icon.outlined{border:1px solid #795548;box-shadow:inset 0 0 0 1px rgba(121,85,72,.7)}.capibara .detail-day .list-detail .item-detail.c-brown .name{color:#795548}.capibara .float-box-container .float-box span.data.c-brown{background:rgba(121,85,72,.8)}.capibara .float-box-container .float-box span.data.shape-outlined.c-brown{border-color:rgba(121,85,72,.9);background:rgba(121,85,72,.1);color:#795548}.capibara .float-box-container .float-box span.data.shape-bar.c-brown{background:#795548}.capibara .float-box-container .float-box span.data.shape-bar-outlined.c-brown{background:rgba(121,85,72,.5)}.capibara .float-box-container .float-box .dot.c-brown{background:#795548}.capibara .float-box-container .float-box .dot.c-brown.outlined{border:1px solid #795548;box-shadow:inset 0 0 0 1px rgba(121,85,72,.7)}.capibara .header-top .tabs-container .tab:not(.disabled).c-brown.active{background:rgba(121,85,72,.7);border-color:rgba(121,85,72,.7);color:#fff}.capibara .header-top .tabs-container .tab:not(.disabled).c-brown.active:hover{background:rgba(121,85,72,.8)}.capibara .header-top .tabs-container .tab:not(.disabled).c-brown:hover{background:rgba(121,85,72,.2);border-color:rgba(121,85,72,.9)}.capibara .input-box .mini-input-section--icon.c-brown{background:#795548}.capibara.c-blue_grey:not(.dark-theme) ::-webkit-scrollbar-thumb{background:#767676}.capibara.c-blue_grey:not(.dark-theme) .header-top{background:#dcdcdc}.capibara.c-blue_grey:not(.dark-theme) .corner{background:#dcdcdc;border-color:#99aeb8}.capibara.c-blue_grey:not(.dark-theme) .container-tl header{background:#dcdcdc;border-bottom-color:#99aeb8}.capibara.c-blue_grey:not(.dark-theme) .container-tl header .mes.mes-reduced:after{background:linear-gradient(90deg,transparent,#d5dee2)!important}.capibara.c-blue_grey:not(.dark-theme) nav.right{border-color:#99aeb8}.capibara.c-blue_grey.dark-theme .header-top,.capibara.c-blue_grey.dark-theme nav.right{border-color:#36474f}.capibara.c-blue_grey.dark-theme .container-tl header,.capibara.c-blue_grey.dark-theme .corner{border-bottom-color:#36474f}.capibara.c-blue_grey.dark-theme .progress-bar,.capibara.c-blue_grey .progress-bar{background-color:rgba(96,125,139,.2)!important}.capibara.c-blue_grey.dark-theme .progress-bar:after,.capibara.c-blue_grey.dark-theme .progress-bar:before,.capibara.c-blue_grey .progress-bar:after,.capibara.c-blue_grey .progress-bar:before{background-color:#607d8b!important}.capibara.c-blue_grey.dark-theme select.tabs-select,.capibara.c-blue_grey select.tabs-select{background-color:rgba(96,125,139,.7)!important;border-color:#607d8b!important}.capibara.c-blue_grey.dark-theme .time,.capibara.c-blue_grey .time{border-color:rgba(96,125,139,.6)}.capibara.c-blue_grey.dark-theme .time .symbol,.capibara.c-blue_grey .time .symbol{color:#607d8b}.capibara.c-blue_grey.dark-theme .time input:active,.capibara.c-blue_grey.dark-theme .time input:focus,.capibara.c-blue_grey .time input:active,.capibara.c-blue_grey .time input:focus{border-color:#607d8b;box-shadow:0 4px 6px rgba(96,125,139,.2)}.capibara.c-blue_grey.dark-theme .input-box,.capibara.c-blue_grey.dark-theme .input-section input.nav-input,.capibara.c-blue_grey .input-box,.capibara.c-blue_grey .input-section input.nav-input{border-color:rgba(96,125,139,.6)}.capibara.c-blue_grey.dark-theme .input-section input.nav-input:active,.capibara.c-blue_grey.dark-theme .input-section input.nav-input:focus,.capibara.c-blue_grey .input-section input.nav-input:active,.capibara.c-blue_grey .input-section input.nav-input:focus{border-color:#607d8b;box-shadow:0 4px 6px rgba(96,125,139,.2)}.capibara.c-blue_grey.dark-theme .input-section.msj-input-container textarea.msj,.capibara.c-blue_grey .input-section.msj-input-container textarea.msj{border:2px solid #607d8b}.capibara.c-blue_grey.dark-theme .input-section.msj-input-container textarea.msj:active,.capibara.c-blue_grey.dark-theme .input-section.msj-input-container textarea.msj:focus,.capibara.c-blue_grey .input-section.msj-input-container textarea.msj:active,.capibara.c-blue_grey .input-section.msj-input-container textarea.msj:focus{box-shadow:0 4px 6px rgba(96,125,139,.2)}.capibara.c-blue_grey .btn-raised,.capibara.c-blue_grey.dark-theme .btn-raised{border-color:#607d8b;background:rgba(96,125,139,.8)}.capibara.c-blue_grey .btn-outline,.capibara.c-blue_grey.dark-theme .btn-outline{border-color:#607d8b;color:#607d8b}.capibara.c-blue_grey.dark-theme .select-container .selected-day,.capibara.c-blue_grey .select-container .selected-day{background:rgba(96,125,139,.3);box-shadow:inset 0 0 10px rgba(96,125,139,.5)}.capibara .c-blue_grey--background{background:#607d8b!important}.capibara .c-blue_grey-d--background{background:#41545e!important}.capibara .c-blue_grey-l--background{background:#8aa2ae!important}.capibara .c-blue_grey--text{color:#607d8b!important}.capibara .c-blue_grey-d--text{color:#41545e!important}.capibara .c-blue_grey-l--text{color:#8aa2ae!important}.capibara .detail-day .list-detail .item-detail.c-blue_grey{background:rgba(96,125,139,.2);border:1px solid #607d8b}.capibara .detail-day .list-detail .item-detail.c-blue_grey .left-icon{background:#607d8b}.capibara .detail-day .list-detail .item-detail.c-blue_grey .left-icon.outlined{border:1px solid #607d8b;box-shadow:inset 0 0 0 1px rgba(96,125,139,.7)}.capibara .detail-day .list-detail .item-detail.c-blue_grey .name{color:#607d8b}.capibara .float-box-container .float-box span.data.c-blue_grey{background:rgba(96,125,139,.8)}.capibara .float-box-container .float-box span.data.shape-outlined.c-blue_grey{border-color:rgba(96,125,139,.9);background:rgba(96,125,139,.1);color:#607d8b}.capibara .float-box-container .float-box span.data.shape-bar.c-blue_grey{background:#607d8b}.capibara .float-box-container .float-box span.data.shape-bar-outlined.c-blue_grey{background:rgba(96,125,139,.5)}.capibara .float-box-container .float-box .dot.c-blue_grey{background:#607d8b}.capibara .float-box-container .float-box .dot.c-blue_grey.outlined{border:1px solid #607d8b;box-shadow:inset 0 0 0 1px rgba(96,125,139,.7)}.capibara .header-top .tabs-container .tab:not(.disabled).c-blue_grey.active{background:rgba(96,125,139,.7);border-color:rgba(96,125,139,.7);color:#fff}.capibara .header-top .tabs-container .tab:not(.disabled).c-blue_grey.active:hover{background:rgba(96,125,139,.8)}.capibara .header-top .tabs-container .tab:not(.disabled).c-blue_grey:hover{background:rgba(96,125,139,.2);border-color:rgba(96,125,139,.9)}.capibara .input-box .mini-input-section--icon.c-blue_grey{background:#607d8b}.capibara *,.capibara :after,.capibara :before{box-sizing:border-box}.capibara input{outline:none}.capibara input[type=number]{-moz-appearance:textfield}.capibara input[type=number]::-webkit-inner-spin-button,.capibara input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.capibara input[type=number]::-moz-placeholder{opacity:1}.capibara input[type=number]:-ms-input-placeholder{opacity:1}.capibara input[type=number]::placeholder{opacity:1}.capibara.dark-theme .hide-dark,.capibara:not(.dark-theme) .hide-light{display:none!important}.capibara .truncate{width:100%;display:inline-block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.capibara .hide{display:none!important}.capibara .text-title{font-size:1em;font-weight:700;margin:.3em}.capibara .text-subtitle{font-size:.875em;font-weight:700;margin:.3em}.capibara .d-inline-block{display:inline-block}.capibara .d-block{display:block}@media screen and (min-width:960px){.capibara .c-d-desktop-none{display:none!important}.capibara .c-d-desktop-inline-block{display:inline-block!important}.capibara .c-d-desktop-block{display:block!important}.capibara .c-d-desktop-flex{display:flex!important}}@media screen and (max-width:959px){.capibara .c-d-mobile-none{display:none!important}.capibara .c-d-mobile-block{display:block!important}.capibara .c-d-mobile-inline-block{display:inline-block!important}.capibara .c-d-mobile-flex{display:flex!important}}.capibara ::-webkit-scrollbar{width:12px;height:12px;opacity:.5}.capibara ::-webkit-scrollbar-corner,.capibara ::-webkit-scrollbar-track{background:transparent}.capibara ::-webkit-scrollbar-thumb{border-radius:5px;background:grey}.capibara.dark-theme ::-webkit-scrollbar-corner,.capibara.dark-theme ::-webkit-scrollbar-track{background:transparent}.capibara.dark-theme ::-webkit-scrollbar-thumb{background:#bdbdbd}.capibara{position:relative;font-family:Roboto,sans-serif;height:inherit;max-height:inherit;overflow:hidden;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;line-height:normal;font-size:var(--font-size);color:#37474f;background:#f5f5f5}.capibara.dark-theme{color:#f0f0f0;background:#222837}.capibara .container-tl{width:100%;height:calc(100% - var(--header-top-height));max-height:calc(100% - var(--header-top-height));position:relative;overflow:scroll;margin:0}.capibara.extended-right .container-tl{width:calc(100% - var(--nav-right-width))}.capibara .container-tl{background:#f5f5f5}.capibara.dark-theme .container-tl{background:#222837}.capibara .container-tl .today-line{height:0;width:0;position:-webkit-sticky;position:sticky;top:var(--header-height)}.capibara .container-tl .today-line.disable-line,.capibara .container-tl .today-line.disable-line:after{display:none!important}.capibara .container-tl .today-line:after{margin-left:calc(var(--nav-width) + var(--initial-nav-width) + var(--ex-nav-width) + var(--btn-nav-width) + 1px);position:absolute;display:block;left:0;top:0;content:\\\"\\\";width:2px;height:calc(100vh - var(--header-height) - var(--header-top-height));background:rgba(183,28,28,.4)}.capibara .container-tl.header-extended .container-tl .today-line:after{height:calc(100vh - var(--header-height) + var(--ex-header-height) + var(--header-top-height))}.capibara .corner{position:absolute;top:var(--header-top-height);z-index:4;height:var(--header-height);border:solid rgba(0,0,0,.4);border-width:0 0 2px;padding-left:8px}.capibara .corner:not(.right){left:0;border-right-width:1px;width:calc(var(--nav-width) + var(--initial-nav-width) + var(--ex-nav-width) + var(--btn-nav-width))}.capibara .corner.right{right:0;width:var(--nav-right-width);display:none}.capibara .corner>div:not([class]){width:inherit;height:inherit}.capibara .corner .corner-title{height:inherit;display:block;text-align:left;position:relative}.capibara .corner .corner-title span.bottom-text{position:absolute;left:35px;bottom:8px}.capibara .corner .initial-corner{position:absolute;left:var(--nav-width);top:0;width:var(--initial-nav-width);height:var(--header-height);overflow:hidden;display:block}.capibara .corner .initial-corner .initial-corner-title{height:inherit;width:inherit;display:inline-block;margin-right:-1px;box-sizing:border-box;vertical-align:top;position:relative}.capibara .corner .initial-corner .initial-corner-title .bottom-container{position:absolute;left:0;bottom:8px;width:100%;box-sizing:border-box;display:flex;align-items:center}.capibara .corner .initial-corner .initial-corner-title .bottom-container .item-col{flex:0 0 var(--nav-item-col-width);text-align:center;display:inline-block;font-size:.75em}.capibara .corner .extend-corner{position:absolute;left:calc(var(--nav-width) + var(--initial-nav-width));top:0;width:var(--ex-nav-width);height:var(--header-height);overflow:hidden;display:block}.capibara .corner .extend-corner .ex-corner-title{height:inherit;width:inherit;display:inline-block;margin-right:-1px;box-sizing:border-box;vertical-align:top;position:relative}.capibara .corner .extend-corner .ex-corner-title .bottom-container{position:absolute;left:0;bottom:8px;width:100%;box-sizing:border-box;display:flex;align-items:center}.capibara .corner .extend-corner .ex-corner-title .bottom-container .item-col{flex:0 0 var(--nav-item-col-width);text-align:center;display:inline-block;font-size:.75em}.capibara .corner .btn-nav-corner{position:absolute;right:0;top:0;width:var(--btn-nav-width);height:var(--header-height);padding-top:var(--header-labels-height)}.capibara .corner .btn-nav-corner .input-titles{text-align:right;display:flex;flex-direction:column;position:absolute;right:0;top:var(--header-labels-height)}.capibara .corner .btn-nav-corner .input-titles .input-title-container{position:relative}.capibara .corner .btn-nav-corner .input-titles .input-title-container:not(.persistent){display:none}.capibara .corner .btn-nav-corner .input-titles .input-title-container span.average{font-weight:700;margin-right:4px}.capibara .corner .btn-nav-corner .input-titles .input-title-container .average-box{position:absolute;right:3em;top:0;font-size:.875em;background:#fff;border-right:none;padding:3px 12px 3px 8px;z-index:2;border-radius:5px;height:18px;box-shadow:2px 0 5px 2px rgba(0,0,0,.2);line-height:13px;color:#000!important;min-width:4rem}.capibara .corner .btn-nav-corner .input-titles .input-title-container .average-box:after{content:\\\"\\\";transform:rotate(45deg);position:absolute;right:-3px;top:3px;background:#fff;width:12px;height:12px}.capibara .corner .btn-nav-corner .input-titles .input-title-container .average-box .symbol{font-weight:700}.capibara .corner .btn-nav-corner .input-titles .input-title-container .input-title{height:calc(var(--header-input-height) + 2px);line-height:calc(var(--header-input-height) + 2px);padding-right:8px;display:inline-block;font-size:.75em}.capibara.extended-right .corner.right{display:block}.capibara.header-extended .corner,.capibara.header-extended .corner .btn-nav-corner,.capibara.header-extended .corner .extend-corner,.capibara.header-extended .corner .initial-corner{height:calc(var(--header-height) + var(--ex-header-height))}.capibara.header-extended .corner .btn-nav-corner .input-titles .input-title-container:not(.persistent){display:unset}.capibara.header-extended .corner .btn-nav-corner .input-titles .input-title-container:not(.persistent) .average-box{visibility:visible}.capibara.header-extended .corner .btn-nav-corner .input-titles .input-title-container:not(.persistent) .input-title{visibility:visible;height:auto}.capibara .corner{background:#f1fffe}.capibara.dark-theme .corner{background:#313b50;border-color:rgba(64,78,105,.6)}.capibara.dark-theme .corner .input-titles .input-title-container .input-title{color:hsla(0,0%,100%,.8)!important}.capibara .header-top{position:relative;width:100%;height:var(--header-top-height);padding-right:8px;display:flex;flex-flow:row wrap}.capibara .header-top .spacer{flex:1 0 auto}.capibara .header-top .tabs-container{display:flex}.capibara .header-top .tabs-container:not(:empty){padding:0 16px}.capibara .header-top .tabs-container .tab{cursor:pointer;padding:3px 18px;font-weight:700;border:1px solid transparent;margin:8px;border-radius:30px;transition:background .2s ease}.capibara .header-top .tabs-container .tab.disabled{color:grey}.capibara .header-top .tabs-container .tab:hover{border-color:grey}.capibara .header-top .legends-container:not(:empty){padding:.5em 1em}.capibara .header-top .legends-container .legend{display:flex;flex-direction:row;margin-right:1em;cursor:pointer;padding:0 .5em}.capibara .header-top .legends-container .legend:not(.active){opacity:.5}.capibara .header-top .legends-container .legend .icon-legend{width:.825em;height:.825em;margin:2px .5em 2px 0;background:grey;box-shadow:0 1px 2px rgba(0,0,0,.4);display:inline-block;border-radius:1px;border:1px solid rgba(0,0,0,.4)}.capibara .header-top .legends-container .legend .icon-legend.circle{border-radius:50%}.capibara .header-top .legends-container .legend:hover span{text-decoration:underline}.capibara .header-top{background:#f1fffe}.capibara .header-top .tabs-container .tab{color:#313b50}.capibara .header-top .tabs-container .tab.disabled{color:rgba(49,59,80,.5)}.capibara.dark-theme .header-top{background:#313b50}.capibara.dark-theme .header-top .tabs-container .tab{color:hsla(0,0%,100%,.8)}.capibara.dark-theme .header-top .tabs-container .tab.disabled{color:hsla(0,0%,100%,.4)}.capibara .corner-footer{position:-webkit-sticky;position:sticky;left:0;bottom:0;z-index:3;width:calc(var(--nav-width) + var(--initial-nav-width) + var(--ex-nav-width) + var(--btn-nav-width));height:var(--item-height);margin-bottom:calc(var(--item-height)*-1);box-sizing:border-box}.capibara .corner-footer .corner-title{line-height:30px;height:inherit;display:block;text-align:left;box-sizing:border-box;position:relative;font-weight:700;padding:4px 8px}.capibara .corner-footer{background:#78909c;color:#fff}.capibara.dark-theme .corner-footer{background:#313b50;color:#f0f0f0}.capibara nav.right{position:absolute;right:0;top:calc(var(--header-height) + var(--header-top-height));height:calc(100% - var(--header-height) - var(--header-top-height));overflow-y:scroll;overflow-x:hidden;z-index:5;display:none;border-left:1px solid red}.capibara nav.right,.capibara nav.right .child-nav-item,.capibara nav.right .nav-item{width:var(--nav-right-width)}.capibara nav.right .nav-input-container{text-align:center}.capibara nav.right .nav-input-container .button-section{padding-bottom:.75em;padding-top:.75em;position:-webkit-sticky;position:sticky;bottom:0}.capibara nav.left{min-height:calc(100% - var(--header-height));position:-webkit-sticky;position:sticky;left:0;width:calc(var(--nav-width) + var(--initial-nav-width) + var(--ex-nav-width) + var(--btn-nav-width));height:auto;z-index:2;border-right:1px solid #b0bec5;overflow:visible;box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12)}.capibara nav.left .child-nav-item,.capibara nav.left .nav-item{width:var(--nav-width)}.capibara nav.left .detail-nav-item{max-width:300px;width:-webkit-max-content;width:-moz-max-content;width:max-content;min-height:70px;position:absolute;left:3rem;top:0;border:1px solid grey;z-index:2;border-radius:5px;padding:16px;transition:all .3s ease;flex-flow:column nowrap;box-shadow:0 6px 6px -3px rgba(0,0,0,.2),0 10px 14px 1px rgba(0,0,0,.14),0 4px 18px 3px rgba(0,0,0,.12);transform:translateY(calc(.5rem + var(--item-height)))}.capibara nav.left .detail-nav-item.to-bottom{transform:translateY(calc(-100% - .5rem))}.capibara nav.left .detail-nav-item .header-detail .title{font-size:1.125em;font-weight:700;margin-bottom:8px;max-width:calc(100% - 80px)}.capibara nav.left .detail-nav-item .header-detail .subtitle{font-size:.875;margin-bottom:8px}.capibara nav.left .detail-nav-item .header-detail .header-chip{position:absolute;right:16px;top:16px;padding:2px 8px;border:3px solid grey;border-radius:5px}.capibara nav.left .detail-nav-item .detail-container>div{margin:6px 0}.capibara nav.left .initial-nav-list{width:var(--initial-nav-width);position:absolute;left:var(--nav-width);top:0;overflow:hidden;display:block}.capibara nav.left .initial-nav-list .child-initial-nav-item,.capibara nav.left .initial-nav-list .initial-nav-item{border-bottom:1px solid #b0bec5;height:var(--item-height);box-sizing:border-box;display:flex;line-height:34px}.capibara nav.left .initial-nav-list .child-initial-nav-item .item-title,.capibara nav.left .initial-nav-list .initial-nav-item .item-title{flex:1 0 auto;padding:4px 8px}.capibara nav.left .initial-nav-list .child-initial-nav-item .item-col,.capibara nav.left .initial-nav-list .initial-nav-item .item-col{flex:0 0 var(--nav-item-col-width);text-align:center;padding:4px 8px}.capibara nav.left .initial-nav-list .child-initial-nav-item .item-col.has-input,.capibara nav.left .initial-nav-list .initial-nav-item .item-col.has-input{padding:0}.capibara nav.left .initial-nav-list .child-initial-nav-item .item-col.has-input>.hour-input,.capibara nav.left .initial-nav-list .initial-nav-item .item-col.has-input>.hour-input{font-size:.875em;width:calc(100% - 8px);border:1px solid grey;border-radius:3px;height:24px}.capibara nav.left .initial-nav-list .child-initial-nav-item .item-col.has-input>input,.capibara nav.left .initial-nav-list .initial-nav-item .item-col.has-input>input{text-align:center;font-size:.875em;width:calc(100% - 8px);display:block;border:1px solid grey;border-radius:3px;height:24px;margin:8px 4px 4px;background:hsla(0,0%,100%,.2)}.capibara nav.left .initial-nav-list .child-initial-nav-item .item-col.has-input>input:active,.capibara nav.left .initial-nav-list .child-initial-nav-item .item-col.has-input>input:focus,.capibara nav.left .initial-nav-list .initial-nav-item .item-col.has-input>input:active,.capibara nav.left .initial-nav-list .initial-nav-item .item-col.has-input>input:focus{background:hsla(0,0%,100%,.8)}.capibara nav.left .extend-nav-list{width:var(--ex-nav-width);position:absolute;left:calc(var(--nav-width) + var(--initial-nav-width));top:0;overflow:hidden;display:block}.capibara nav.left .extend-nav-list .child-ex-nav-item,.capibara nav.left .extend-nav-list .ex-nav-item{border-bottom:1px solid #b0bec5;height:var(--item-height);box-sizing:border-box;display:flex;line-height:1.75rem}.capibara nav.left .extend-nav-list .child-ex-nav-item .item-title,.capibara nav.left .extend-nav-list .ex-nav-item .item-title{flex:1 0 auto;padding:4px 8px}.capibara nav.left .extend-nav-list .child-ex-nav-item .item-col,.capibara nav.left .extend-nav-list .ex-nav-item .item-col{flex:0 0 var(--nav-item-col-width);text-align:center;padding:4px 8px}.capibara nav.left .extend-nav-list .child-ex-nav-item .item-col.has-input,.capibara nav.left .extend-nav-list .ex-nav-item .item-col.has-input{padding:0}.capibara nav.left .extend-nav-list .child-ex-nav-item .item-col.has-input>input,.capibara nav.left .extend-nav-list .ex-nav-item .item-col.has-input>input{text-align:center;font-size:.875em;width:calc(100% - 8px);display:block;border:1px solid grey;border-radius:3px;height:24px;margin:8px 4px 4px;background:hsla(0,0%,100%,.2)}.capibara nav.left .extend-nav-list .child-ex-nav-item .item-col.has-input>input:active,.capibara nav.left .extend-nav-list .child-ex-nav-item .item-col.has-input>input:focus,.capibara nav.left .extend-nav-list .ex-nav-item .item-col.has-input>input:active,.capibara nav.left .extend-nav-list .ex-nav-item .item-col.has-input>input:focus{background:hsla(0,0%,100%,.8)}.capibara nav.left .btn-nav-list{left:calc(var(--nav-width) + var(--initial-nav-width) + var(--ex-nav-width));width:var(--btn-nav-width);position:absolute;top:0;overflow:hidden}.capibara nav.left .btn-nav-list .btn-child-nav-item .btn-nav-item-content,.capibara nav.left .btn-nav-list .btn-nav-item .btn-nav-item-content{height:var(--item-height);width:inherit;padding:4px 6px;border-bottom:1px solid #b0bec5;text-align:right}.capibara nav.left .nav-item-total-footer{padding-top:3px}.capibara nav .btn-nav-item.parent,.capibara nav .ex-nav-item.parent,.capibara nav .initial-nav-item.parent,.capibara nav .nav-item-container.parent{background:rgba(25,118,210,.1)}.capibara nav .btn-nav-item.parent>.item-title,.capibara nav .ex-nav-item.parent>.item-title,.capibara nav .initial-nav-item.parent>.item-title,.capibara nav .nav-item-container.parent>.item-title{max-width:calc(var(--nav-width) + var(--ex-nav-width) + var(--initial-nav-width) + var(--btn-nav-width) - 60px);width:auto}.capibara nav .nav-item-list .child-nav-item,.capibara nav .nav-item-list .nav-item{min-height:var(--item-height);box-sizing:border-box;position:relative}.capibara nav .nav-item-list .child-nav-item .nav-item-container,.capibara nav .nav-item-list .nav-item .nav-item-container{display:flex;border-bottom:1px solid #b0bec5;height:var(--item-height)}.capibara nav .nav-item-list .child-nav-item .nav-item-container .tree-icon,.capibara nav .nav-item-list .nav-item .nav-item-container .tree-icon{transition:all .5s ease;background:transparent;border:none;width:34px;flex:0 0 34px;font-size:1.5em;text-align:center;cursor:pointer}.capibara nav .nav-item-list .child-nav-item .nav-item-container .nav-item-icon,.capibara nav .nav-item-list .nav-item .nav-item-container .nav-item-icon{flex:0 0 34px;font-size:1.125em;vertical-align:middle;text-align:center;line-height:40px;margin-top:12px}.capibara nav .nav-item-list .child-nav-item .nav-item-container .nav-item-icon path,.capibara nav .nav-item-list .nav-item .nav-item-container .nav-item-icon path{width:20px;height:20px}.capibara nav .nav-item-list .child-nav-item .nav-item-container .item-title,.capibara nav .nav-item-list .nav-item .nav-item-container .item-title{flex:1 1 auto;display:grid;font-size:1em;line-height:34px;padding:4px 8px}.capibara nav .nav-item-list .child-nav-item .nav-item-container .item-title.full-width,.capibara nav .nav-item-list .nav-item .nav-item-container .item-title.full-width{flex:1 0 auto;display:inline-block}.capibara nav .nav-item-list .child-nav-item .nav-item-container .item-title.clickeable,.capibara nav .nav-item-list .nav-item .nav-item-container .item-title.clickeable{cursor:pointer}.capibara nav .nav-item-list .child-nav-item .nav-item-container .item-title.clickeable:hover,.capibara nav .nav-item-list .nav-item .nav-item-container .item-title.clickeable:hover{background:hsla(0,0%,39.2%,.2)!important;text-decoration:underline}.capibara.extended-right nav.right{display:block}.capibara.header-extended nav.left{min-height:calc(100% - var(--header-height) + var(--ex-header-height))}.capibara.header-extended nav.right{top:calc(var(--header-height) + var(--header-top-height) + var(--ex-header-height));height:calc(100% - var(--header-height) - var(--header-top-height) - var(--ex-header-height))}.capibara nav.left,.capibara nav.right,.capibara nav.right .button-section{background:#fafafa}.capibara nav.left .detail-nav-item{border-color:rgba(0,0,0,.2);background:#fff}.capibara nav.left .detail-nav-item .header-chip.red-light{border-color:#d32f2f}.capibara nav.left .detail-nav-item .header-chip.yellow-light{border-color:#fdd835}.capibara nav.left .detail-nav-item .header-chip.green-light{border-color:#2e7d32}.capibara nav .nav-item-list .child-nav-item .nav-item-container .tree-icon,.capibara nav .nav-item-list .nav-item .nav-item-container .tree-icon{color:#37474f}.capibara nav .nav-item-list .child-nav-item .nav-item-container .nav-item-icon,.capibara nav .nav-item-list .nav-item .nav-item-container .nav-item-icon{color:rgba(55,71,79,.2)}.capibara.dark-theme nav.right,.capibara.dark-theme nav.right .button-section{background:#222837}.capibara.dark-theme nav.left{background:#222837;border-color:rgba(64,78,105,.6)}.capibara.dark-theme nav.left .detail-nav-item{border-color:#404e69;background:#222837}.capibara.dark-theme nav.left .detail-nav-item .header-chip{color:#f0f0f0}.capibara.dark-theme nav.left .detail-nav-item .header-chip.red-light{border-color:#b71c1c}.capibara.dark-theme nav.left .detail-nav-item .header-chip.yellow-light{border-color:#fb8c00}.capibara.dark-theme nav.left .detail-nav-item .header-chip.green-light{border-color:#388e3c}.capibara.dark-theme nav.left .extend-nav-list .child-ex-nav-item,.capibara.dark-theme nav.left .extend-nav-list .child-initial-nav-item,.capibara.dark-theme nav.left .extend-nav-list .ex-nav-item,.capibara.dark-theme nav.left .extend-nav-list .initial-nav-item,.capibara.dark-theme nav.left .initial-nav-list .child-ex-nav-item,.capibara.dark-theme nav.left .initial-nav-list .child-initial-nav-item,.capibara.dark-theme nav.left .initial-nav-list .ex-nav-item,.capibara.dark-theme nav.left .initial-nav-list .initial-nav-item{border-color:rgba(64,78,105,.6)}.capibara.dark-theme nav.left .extend-nav-list .child-ex-nav-item .item-col.has-input .hour-input,.capibara.dark-theme nav.left .extend-nav-list .child-ex-nav-item .item-col.has-input input,.capibara.dark-theme nav.left .extend-nav-list .child-initial-nav-item .item-col.has-input .hour-input,.capibara.dark-theme nav.left .extend-nav-list .child-initial-nav-item .item-col.has-input input,.capibara.dark-theme nav.left .extend-nav-list .ex-nav-item .item-col.has-input .hour-input,.capibara.dark-theme nav.left .extend-nav-list .ex-nav-item .item-col.has-input input,.capibara.dark-theme nav.left .extend-nav-list .initial-nav-item .item-col.has-input .hour-input,.capibara.dark-theme nav.left .extend-nav-list .initial-nav-item .item-col.has-input input,.capibara.dark-theme nav.left .initial-nav-list .child-ex-nav-item .item-col.has-input .hour-input,.capibara.dark-theme nav.left .initial-nav-list .child-ex-nav-item .item-col.has-input input,.capibara.dark-theme nav.left .initial-nav-list .child-initial-nav-item .item-col.has-input .hour-input,.capibara.dark-theme nav.left .initial-nav-list .child-initial-nav-item .item-col.has-input input,.capibara.dark-theme nav.left .initial-nav-list .ex-nav-item .item-col.has-input .hour-input,.capibara.dark-theme nav.left .initial-nav-list .ex-nav-item .item-col.has-input input,.capibara.dark-theme nav.left .initial-nav-list .initial-nav-item .item-col.has-input .hour-input,.capibara.dark-theme nav.left .initial-nav-list .initial-nav-item .item-col.has-input input{background:#404e69;color:#f0f0f0}.capibara.dark-theme nav.left .extend-nav-list .child-ex-nav-item .item-col.has-input .hour-input:active,.capibara.dark-theme nav.left .extend-nav-list .child-ex-nav-item .item-col.has-input .hour-input:focus,.capibara.dark-theme nav.left .extend-nav-list .child-ex-nav-item .item-col.has-input input:active,.capibara.dark-theme nav.left .extend-nav-list .child-ex-nav-item .item-col.has-input input:focus,.capibara.dark-theme nav.left .extend-nav-list .child-initial-nav-item .item-col.has-input .hour-input:active,.capibara.dark-theme nav.left .extend-nav-list .child-initial-nav-item .item-col.has-input .hour-input:focus,.capibara.dark-theme nav.left .extend-nav-list .child-initial-nav-item .item-col.has-input input:active,.capibara.dark-theme nav.left .extend-nav-list .child-initial-nav-item .item-col.has-input input:focus,.capibara.dark-theme nav.left .extend-nav-list .ex-nav-item .item-col.has-input .hour-input:active,.capibara.dark-theme nav.left .extend-nav-list .ex-nav-item .item-col.has-input .hour-input:focus,.capibara.dark-theme nav.left .extend-nav-list .ex-nav-item .item-col.has-input input:active,.capibara.dark-theme nav.left .extend-nav-list .ex-nav-item .item-col.has-input input:focus,.capibara.dark-theme nav.left .extend-nav-list .initial-nav-item .item-col.has-input .hour-input:active,.capibara.dark-theme nav.left .extend-nav-list .initial-nav-item .item-col.has-input .hour-input:focus,.capibara.dark-theme nav.left .extend-nav-list .initial-nav-item .item-col.has-input input:active,.capibara.dark-theme nav.left .extend-nav-list .initial-nav-item .item-col.has-input input:focus,.capibara.dark-theme nav.left .initial-nav-list .child-ex-nav-item .item-col.has-input .hour-input:active,.capibara.dark-theme nav.left .initial-nav-list .child-ex-nav-item .item-col.has-input .hour-input:focus,.capibara.dark-theme nav.left .initial-nav-list .child-ex-nav-item .item-col.has-input input:active,.capibara.dark-theme nav.left .initial-nav-list .child-ex-nav-item .item-col.has-input input:focus,.capibara.dark-theme nav.left .initial-nav-list .child-initial-nav-item .item-col.has-input .hour-input:active,.capibara.dark-theme nav.left .initial-nav-list .child-initial-nav-item .item-col.has-input .hour-input:focus,.capibara.dark-theme nav.left .initial-nav-list .child-initial-nav-item .item-col.has-input input:active,.capibara.dark-theme nav.left .initial-nav-list .child-initial-nav-item .item-col.has-input input:focus,.capibara.dark-theme nav.left .initial-nav-list .ex-nav-item .item-col.has-input .hour-input:active,.capibara.dark-theme nav.left .initial-nav-list .ex-nav-item .item-col.has-input .hour-input:focus,.capibara.dark-theme nav.left .initial-nav-list .ex-nav-item .item-col.has-input input:active,.capibara.dark-theme nav.left .initial-nav-list .ex-nav-item .item-col.has-input input:focus,.capibara.dark-theme nav.left .initial-nav-list .initial-nav-item .item-col.has-input .hour-input:active,.capibara.dark-theme nav.left .initial-nav-list .initial-nav-item .item-col.has-input .hour-input:focus,.capibara.dark-theme nav.left .initial-nav-list .initial-nav-item .item-col.has-input input:active,.capibara.dark-theme nav.left .initial-nav-list .initial-nav-item .item-col.has-input input:focus{background:hsla(0,0%,100%,.2)}.capibara.dark-theme nav.left .btn-nav-list .btn-child-nav-item .btn-nav-item-content,.capibara.dark-theme nav.left .btn-nav-list .btn-nav-item .btn-nav-item-content,.capibara.dark-theme nav .nav-item-list .child-nav-item .nav-item-container,.capibara.dark-theme nav .nav-item-list .nav-item .nav-item-container{border-color:rgba(64,78,105,.6)}.capibara.dark-theme nav .nav-item-list .child-nav-item .nav-item-container .tree-icon,.capibara.dark-theme nav .nav-item-list .nav-item .nav-item-container .tree-icon{color:#f0f0f0}.capibara.dark-theme nav .nav-item-list .child-nav-item .nav-item-container .nav-item-icon,.capibara.dark-theme nav .nav-item-list .nav-item .nav-item-container .nav-item-icon{color:hsla(0,0%,94.1%,.2)}.capibara .container-tl header{height:var(--header-height);width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;top:0;min-width:100%;position:-webkit-sticky;position:sticky;z-index:3;border-bottom:2px solid grey;box-sizing:border-box;box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12)}.capibara .container-tl header .header-container-extended{height:auto;position:relative;padding-left:calc(var(--nav-width) + var(--initial-nav-width) + var(--ex-nav-width) + var(--btn-nav-width));width:100%;box-sizing:border-box;display:flex;flex-direction:column}.capibara .container-tl header .header-container-extended .input-list{padding:1px 0;flex:0 0 auto;display:flex;flex-direction:row}.capibara .container-tl header .header-container-extended .input-list:not(.persistent){display:none}.capibara .container-tl header .header-container-extended .input-list>div{width:var(--day-width)}.capibara .container-tl header .header-container-extended .input-list>div>span{display:block;width:inherit;line-height:var(--header-input-height);height:var(--header-input-height);text-align:center;font-size:.875em}.capibara .container-tl header .header-container-extended .input-list .dia-input input{width:inherit;height:var(--header-input-height);border:1px solid grey;border-left-width:0;border-radius:0;background:hsla(0,0%,100%,.5);text-align:center;font-size:.875em}.capibara .container-tl header .header-container-extended .input-list .dia-input input:active,.capibara .container-tl header .header-container-extended .input-list .dia-input input:focus{background:hsla(0,0%,100%,.8)}.capibara .container-tl header .header-container{position:relative;padding-left:calc(var(--nav-width) + var(--initial-nav-width) + var(--ex-nav-width) + var(--btn-nav-width));width:100%;display:flex;height:var(--header-labels-height)}.capibara .container-tl header .header-container .header-item{padding:6px 8px;min-width:var(--item-min-width);height:var(--header-height);text-align:center;box-sizing:border-box;position:relative;border-left:1px solid rgba(0,0,0,.1)}.capibara .container-tl header .header-container .header-item span.bottom-text{position:absolute;left:0;bottom:8px;width:100%}.capibara .container-tl header .agno-calendario{display:inline-block;width:-webkit-max-content;width:-moz-max-content;width:max-content}.capibara .container-tl header .agno-calendario .agno{position:-webkit-sticky;position:sticky;left:calc(var(--nav-width) + var(--initial-nav-width) + var(--ex-nav-width) + var(--btn-nav-width));display:inline-block;padding-left:8px;padding-right:32px;font-size:.75em;margin-top:4px}.capibara .container-tl header .agno-calendario .meses{display:block;display:flex}.capibara .container-tl header .agno-calendario .mes-calendario{display:inline-block;min-width:var(--day-width)}.capibara .container-tl header .agno-calendario .mes-calendario .mes{display:inline-block;position:-webkit-sticky;position:sticky;left:calc(var(--nav-width) + var(--initial-nav-width) + var(--btn-nav-width));padding-left:.5em;padding-right:2em;font-size:.875em;margin-top:6px}.capibara .container-tl header .agno-calendario .mes-calendario .mes.mes-reduced{width:var(--day-width);max-width:var(--day-width);overflow:hidden}.capibara .container-tl header .agno-calendario .mes-calendario .mes.mes-reduced.mes-reduced-2{width:calc(var(--day-width)*2)}.capibara .container-tl header .agno-calendario .mes-calendario .mes.mes-reduced.mes-reduced-3{width:calc(var(--day-width)*3)}.capibara .container-tl header .agno-calendario .mes-calendario .mes.mes-reduced .mes-label{width:-webkit-max-content;width:-moz-max-content;width:max-content}.capibara .container-tl header .agno-calendario .mes-calendario .mes.mes-reduced:after{content:\\\"\\\";background:linear-gradient(90deg,transparent,red);position:absolute;right:0;top:0;height:100%;width:calc(var(--day-width)/2)}.capibara .container-tl header .agno-calendario .mes-calendario .dias{display:flex;margin-top:5px}.capibara .container-tl header .agno-calendario .mes-calendario .dias .dia-calendario{width:var(--day-width);height:var(--header-day-height);vertical-align:bottom;font-size:.875em;border-right:1px solid rgba(0,0,0,.1);box-sizing:border-box;padding:4px 6px;text-align:center}.capibara .container-tl header .agno-calendario .mes-calendario .dias .dia-calendario.is-clickeable{cursor:pointer}.capibara.header-extended .container-tl header{height:calc(var(--header-height) + var(--ex-header-height))}.capibara.header-extended .container-tl header .header-container-extended .input-list:not(.persistent){display:flex}.capibara .container-tl header{background:#f1fffe;color:#37474f}.capibara .container-tl header .agno-calendario .mes-calendario .mes.mes-reduced:after{background:linear-gradient(90deg,transparent,#f1fffe)}.capibara .container-tl header .agno-calendario .mes-calendario .dias .dia-calendario.weekend{background:rgba(0,0,0,.1);color:#263238}.capibara .container-tl header .agno-calendario .mes-calendario .dias .dia-calendario.today{background:rgba(229,57,53,.9);color:#fff}.capibara .container-tl header .agno-calendario .mes-calendario .dias .dia-calendario.active{background:green;color:#fff}.capibara .container-tl header .agno-calendario .mes-calendario .dias .dia-calendario.is-clickeable:hover{background:hsla(0,0%,39.2%,.4)}.capibara .container-tl header .agno-calendario .mes-calendario .dias .dia-calendario.is-clickeable:active{background:hsla(0,0%,39.2%,.6)}.capibara .container-tl header .header-container-extended .input-list .dia-input input,.capibara .container-tl header .header-container-extended .input-list div>span{color:#313b50}.capibara.dark-theme .container-tl header{background:#313b50;color:#f0f0f0;border-color:rgba(64,78,105,.6)}.capibara.dark-theme .container-tl header .agno-calendario .mes-calendario .mes.mes-reduced:after{background:linear-gradient(90deg,transparent,#313b50)}.capibara.dark-theme .container-tl header .agno-calendario .mes-calendario .dias .dia-calendario{border-color:rgba(64,78,105,.6)}.capibara.dark-theme .container-tl header .agno-calendario .mes-calendario .dias .dia-calendario.weekend{background:#222837;color:#f0f0f0}.capibara.dark-theme .container-tl header .agno-calendario .mes-calendario .dias .dia-calendario.today{background:rgba(183,28,28,.6);color:#f0f0f0}.capibara.dark-theme .container-tl header .agno-calendario .mes-calendario .dias .dia-calendario.active{background:rgba(56,142,60,.6);color:#f0f0f0}.capibara.dark-theme .container-tl header .agno-calendario .mes-calendario .dias .dia-calendario.is-clickeable:hover{background:hsla(0,0%,39.2%,.4)}.capibara.dark-theme .container-tl header .agno-calendario .mes-calendario .dias .dia-calendario.is-clickeable:active{background:hsla(0,0%,39.2%,.6)}.capibara.dark-theme .container-tl header .header-container-extended .input-list div>span{color:hsla(0,0%,100%,.8)!important}.capibara.dark-theme .container-tl header .header-container-extended .input-list .dia-input input{background:rgba(64,78,105,.6);color:hsla(0,0%,100%,.8)!important;border-color:#313b50}.capibara.dark-theme .container-tl header .header-container-extended .input-list .dia-input input:active,.capibara.dark-theme .container-tl header .header-container-extended .input-list .dia-input input:focus{background:hsla(0,0%,100%,.2)}.capibara .container-tl .plot-vertical-container{height:0;width:0;position:-webkit-sticky;position:sticky;top:var(--header-height);margin-left:calc(var(--nav-width) + var(--initial-nav-width) + var(--ex-nav-width) + var(--btn-nav-width))}.capibara .container-tl .plot-vertical-container .plot-vertical{background:rgba(0,0,0,.3);width:var(--day-width);height:calc(100vh - var(--header-height) - var(--header-top-height));position:absolute;top:0;left:0}.capibara .container-tl .plot-vertical-container .plot-vertical.rain{background:-webkit-repeating-linear-gradient(54deg,rgba(3,155,229,.2),rgba(3,155,229,.2) 5px,transparent 0,transparent 12px);background:repeating-linear-gradient(54deg,rgba(3,155,229,.2),rgba(3,155,229,.2) 5px,transparent 0,transparent 12px)}.capibara .container-tl .plot-horizontal-container{height:0;width:0;position:-webkit-sticky;position:sticky;left:calc(var(--nav-width) + var(--initial-nav-width) + var(--ex-nav-width) + var(--btn-nav-width))}.capibara .container-tl .plot-horizontal-container .plot-horizontal{background:rgba(0,0,0,.3);width:100vw;height:var(--item-height);position:absolute;top:0;left:0}.capibara .container-tl .plot-horizontal-container .plot-horizontal.plot-parent{background:rgba(25,118,210,.1)}.capibara .container-tl.extended-right .container-tl .plot-container .plot-vertical{height:calc(100vh - var(--header-height) + var(--ex-header-height) + var(--header-top-height))}.capibara .container-tl footer{width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;bottom:0;min-width:100%;height:var(--item-height);position:-webkit-sticky;position:sticky;z-index:2;box-sizing:border-box}.capibara .container-tl footer .footer-container{position:relative;padding-left:calc(var(--nav-width) + var(--initial-nav-width) + var(--ex-nav-width) + var(--btn-nav-width));box-sizing:border-box;min-width:100%;display:flex}.capibara .container-tl footer .footer-container .footer-item{padding:10px 2px;width:var(--day-width);cursor:default;border-left:1px solid rgba(0,0,0,.1);box-sizing:border-box;height:var(--item-height);text-align:center}.capibara .container-tl footer{background:#78909c;color:#fff}.capibara .container-tl.dark-theme footer{background:#313b50;color:#f0f0f0}.capibara .container-tl .table{position:absolute;left:calc(var(--nav-width) + var(--initial-nav-width) + var(--ex-nav-width) + var(--btn-nav-width));top:var(--header-height);width:calc(100% - var(--nav-width) - var(--initial-nav-width) - var(--ex-nav-width) - var(--btn-nav-width));max-height:calc(100% - var(--header-height));height:calc(100% - var(--header-height));margin-top:-1px}.capibara .container-tl .table .day-mouse-over{position:absolute;left:0;top:0;width:var(--day-width);height:var(--item-height);border:3px solid rgba(245,124,0,.5);box-shadow:0 0 2px #f57c00,inset 0 0 3px #f57c00;transition:transform .1s ease;overflow:visible}.capibara .container-tl .table .day-mouse-over:after,.capibara .container-tl .table .day-mouse-over:before{position:absolute;background:rgba(245,124,0,.1);content:\\\"\\\";display:block}.capibara .container-tl .table .day-mouse-over:after{width:var(--day-width);height:100vh;right:-4px;bottom:calc(var(--item-height) - 2px)}.capibara .container-tl .table .day-mouse-over:before{height:var(--item-height);width:100vw;right:calc(var(--day-width) - 2px);bottom:-4px}.capibara .container-tl .table .background-grid{width:calc(var(--day-width)*20);height:calc(var(--item-height)*20);position:absolute;left:0;top:1px;background-repeat:repeat;background-size:var(--day-width) var(--item-height),calc(var(--day-width)*7) var(--item-height),calc(var(--day-width)*7) var(--item-height);background-image:linear-gradient(90deg,rgba(80,80,80,.3) 1px,transparent 0),linear-gradient(0deg,rgba(80,80,80,.3) 1px,transparent 0),linear-gradient(90deg,transparent calc(var(--day-width)*5),rgba(80,80,80,.1) 0);background-position:0 0,0 0,0 0}.capibara .container-tl .table .draw-box{position:relative}.capibara .container-tl .table .draw-box canvas{position:absolute;left:0;top:0}.capibara.header-extended .container-tl .table{top:calc(var(--header-height) + var(--ex-header-height))}.capibara .select-container{overflow:visible;position:absolute;left:0;top:0;width:0;height:0}.capibara .select-container .selected-day{width:var(--day-width);height:var(--item-height);position:absolute;background:hsla(0,0%,74.1%,.4);box-shadow:inset 0 0 5px hsla(0,0%,74.1%,.8)}.capibara .select-container .selected-day[cap-badge]:after{content:attr(cap-badge);display:block;position:absolute;right:-3px;top:-3px;background:#1565c0;font-size:.75em;color:#fff;width:1.5em;height:1.5em;border-radius:50%;z-index:2;text-align:center;font-weight:700;padding:2px;box-shadow:0 1px 3px rgba(0,0,0,.3)}.capibara .detail-day{min-height:50px;min-width:250px;max-width:300px;border:1px solid grey;padding:1em;display:flex;flex-flow:column nowrap;margin:0 0 0 1em;box-sizing:border-box;box-shadow:0 6px 6px -3px rgba(0,0,0,.2),0 10px 14px 1px rgba(0,0,0,.14),0 4px 18px 3px rgba(0,0,0,.12);position:absolute;border-radius:5px;transition:all .3s ease;transform:translateY(calc(var(--item-height)/2*-1));z-index:4;opacity:1}.capibara .detail-day:after{content:\\\"\\\";background:inherit;width:20px;height:20px;display:block;position:absolute;left:-11px;top:calc(var(--item-height)/2 + 7px);transform:rotate(45deg);border-color:grey;border-style:solid;border-width:0 0 1px 1px}.capibara .detail-day.dd-hide{display:none}.capibara .detail-day.has-right-arrow{margin:0 16px 0 0;transform:translateX(calc(-100% - 20px - var(--day-width))) translateY(calc(var(--item-height)/2*-1))}.capibara .detail-day.has-right-arrow:after{border-width:1px 1px 0 0;left:unset;right:-11px}.capibara .detail-day.has-ceil-arrow{transform:translateY(-7px)}.capibara .detail-day.has-ceil-arrow:after{top:6px}.capibara .detail-day.has-ceil-arrow.has-right-arrow{transform:translateX(calc(-100% - 20px - var(--day-width))) translateY(-7px)}.capibara .detail-day.has-ceil-arrow.has-right-arrow:after{left:unset;right:-11px}.capibara .detail-day.has-middle-arrow{transform:translateY(calc(-50% + var(--item-height)/2))}.capibara .detail-day.has-middle-arrow:after{top:calc(50% - 10px)}.capibara .detail-day.has-middle-arrow.has-right-arrow{transform:translateX(calc(-100% - 20px - var(--day-width))) translateY(calc(-50% + var(--item-height)/2))}.capibara .detail-day.has-middle-arrow.has-right-arrow:after{left:unset;right:-11px}.capibara .detail-day.has-bottom-arrow{transform:translateY(calc(-100% + var(--item-height)))}.capibara .detail-day.has-bottom-arrow:after{top:unset;bottom:4px}.capibara .detail-day.has-bottom-arrow.has-right-arrow{transform:translateX(calc(-100% - 20px - var(--day-width))) translateY(calc(-100% + var(--item-height)))}.capibara .detail-day.has-bottom-arrow.has-right-arrow:after{left:unset;right:-11px}.capibara .detail-day .header-detail .title{font-size:1.25em;font-weight:700;margin-bottom:.5em;min-width:10em;max-width:20em}.capibara .detail-day .header-detail .subtitle{font-size:.875em;margin-bottom:8px;min-width:10em}.capibara .detail-day .list-detail{margin:0;flex:0 0 auto}.capibara .detail-day .list-detail.list .item-detail{margin:0;font-size:.875em;position:relative;padding:.5em .5em .5em 1em;border-radius:0;box-sizing:border-box;overflow:hidden;background:transparent;border:unset;border-top:1px solid rgba(0,0,0,.1);display:flex;flex-direction:row}.capibara .detail-day .list-detail.list .item-detail .left-icon{width:8px;height:8px;min-height:unset!important;left:1px;top:10px;border-radius:50%}.capibara .detail-day .list-detail.list .item-detail .left-icon.diamond{border-radius:0;transform:rotate(45deg) skew(10deg,10deg)}.capibara .detail-day .list-detail.list .item-detail .left-icon.outlined{background:transparent}.capibara .detail-day .list-detail.list .item-detail .name{flex:1 1 40%;font-weight:700;margin-bottom:0;margin-right:1em}.capibara .detail-day .list-detail.list .item-detail .item-description{flex:1 1 60%;text-align:right}.capibara .detail-day .list-detail.list .item-detail .item-description .desc{position:flex;flex-direction:row}.capibara .detail-day .list-detail.list .item-detail .item-description .desc .label{display:inline-block;min-width:36px;font-weight:700;text-align:right;margin-right:.5em}.capibara .detail-day .list-detail.flex{display:flex;flex-flow:row wrap;align-content:flex-start;display:inline-flex;flex-flow:wrap;-ms-writing-mode:tb-lr;writing-mode:vertical-lr;max-height:25%}.capibara .detail-day .list-detail.flex .item-detail{flex:0 0 auto;min-width:8em;-ms-writing-mode:lr-tb;writing-mode:horizontal-tb}.capibara .detail-day .list-detail.column{-moz-columns:7em 3;columns:7em 3;min-width:30em}.capibara .detail-day .list-detail.column .item-detail{display:inline-block;width:100%}.capibara .detail-day .list-detail .item-detail{margin:4px;position:relative;padding:.5em 1em;border-radius:6px;box-sizing:border-box;overflow:hidden}.capibara .detail-day .list-detail .item-detail .name{font-weight:700;margin-bottom:.5em}.capibara .detail-day .list-detail .item-detail .item-description .desc .label{display:inline-block;min-width:36px;font-weight:700}.capibara .detail-day .list-detail .item-detail .left-icon{width:6px;min-height:10px;height:100%;position:absolute;left:0;top:0}.capibara .detail-day .elements-detail{padding:.5em 0 .25em;display:flex;flex-wrap:wrap}.capibara .detail-day .elements-detail .name{flex:1 0 100%;font-weight:700}.capibara .detail-day .elements-detail .elements-list{margin:4px -4px}.capibara .detail-day .elements-detail .elements-list .element-detail{display:inline-block;padding:.25em .875em;border-radius:3px;color:#fff;margin:.25em}.capibara .detail-day .alert{padding:.5em 0 .25em 2em;position:relative;min-width:15em;min-width:10em;max-width:30em}.capibara .detail-day .alert .alert-icon{max-width:2em;font-size:1.75em;position:absolute;left:0;top:.5em;color:grey}.capibara .detail-day .alert .red{color:#f44336}.capibara .detail-day .msj-container{margin:.5em -1em -1em;border:1px solid grey;z-index:2}.capibara .detail-day .msj-container .msj{min-width:10em;max-width:30em;margin:0 0 .5em;padding:14px;font-size:.875em}.capibara .detail-day .msj-container .msj-detail{display:flex;flex-direction:column;padding:.25em .5em}.capibara .detail-day .msj-container .msj-detail .email{font-size:.875em;font-style:italic;opacity:.5}.capibara .detail-day .msj-container .msj-detail .date{font-size:.725em}.capibara .detail-day{color:#37474f;background:#fff}.capibara .detail-day,.capibara .detail-day .list-detail.list .item-detail,.capibara .detail-day:after{border-color:rgba(0,0,0,.2)}.capibara .detail-day .elements-detail .elements-list .element-detail{background:rgba(55,71,79,.8)}.capibara .detail-day .msj-container{background:#ffecb3;border-color:#ffca28}.capibara .detail-day .msj-container .msj-detail{background:#ffe082;border-color:#ffca28}.capibara.dark-theme .detail-day{color:#f0f0f0;border-color:#404e69;background:#222837}.capibara.dark-theme .detail-day:after{border-color:#404e69}.capibara.dark-theme .detail-day .list-detail .item-detail{background:transparent!important}.capibara.dark-theme .detail-day .list-detail.list .item-detail{border-color:#404e69}.capibara.dark-theme .detail-day .elements-detail .elements-list .element-detail{background:#293243}.capibara.dark-theme .detail-day .msj-container{background:#293243;border-color:rgba(251,192,45,.4)}.capibara.dark-theme .detail-day .msj-container .msj-detail{background:rgba(251,192,45,.1)}.capibara .cap-context-menu-container{position:absolute;left:0;top:0;z-index:10}.capibara .cap-context-menu-container.cm-hide .cap-context-menu{visibility:hidden;opacity:0}.capibara .cap-context-menu-container .cap-context-menu{position:absolute;min-width:150px;z-index:2;border-radius:3px;border:1px solid grey;box-shadow:0 3px 5px -1px rgba(0,0,0,.2),0 6px 10px 0 rgba(0,0,0,.14),0 1px 18px 0 rgba(0,0,0,.12);font-size:.75em;transition:all .1s linear;visibility:visible;opacity:1;padding:.4em 0;vertical-align:middle}.capibara .cap-context-menu-container .cap-context-menu_item{padding:.5em 1em;flex:0 0 auto;display:flex;flex-direction:row;align-items:center}.capibara .cap-context-menu-container .cap-context-menu_item:hover{background:rgba(20,20,20,.2)}.capibara .cap-context-menu-container .cap-context-menu_item.is-disabled{opacity:.5}.capibara .cap-context-menu-container .cap-context-menu_item_icon{display:inline-block;flex:0 0 auto;padding-right:.5em}.capibara .cap-context-menu-container .cap-context-menu_item_icon svg{width:16px;height:16px}.capibara .cap-context-menu-container .cap-context-menu{color:#37474f;border-color:rgba(0,0,0,.2);background:#fff}.capibara .cap-context-menu-container .cap-context-menu svg path{fill:#37474f}.capibara.dark-theme .cap-context-menu-container .cap-context-menu{color:#f0f0f0;border-color:#404e69;background:#222837}.capibara.dark-theme .cap-context-menu-container .cap-context-menu svg path{fill:#f0f0f0}.capibara .hour-input{border:1px solid grey;border-radius:3px;display:flex;justify-content:center;align-items:center;height:24px;margin:8px 4px;overflow:hidden}.capibara .hour-input input{width:50%;height:inherit;border:1px solid transparent;background:transparent;font-size:.875em}.capibara .hour-input input:active,.capibara .hour-input input:focus{border:1px solid rgba(0,0,0,.1)}.capibara .hour-input span{width:8px;text-align:center}.capibara .hour-input .hh{text-align:right}.capibara .time{border-radius:6px;display:inline-block;font-size:0}.capibara .time .symbol{display:inline-block;height:auto;width:20px;font-size:2rem;text-align:center;vertical-align:center}.capibara .time input{border-radius:6px;border:2px solid transparent;width:52px;text-align:center;font-size:2rem;position:relative;transition:all .1s ease;outline:none;background:transparent;padding:6px}.capibara .time input:active,.capibara .time input:focus{transform:scale(1.03)}.capibara .input-box{margin:0 16px;min-height:180px;border:2px solid grey;border-radius:6px;overflow-y:scroll;padding-bottom:60px}.capibara .input-box .mini-input-section{padding:8px 16px;text-align:left;width:100%;position:relative}.capibara .input-box .mini-input-section:nth-child(odd){background:hsla(0,0%,39.2%,.1)}.capibara .input-box .mini-input-section--tooltip{position:absolute;left:0;top:1.5em;display:none;padding:.5em;margin:1em;color:#000;border-radius:3px;z-index:2;box-shadow:0 2px 5px rgba(0,0,0,.3)}.capibara .input-box .mini-input-section--icon{display:inline-block;width:.75em;height:.75em;border-radius:50%;background:grey;box-shadow:0 1px 3px rgba(0,0,0,.3);margin:0 .25em 0 0}.capibara .input-box .mini-input-section:hover .mini-input-section--tooltip{display:block}.capibara .input-box .mini-input-section input{text-align:center;width:60px;margin-right:.5em;border:1px solid grey;border-radius:3px;background:hsla(0,0%,100%,.2);font-size:1em}.capibara .input-box .mini-input-section input:active,.capibara .input-box .mini-input-section input:focus{background:hsla(0,0%,100%,.8)}.capibara .input-section{margin:16px}.capibara .input-section-flex{display:flex;flex-wrap:wrap}.capibara .input-section .text-subtitle{flex:1 1 100%}.capibara .input-section input.nav-input{border:2px solid hsla(0,0%,50.2%,.7);border-radius:6px;width:50%;min-width:130px;font-size:2em;text-align:center;padding:3px 6px;background:transparent;outline:none;transition:all .1s ease}.capibara .input-section input.nav-input:active,.capibara .input-section input.nav-input:focus{border:2px solid grey;box-shadow:0 4px 6px hsla(0,0%,50.2%,.2)}.capibara .input-section .input-section-col{width:auto;position:relative;flex:1 1 10%}.capibara .input-section .input-section-col input.nav-input{min-width:unset;width:calc(100% - 1rem);max-width:7rem}.capibara .input-section.msj-input-container textarea.msj{outline:none;border-radius:6px;border:2px solid grey;width:100%;min-width:100%;max-width:100%;min-height:100px;transition:all .1s ease;padding:8px;box-sizing:border-box}.capibara .input-section.msj-input-container textarea.msj:active,.capibara .input-section.msj-input-container textarea.msj:focus{box-shadow:0 4px 6px rgba(255,160,0,.2)}.capibara .input-section input[type=checkbox]{width:18px;height:18px;vertical-align:middle}.capibara .time{border:2px solid rgba(0,128,0,.7);color:green}.capibara .time .symbol,.capibara .time input{color:#37474f}.capibara .time input:active,.capibara .time input:focus{border-color:green;box-shadow:0 4px 6px rgba(0,128,0,.2)}.capibara .input-box{color:#37474f;border:2px solid green}.capibara .input-box .mini-input-section input:active,.capibara .input-box .mini-input-section input:focus{background:#fafafa}.capibara .input-box .mini-input-section--tooltip{background:#fafafa;color:#37474f;border:1px solid #37474f}.capibara .input-section input.nav-input{color:#37474f;border:2px solid rgba(0,128,0,.7)}.capibara .input-section input.nav-input:active,.capibara .input-section input.nav-input:focus{border:2px solid green;box-shadow:0 4px 6px rgba(0,128,0,.2)}.capibara .input-section.msj-input-container textarea.msj{background:rgba(255,249,196,.6);border:2px solid rgba(0,0,0,.4)}.capibara .input-section.msj-input-container textarea.msj:active,.capibara .input-section.msj-input-container textarea.msj:focus{background:rgba(255,249,196,.8);box-shadow:0 4px 6px transparent}.capibara.dark-theme .time{border:2px solid rgba(64,78,105,.7);color:#404e69}.capibara.dark-theme .time .symbol,.capibara.dark-theme .time input{color:#f0f0f0}.capibara.dark-theme .time input:active,.capibara.dark-theme .time input:focus{border-color:#404e69;box-shadow:0 4px 6px rgba(64,78,105,.2)}.capibara.dark-theme .input-box{color:#f0f0f0;border:2px solid #404e69}.capibara.dark-theme .input-box .mini-input-section input{background:#404e69;color:#f0f0f0}.capibara.dark-theme .input-box .mini-input-section input:active,.capibara.dark-theme .input-box .mini-input-section input:focus{background:#222837}.capibara.dark-theme .input-box .mini-input-section--tooltip{background:#222837;color:#f0f0f0;border:1px solid #f0f0f0}.capibara.dark-theme .input-section input.nav-input{color:#f0f0f0;border:2px solid rgba(64,78,105,.7)}.capibara.dark-theme .input-section input.nav-input:active,.capibara.dark-theme .input-section input.nav-input:focus{border:2px solid #404e69;box-shadow:0 4px 6px rgba(64,78,105,.2)}.capibara.dark-theme .input-section.msj-input-container textarea.msj{background:rgba(251,192,45,.1);border:2px solid #9e9e9e;color:#f0f0f0}.capibara.dark-theme .input-section.msj-input-container textarea.msj:active,.capibara.dark-theme .input-section.msj-input-container textarea.msj:focus{background:rgba(251,192,45,.3);box-shadow:0 4px 6px hsla(0,0%,62%,.2)}.capibara button{outline:none}.capibara button.rotate .mdi:before,.capibara button.rotate svg{transform:rotate(180deg)}.capibara .btn-raised{background:grey}.capibara .btn-outline,.capibara .btn-raised{cursor:pointer;padding:8px 16px;margin:0 8px;border-radius:6px;border:2px solid grey;font-weight:700}.capibara .btn-outline{color:grey}.capibara .btn-icon{display:inline-block;height:32px;width:32px;outline:none;cursor:pointer;vertical-align:middle;margin-right:16px;margin-top:4px;background:transparent;border:none;padding:0;font-size:18px;color:grey;border-radius:50%}.capibara .btn-icon svg{fill:grey}.capibara .btn-icon.btn-icon-raised{background:#fff;border:none}.capibara .btn-icon.btn-icon-outline{border:1px solid grey}.capibara .btn-icon.btn-toggle-sidebar{position:absolute;right:10px;top:10px;z-index:2;margin:0}.capibara .btn-icon .mdi{font-size:24px}.capibara .btn-icon .loading-icon,.capibara .btn-icon.loading>:not(.loading-icon){display:none}.capibara .btn-icon.loading .loading-icon{display:unset}.capibara .btn-shape{display:inline-block;width:24px;height:24px;outline:none;cursor:pointer;vertical-align:middle;margin:4px;background:transparent;border:none;padding:0;font-size:14px}.capibara .btn-shape .mdi{font-size:24px}.capibara .btn-shape.btn-circle{position:relative;border:none;padding:0}.capibara .btn-shape.btn-circle:before{content:\\\"\\\";display:block;position:absolute;left:2px;top:2px;border-radius:50%;background:grey;width:22px;height:22px}.capibara .btn-shape.btn-circle span{position:absolute;left:1px;top:6px;width:100%;display:inline-block;color:#fff;text-align:center}.capibara .btn-shape.btn-circle-outline{position:relative;border:none;padding:0}.capibara .btn-shape.btn-circle-outline:before{content:\\\"\\\";display:block;position:absolute;left:2px;top:3px;border-radius:50%;border:2px solid grey;width:22px;height:22px}.capibara .btn-shape.btn-circle-outline span{position:absolute;left:1px;top:6px;width:100%;display:inline-block;color:grey;text-align:center}.capibara .btn-shape.btn-drop{position:relative;border:none;padding:0}.capibara .btn-shape.btn-drop:before{content:\\\"\\\";display:block;position:absolute;left:4px;top:0;border-radius:0 50% 50% 50%;background:grey;width:20px;height:20px;transform:translate(-2px,4px) rotate(45deg)}.capibara .btn-shape.btn-drop span{position:absolute;left:0;top:6px;width:100%;display:inline-block;color:#fff;text-align:center}.capibara.extended-right [toggle-sidebar-right] svg,.capibara.header-extended [toggle-header] svg{transform:rotate(180deg)}.capibara .btn-raised{background:#00f;border:2px solid #00f;color:#fff}.capibara .btn-outline{background:transparent;border:2px solid #00f;color:#00f}.capibara .btn-shape{color:#37474f}.capibara .btn-shape.btn-circle,.capibara .btn-shape.btn-drop{color:#fff}.capibara .btn-shape.btn-circle:before,.capibara .btn-shape.btn-drop:before{background:#388e3c}.capibara .btn-shape.btn-circle-outline:before{border-color:#388e3c}.capibara .btn-icon,.capibara .btn-shape.btn-circle-outline span{color:#37474f}.capibara .btn-icon.btn-icon-raised{background:rgba(84,110,122,.1);border-color:#546e7a;color:#546e7a}.capibara .btn-icon.btn-icon-raised:active{background:#546e7a}.capibara .btn-icon.btn-icon-raised:focus,.capibara .btn-icon.btn-icon-raised:hover{background:rgba(84,110,122,.3)}.capibara .btn-icon.btn-icon-outline{background:transparent;border-color:#546e7a;color:#546e7a}.capibara .btn-icon.btn-icon-outline:active{background:rgba(84,110,122,.3)}.capibara .btn-icon.btn-icon-outline:focus,.capibara .btn-icon.btn-icon-outline:hover{background:rgba(84,110,122,.1)}.capibara.dark-theme .btn-raised{background:#404e69;border:2px solid #f0f0f0;color:#f0f0f0}.capibara.dark-theme .btn-outline{background:transparent;border:2px solid #f0f0f0;color:#f0f0f0}.capibara.dark-theme .btn-shape,.capibara.dark-theme .btn-shape.btn-circle,.capibara.dark-theme .btn-shape.btn-drop{color:hsla(0,0%,94.1%,.8)}.capibara.dark-theme .btn-shape.btn-circle:before,.capibara.dark-theme .btn-shape.btn-drop:before{background:#2e7d32}.capibara.dark-theme .btn-shape.btn-circle-outline:before{border-color:#2e7d32}.capibara.dark-theme .btn-icon,.capibara.dark-theme .btn-shape.btn-circle-outline span{color:hsla(0,0%,94.1%,.8)}.capibara.dark-theme .btn-icon.btn-icon-raised{background:hsla(0,0%,94.1%,.1);border-color:hsla(0,0%,94.1%,.8);color:hsla(0,0%,94.1%,.8)}.capibara.dark-theme .btn-icon.btn-icon-raised:active{background:#f0f0f0}.capibara.dark-theme .btn-icon.btn-icon-raised:focus,.capibara.dark-theme .btn-icon.btn-icon-raised:hover{background:hsla(0,0%,94.1%,.3)}.capibara.dark-theme .btn-icon.btn-icon-outline{background:transparent;border-color:hsla(0,0%,94.1%,.8);color:hsla(0,0%,94.1%,.8)}.capibara.dark-theme .btn-icon.btn-icon-outline:active{background:hsla(0,0%,94.1%,.1)}.capibara.dark-theme .btn-icon.btn-icon-outline:focus,.capibara.dark-theme .btn-icon.btn-icon-outline:hover{background:hsla(0,0%,94.1%,0)}.capibara [cap-tooltip]{position:relative;display:inline-block}.capibara [cap-tooltip]:hover:before{padding:8px;opacity:1;border-width:1px;height:auto}.capibara [cap-tooltip]:before{opacity:.3;height:0;padding:0 8px;text-align:left;overflow:hidden;font-size:14px;font-weight:400;position:absolute;top:calc(100% + 18px);left:50%;transform:translatex(-50%);background-color:rgba(0,0,0,.7);border:0 solid #000;border-radius:5px;color:#fff;content:attr(cap-tooltip);text-transform:none;transition:all .2s ease;min-width:100px;z-index:5}.capibara .float-box-container{overflow:visible;position:absolute;left:0;top:0;width:0;height:0}.capibara .float-box-container .float-box{width:var(--day-width);max-width:var(--day-width);min-width:var(--day-width);height:var(--item-height);max-height:var(--item-height);min-height:var(--item-height);position:absolute;overflow:hidden;cursor:default}.capibara .float-box-container .float-box.has-message:after{content:\\\"\\\";display:block;position:absolute;width:0;height:0;right:0;top:0;border-color:#000 #000 transparent transparent;border-style:solid;border-width:6px;-webkit-animation:pulseMessage 1s infinite alternate;animation:pulseMessage 1s infinite alternate}.capibara .float-box-container .float-box.has-errors:before{content:\\\"\\\";display:block;position:absolute;width:7px;height:7px;left:1px;top:1px;border-radius:50%;-webkit-animation:pulseBackground 1s infinite alternate;animation:pulseBackground 1s infinite alternate}.capibara .float-box-container .float-box .dot-container-bottom,.capibara .float-box-container .float-box .dot-container-middle,.capibara .float-box-container .float-box .dot-container-top{position:absolute;left:0;width:100%;overflow:visible;height:0;display:flex;justify-content:center}.capibara .float-box-container .float-box .dot-container-top{top:1px}.capibara .float-box-container .float-box .dot-container-top .dot{border-radius:0 0 50% 50%}.capibara .float-box-container .float-box .dot-container-middle{top:calc(50% - 4px)}.capibara .float-box-container .float-box .dot-container-bottom{bottom:5px}.capibara .float-box-container .float-box .dot-container-bottom .dot{border-radius:0 0 50% 50%}.capibara .float-box-container .float-box .dot{width:8px;min-width:8px;height:8px;border-radius:50%;background:#0ff;margin:1px;vertical-align:middle;border:1px solid hsla(0,0%,100%,.8);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.capibara .float-box-container .float-box .dot.diamond{border-radius:0;transform:rotate(45deg) skew(10deg,10deg)}.capibara .float-box-container .float-box .dot.outlined{background-color:transparent}.capibara .float-box-container .float-box span.data{width:100%;display:block;font-size:.875em;text-align:center;box-sizing:border-box;height:calc(var(--item-height)/2);line-height:calc(var(--item-height)/2);margin-bottom:2px;font-weight:700;box-shadow:inset 0 0 10px hsla(0,0%,100%,.2);border-radius:3px;color:#fff}.capibara .float-box-container .float-box span.data:not(.shape-outlined){border:1px solid hsla(0,0%,100%,.2)}.capibara .float-box-container .float-box span.data.shape-outlined{background:transparent;border:2px solid grey;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.capibara .float-box-container .float-box span.data.shape-bar{height:calc(var(--item-height)/4 - 1.5px);width:calc(var(--day-width) - 6px);line-height:0;color:transparent;border-radius:1px;border:1px solid rgba(0,0,0,.4);margin:0 3px}.capibara .float-box-container .float-box span.data.shape-bar:first-child{margin-top:3px}.capibara .float-box-container .float-box span.data.shape-bar-outlined{height:calc(var(--item-height)/4 - 1.5px);width:calc(var(--day-width) - 6px);line-height:0;color:transparent;border-radius:1px;border:1px solid rgba(0,0,0,.2);margin:0 3px;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.capibara .float-box-container .float-box span.data.shape-bar-outlined:first-child{margin-top:3px}.capibara .float-box-container .float-box span.data.shape-bar{border-color:rgba(0,0,0,.3)}.capibara.dark-theme .float-box-container .float-box span.data.shape-bar{border-color:rgba(0,0,0,.6)}.capibara .progress-bar{width:100%;height:4px;background-color:hsla(0,0%,86.7%,.2);overflow:hidden;position:absolute;left:0;bottom:0;transition:height 1s ease}.capibara .progress-bar.hide-progress{height:0}.capibara .progress-bar:before{-webkit-animation-name:loading-fast1;animation-name:loading-fast1;-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}.capibara .progress-bar:after,.capibara .progress-bar:before{content:\\\"\\\";position:absolute;transform:translateX(-100%);width:62.5%;height:100%;background-color:#292929;-webkit-animation-duration:2s;animation-duration:2s}.capibara .progress-bar:after{-webkit-animation-name:loading-fast2;animation-name:loading-fast2;-webkit-animation-delay:1.3s;animation-delay:1.3s;-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}span.mdi{min-width:14px;min-height:14px;display:inline-block}span.mdi.mdi-subdirectory-arrow-right{color:rgba(0,0,0,.2)}.capibara .light{display:block;width:18px;height:18px;flex:0 0 18px;border-radius:50%;margin:12px 8px;border:2px solid rgba(0,0,0,.3);border-color:hsla(0,0%,100%,.8)}.capibara .light.red-light{background:#d32f2f}.capibara .light.yellow-light{background:#fdd835}.capibara .light.green-light{background:#2e7d32}.capibara.dark-theme .light{border-color:#404e69}.capibara.dark-theme .light.red-light{background:#b71c1c}.capibara.dark-theme .light.yellow-light{background:#fb8c00}.capibara.dark-theme .light.green-light{background:#388e3c}.capibara select.tabs-select{background:grey;color:#fff;font-size:16px;outline:none;width:100px;padding:3px 18px;font-weight:700;border:1px solid transparent;margin:8px;border-radius:30px;transition:background .2s ease;-webkit-appearance:none;-moz-appearance:none;appearance:none}.capibara select.tabs-select option{color:grey;background:#fff;padding:15px}.capibara select.tabs-select:after{content:\\\"\\\";display:block;position:absolute;right:10px;top:4px;border-width:4px;border-color:#fff;z-index:2}.capibara select.tabs-select.disabled{color:grey}.capibara select.tabs-select:hover{border-color:grey}\", \"\"]);\n// Exports\nmodule.exports = exports;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9zcmMvaW5kZXguanMhLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9zcmMvc2Nzcy9zdHlsZS5zY3NzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQ2FwaWJhcmEvLi9zcmMvc2Nzcy9zdHlsZS5zY3NzPzQxM2YiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gSW1wb3J0c1xudmFyIF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyA9IHJlcXVpcmUoXCIuLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCIpO1xuZXhwb3J0cyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhmYWxzZSk7XG5leHBvcnRzLnB1c2goW21vZHVsZS5pZCwgXCJAaW1wb3J0IHVybChodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2NzczI/ZmFtaWx5PVJvYm90bzppdGFsLHdnaHRAMCwzMDA7MCw0MDA7MCw1MDA7MCw3MDA7MCw5MDA7MSwzMDA7MSw0MDA7MSw1MDA7MSw3MDA7MSw5MDAmZGlzcGxheT1zd2FwKTtcIl0pO1xuLy8gTW9kdWxlXG5leHBvcnRzLnB1c2goW21vZHVsZS5pZCwgXCI6cm9vdHstLWhlYWRlci10b3AtaGVpZ2h0OjQwcHg7LS1oZWFkZXItaGVpZ2h0Ojk4cHg7LS1oZWFkZXItbGFiZWxzLWhlaWdodDo1MHB4Oy0taGVhZGVyLWRheS1oZWlnaHQ6MjRweDstLWV4LWhlYWRlci1oZWlnaHQ6MTEwcHg7LS1oZWFkZXItaW5wdXQtaGVpZ2h0OjIwcHg7LS1uYXYtd2lkdGg6MjAwcHg7LS1uYXYtaXRlbS1jb2wtd2lkdGg6NjBweDstLWluaXRpYWwtbmF2LXdpZHRoOjBweDstLWV4LW5hdi13aWR0aDowcHg7LS1idG4tbmF2LXdpZHRoOjExN3B4Oy0tbmF2LXJpZ2h0LXdpZHRoOjMwMHB4Oy0taXRlbS1taW4td2lkdGg6MTAwcHg7LS1pdGVtLWhlaWdodDo0NXB4Oy0tZGF5LXdpZHRoOjQ1cHg7LS1mb250LXNpemU6MTZweH1ALXdlYmtpdC1rZXlmcmFtZXMgcHVsc2VNZXNzYWdlezAle2JvcmRlci1jb2xvcjpyZ2JhKDIxMSw0Nyw0NywuMykgcmdiYSgyMTEsNDcsNDcsLjMpIHRyYW5zcGFyZW50IHRyYW5zcGFyZW50fXRve2JvcmRlci1jb2xvcjojZDMyZjJmICNkMzJmMmYgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnR9fUBrZXlmcmFtZXMgcHVsc2VNZXNzYWdlezAle2JvcmRlci1jb2xvcjpyZ2JhKDIxMSw0Nyw0NywuMykgcmdiYSgyMTEsNDcsNDcsLjMpIHRyYW5zcGFyZW50IHRyYW5zcGFyZW50fXRve2JvcmRlci1jb2xvcjojZDMyZjJmICNkMzJmMmYgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnR9fUAtd2Via2l0LWtleWZyYW1lcyBwdWxzZUJhY2tncm91bmR7MCV7YmFja2dyb3VuZDpyZ2JhKDIxMSw0Nyw0NywuMyl9dG97YmFja2dyb3VuZDojZDMyZjJmfX1Aa2V5ZnJhbWVzIHB1bHNlQmFja2dyb3VuZHswJXtiYWNrZ3JvdW5kOnJnYmEoMjExLDQ3LDQ3LC4zKX10b3tiYWNrZ3JvdW5kOiNkMzJmMmZ9fUAtd2Via2l0LWtleWZyYW1lcyBsb2FkaW5nLWZhc3QxezAle3RyYW5zZm9ybTp0cmFuc2xhdGVYKC0xMDAlKX00MCV7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTEwMCUpfXRve3RyYW5zZm9ybTp0cmFuc2xhdGVYKDIwMCUpfX1Aa2V5ZnJhbWVzIGxvYWRpbmctZmFzdDF7MCV7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTEwMCUpfTQwJXt0cmFuc2Zvcm06dHJhbnNsYXRlWCgtMTAwJSl9dG97dHJhbnNmb3JtOnRyYW5zbGF0ZVgoMjAwJSl9fUAtd2Via2l0LWtleWZyYW1lcyBsb2FkaW5nLWZhc3QyezAle3RyYW5zZm9ybTp0cmFuc2xhdGVYKC0xMDAlKX0xNSV7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTEwMCUpfXRve3RyYW5zZm9ybTp0cmFuc2xhdGVYKDIwMCUpfX1Aa2V5ZnJhbWVzIGxvYWRpbmctZmFzdDJ7MCV7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTEwMCUpfTE1JXt0cmFuc2Zvcm06dHJhbnNsYXRlWCgtMTAwJSl9dG97dHJhbnNmb3JtOnRyYW5zbGF0ZVgoMjAwJSl9fS5jYXBpYmFyYS5jLXJlZDpub3QoLmRhcmstdGhlbWUpIDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWJ7YmFja2dyb3VuZDojZGY1NTRifS5jYXBpYmFyYS5jLXJlZDpub3QoLmRhcmstdGhlbWUpIC5oZWFkZXItdG9we2JhY2tncm91bmQ6I2ZkZmFmOX0uY2FwaWJhcmEuYy1yZWQ6bm90KC5kYXJrLXRoZW1lKSAuY29ybmVye2JhY2tncm91bmQ6I2ZkZmFmOTtib3JkZXItY29sb3I6I2Y5OWQ5N30uY2FwaWJhcmEuYy1yZWQ6bm90KC5kYXJrLXRoZW1lKSAuY29udGFpbmVyLXRsIGhlYWRlcntiYWNrZ3JvdW5kOiNmZGZhZjk7Ym9yZGVyLWJvdHRvbS1jb2xvcjojZjk5ZDk3fS5jYXBpYmFyYS5jLXJlZDpub3QoLmRhcmstdGhlbWUpIC5jb250YWluZXItdGwgaGVhZGVyIC5tZXMubWVzLXJlZHVjZWQ6YWZ0ZXJ7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoOTBkZWcsdHJhbnNwYXJlbnQsI2ZmZjhmNykhaW1wb3J0YW50fS5jYXBpYmFyYS5jLXJlZDpub3QoLmRhcmstdGhlbWUpIG5hdi5yaWdodHtib3JkZXItY29sb3I6I2Y5OWQ5N30uY2FwaWJhcmEuYy1yZWQuZGFyay10aGVtZSAuaGVhZGVyLXRvcCwuY2FwaWJhcmEuYy1yZWQuZGFyay10aGVtZSBuYXYucmlnaHR7Ym9yZGVyLWNvbG9yOiNiYTE2MGF9LmNhcGliYXJhLmMtcmVkLmRhcmstdGhlbWUgLmNvbnRhaW5lci10bCBoZWFkZXIsLmNhcGliYXJhLmMtcmVkLmRhcmstdGhlbWUgLmNvcm5lcntib3JkZXItYm90dG9tLWNvbG9yOiNiYTE2MGF9LmNhcGliYXJhLmMtcmVkLmRhcmstdGhlbWUgLnByb2dyZXNzLWJhciwuY2FwaWJhcmEuYy1yZWQgLnByb2dyZXNzLWJhcntiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjQ0LDY3LDU0LC4yKSFpbXBvcnRhbnR9LmNhcGliYXJhLmMtcmVkLmRhcmstdGhlbWUgLnByb2dyZXNzLWJhcjphZnRlciwuY2FwaWJhcmEuYy1yZWQuZGFyay10aGVtZSAucHJvZ3Jlc3MtYmFyOmJlZm9yZSwuY2FwaWJhcmEuYy1yZWQgLnByb2dyZXNzLWJhcjphZnRlciwuY2FwaWJhcmEuYy1yZWQgLnByb2dyZXNzLWJhcjpiZWZvcmV7YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2IWltcG9ydGFudH0uY2FwaWJhcmEuYy1yZWQuZGFyay10aGVtZSBzZWxlY3QudGFicy1zZWxlY3QsLmNhcGliYXJhLmMtcmVkIHNlbGVjdC50YWJzLXNlbGVjdHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjQ0LDY3LDU0LC43KSFpbXBvcnRhbnQ7Ym9yZGVyLWNvbG9yOiNmNDQzMzYhaW1wb3J0YW50fS5jYXBpYmFyYS5jLXJlZC5kYXJrLXRoZW1lIC50aW1lLC5jYXBpYmFyYS5jLXJlZCAudGltZXtib3JkZXItY29sb3I6cmdiYSgyNDQsNjcsNTQsLjYpfS5jYXBpYmFyYS5jLXJlZC5kYXJrLXRoZW1lIC50aW1lIC5zeW1ib2wsLmNhcGliYXJhLmMtcmVkIC50aW1lIC5zeW1ib2x7Y29sb3I6I2Y0NDMzNn0uY2FwaWJhcmEuYy1yZWQuZGFyay10aGVtZSAudGltZSBpbnB1dDphY3RpdmUsLmNhcGliYXJhLmMtcmVkLmRhcmstdGhlbWUgLnRpbWUgaW5wdXQ6Zm9jdXMsLmNhcGliYXJhLmMtcmVkIC50aW1lIGlucHV0OmFjdGl2ZSwuY2FwaWJhcmEuYy1yZWQgLnRpbWUgaW5wdXQ6Zm9jdXN7Ym9yZGVyLWNvbG9yOiNmNDQzMzY7Ym94LXNoYWRvdzowIDRweCA2cHggcmdiYSgyNDQsNjcsNTQsLjIpfS5jYXBpYmFyYS5jLXJlZC5kYXJrLXRoZW1lIC5pbnB1dC1ib3gsLmNhcGliYXJhLmMtcmVkLmRhcmstdGhlbWUgLmlucHV0LXNlY3Rpb24gaW5wdXQubmF2LWlucHV0LC5jYXBpYmFyYS5jLXJlZCAuaW5wdXQtYm94LC5jYXBpYmFyYS5jLXJlZCAuaW5wdXQtc2VjdGlvbiBpbnB1dC5uYXYtaW5wdXR7Ym9yZGVyLWNvbG9yOnJnYmEoMjQ0LDY3LDU0LC42KX0uY2FwaWJhcmEuYy1yZWQuZGFyay10aGVtZSAuaW5wdXQtc2VjdGlvbiBpbnB1dC5uYXYtaW5wdXQ6YWN0aXZlLC5jYXBpYmFyYS5jLXJlZC5kYXJrLXRoZW1lIC5pbnB1dC1zZWN0aW9uIGlucHV0Lm5hdi1pbnB1dDpmb2N1cywuY2FwaWJhcmEuYy1yZWQgLmlucHV0LXNlY3Rpb24gaW5wdXQubmF2LWlucHV0OmFjdGl2ZSwuY2FwaWJhcmEuYy1yZWQgLmlucHV0LXNlY3Rpb24gaW5wdXQubmF2LWlucHV0OmZvY3Vze2JvcmRlci1jb2xvcjojZjQ0MzM2O2JveC1zaGFkb3c6MCA0cHggNnB4IHJnYmEoMjQ0LDY3LDU0LC4yKX0uY2FwaWJhcmEuYy1yZWQuZGFyay10aGVtZSAuaW5wdXQtc2VjdGlvbi5tc2otaW5wdXQtY29udGFpbmVyIHRleHRhcmVhLm1zaiwuY2FwaWJhcmEuYy1yZWQgLmlucHV0LXNlY3Rpb24ubXNqLWlucHV0LWNvbnRhaW5lciB0ZXh0YXJlYS5tc2p7Ym9yZGVyOjJweCBzb2xpZCAjZjQ0MzM2fS5jYXBpYmFyYS5jLXJlZC5kYXJrLXRoZW1lIC5pbnB1dC1zZWN0aW9uLm1zai1pbnB1dC1jb250YWluZXIgdGV4dGFyZWEubXNqOmFjdGl2ZSwuY2FwaWJhcmEuYy1yZWQuZGFyay10aGVtZSAuaW5wdXQtc2VjdGlvbi5tc2otaW5wdXQtY29udGFpbmVyIHRleHRhcmVhLm1zajpmb2N1cywuY2FwaWJhcmEuYy1yZWQgLmlucHV0LXNlY3Rpb24ubXNqLWlucHV0LWNvbnRhaW5lciB0ZXh0YXJlYS5tc2o6YWN0aXZlLC5jYXBpYmFyYS5jLXJlZCAuaW5wdXQtc2VjdGlvbi5tc2otaW5wdXQtY29udGFpbmVyIHRleHRhcmVhLm1zajpmb2N1c3tib3gtc2hhZG93OjAgNHB4IDZweCByZ2JhKDI0NCw2Nyw1NCwuMil9LmNhcGliYXJhLmMtcmVkIC5idG4tcmFpc2VkLC5jYXBpYmFyYS5jLXJlZC5kYXJrLXRoZW1lIC5idG4tcmFpc2Vke2JvcmRlci1jb2xvcjojZjQ0MzM2O2JhY2tncm91bmQ6cmdiYSgyNDQsNjcsNTQsLjgpfS5jYXBpYmFyYS5jLXJlZCAuYnRuLW91dGxpbmUsLmNhcGliYXJhLmMtcmVkLmRhcmstdGhlbWUgLmJ0bi1vdXRsaW5le2JvcmRlci1jb2xvcjojZjQ0MzM2O2NvbG9yOiNmNDQzMzZ9LmNhcGliYXJhLmMtcmVkLmRhcmstdGhlbWUgLnNlbGVjdC1jb250YWluZXIgLnNlbGVjdGVkLWRheSwuY2FwaWJhcmEuYy1yZWQgLnNlbGVjdC1jb250YWluZXIgLnNlbGVjdGVkLWRheXtiYWNrZ3JvdW5kOnJnYmEoMjQ0LDY3LDU0LC4zKTtib3gtc2hhZG93Omluc2V0IDAgMCAxMHB4IHJnYmEoMjQ0LDY3LDU0LC41KX0uY2FwaWJhcmEgLmMtcmVkLS1iYWNrZ3JvdW5ke2JhY2tncm91bmQ6I2Y0NDMzNiFpbXBvcnRhbnR9LmNhcGliYXJhIC5jLXJlZC1kLS1iYWNrZ3JvdW5ke2JhY2tncm91bmQ6I2QyMTkwYiFpbXBvcnRhbnR9LmNhcGliYXJhIC5jLXJlZC1sLS1iYWNrZ3JvdW5ke2JhY2tncm91bmQ6I2Y4ODc3ZiFpbXBvcnRhbnR9LmNhcGliYXJhIC5jLXJlZC0tdGV4dHtjb2xvcjojZjQ0MzM2IWltcG9ydGFudH0uY2FwaWJhcmEgLmMtcmVkLWQtLXRleHR7Y29sb3I6I2QyMTkwYiFpbXBvcnRhbnR9LmNhcGliYXJhIC5jLXJlZC1sLS10ZXh0e2NvbG9yOiNmODg3N2YhaW1wb3J0YW50fS5jYXBpYmFyYSAuZGV0YWlsLWRheSAubGlzdC1kZXRhaWwgLml0ZW0tZGV0YWlsLmMtcmVke2JhY2tncm91bmQ6cmdiYSgyNDQsNjcsNTQsLjIpO2JvcmRlcjoxcHggc29saWQgI2Y0NDMzNn0uY2FwaWJhcmEgLmRldGFpbC1kYXkgLmxpc3QtZGV0YWlsIC5pdGVtLWRldGFpbC5jLXJlZCAubGVmdC1pY29ue2JhY2tncm91bmQ6I2Y0NDMzNn0uY2FwaWJhcmEgLmRldGFpbC1kYXkgLmxpc3QtZGV0YWlsIC5pdGVtLWRldGFpbC5jLXJlZCAubGVmdC1pY29uLm91dGxpbmVke2JvcmRlcjoxcHggc29saWQgI2Y0NDMzNjtib3gtc2hhZG93Omluc2V0IDAgMCAwIDFweCByZ2JhKDI0NCw2Nyw1NCwuNyl9LmNhcGliYXJhIC5kZXRhaWwtZGF5IC5saXN0LWRldGFpbCAuaXRlbS1kZXRhaWwuYy1yZWQgLm5hbWV7Y29sb3I6I2Y0NDMzNn0uY2FwaWJhcmEgLmZsb2F0LWJveC1jb250YWluZXIgLmZsb2F0LWJveCBzcGFuLmRhdGEuYy1yZWR7YmFja2dyb3VuZDpyZ2JhKDI0NCw2Nyw1NCwuOCl9LmNhcGliYXJhIC5mbG9hdC1ib3gtY29udGFpbmVyIC5mbG9hdC1ib3ggc3Bhbi5kYXRhLnNoYXBlLW91dGxpbmVkLmMtcmVke2JvcmRlci1jb2xvcjpyZ2JhKDI0NCw2Nyw1NCwuOSk7YmFja2dyb3VuZDpyZ2JhKDI0NCw2Nyw1NCwuMSk7Y29sb3I6I2Y0NDMzNn0uY2FwaWJhcmEgLmZsb2F0LWJveC1jb250YWluZXIgLmZsb2F0LWJveCBzcGFuLmRhdGEuc2hhcGUtYmFyLmMtcmVke2JhY2tncm91bmQ6I2Y0NDMzNn0uY2FwaWJhcmEgLmZsb2F0LWJveC1jb250YWluZXIgLmZsb2F0LWJveCBzcGFuLmRhdGEuc2hhcGUtYmFyLW91dGxpbmVkLmMtcmVke2JhY2tncm91bmQ6cmdiYSgyNDQsNjcsNTQsLjUpfS5jYXBpYmFyYSAuZmxvYXQtYm94LWNvbnRhaW5lciAuZmxvYXQtYm94IC5kb3QuYy1yZWR7YmFja2dyb3VuZDojZjQ0MzM2fS5jYXBpYmFyYSAuZmxvYXQtYm94LWNvbnRhaW5lciAuZmxvYXQtYm94IC5kb3QuYy1yZWQub3V0bGluZWR7Ym9yZGVyOjFweCBzb2xpZCAjZjQ0MzM2O2JveC1zaGFkb3c6aW5zZXQgMCAwIDAgMXB4IHJnYmEoMjQ0LDY3LDU0LC43KX0uY2FwaWJhcmEgLmhlYWRlci10b3AgLnRhYnMtY29udGFpbmVyIC50YWI6bm90KC5kaXNhYmxlZCkuYy1yZWQuYWN0aXZle2JhY2tncm91bmQ6cmdiYSgyNDQsNjcsNTQsLjcpO2JvcmRlci1jb2xvcjpyZ2JhKDI0NCw2Nyw1NCwuNyk7Y29sb3I6I2ZmZn0uY2FwaWJhcmEgLmhlYWRlci10b3AgLnRhYnMtY29udGFpbmVyIC50YWI6bm90KC5kaXNhYmxlZCkuYy1yZWQuYWN0aXZlOmhvdmVye2JhY2tncm91bmQ6cmdiYSgyNDQsNjcsNTQsLjgpfS5jYXBpYmFyYSAuaGVhZGVyLXRvcCAudGFicy1jb250YWluZXIgLnRhYjpub3QoLmRpc2FibGVkKS5jLXJlZDpob3ZlcntiYWNrZ3JvdW5kOnJnYmEoMjQ0LDY3LDU0LC4yKTtib3JkZXItY29sb3I6cmdiYSgyNDQsNjcsNTQsLjkpfS5jYXBpYmFyYSAuaW5wdXQtYm94IC5taW5pLWlucHV0LXNlY3Rpb24tLWljb24uYy1yZWR7YmFja2dyb3VuZDojZjQ0MzM2fS5jYXBpYmFyYS5jLXBpbms6bm90KC5kYXJrLXRoZW1lKSA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1ie2JhY2tncm91bmQ6I2QwMzc2Yn0uY2FwaWJhcmEuYy1waW5rOm5vdCguZGFyay10aGVtZSkgLmhlYWRlci10b3B7YmFja2dyb3VuZDojZjBlM2U3fS5jYXBpYmFyYS5jLXBpbms6bm90KC5kYXJrLXRoZW1lKSAuY29ybmVye2JhY2tncm91bmQ6I2YwZTNlNztib3JkZXItY29sb3I6I2YyN2JhM30uY2FwaWJhcmEuYy1waW5rOm5vdCguZGFyay10aGVtZSkgLmNvbnRhaW5lci10bCBoZWFkZXJ7YmFja2dyb3VuZDojZjBlM2U3O2JvcmRlci1ib3R0b20tY29sb3I6I2YyN2JhM30uY2FwaWJhcmEuYy1waW5rOm5vdCguZGFyay10aGVtZSkgLmNvbnRhaW5lci10bCBoZWFkZXIgLm1lcy5tZXMtcmVkdWNlZDphZnRlcntiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCg5MGRlZyx0cmFuc3BhcmVudCwjZmJkOGU0KSFpbXBvcnRhbnR9LmNhcGliYXJhLmMtcGluazpub3QoLmRhcmstdGhlbWUpIG5hdi5yaWdodHtib3JkZXItY29sb3I6I2YyN2JhM30uY2FwaWJhcmEuYy1waW5rLmRhcmstdGhlbWUgLmhlYWRlci10b3AsLmNhcGliYXJhLmMtcGluay5kYXJrLXRoZW1lIG5hdi5yaWdodHtib3JkZXItY29sb3I6IzkzMGUzYn0uY2FwaWJhcmEuYy1waW5rLmRhcmstdGhlbWUgLmNvbnRhaW5lci10bCBoZWFkZXIsLmNhcGliYXJhLmMtcGluay5kYXJrLXRoZW1lIC5jb3JuZXJ7Ym9yZGVyLWJvdHRvbS1jb2xvcjojOTMwZTNifS5jYXBpYmFyYS5jLXBpbmsuZGFyay10aGVtZSAucHJvZ3Jlc3MtYmFyLC5jYXBpYmFyYS5jLXBpbmsgLnByb2dyZXNzLWJhcntiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjMzLDMwLDk5LC4yKSFpbXBvcnRhbnR9LmNhcGliYXJhLmMtcGluay5kYXJrLXRoZW1lIC5wcm9ncmVzcy1iYXI6YWZ0ZXIsLmNhcGliYXJhLmMtcGluay5kYXJrLXRoZW1lIC5wcm9ncmVzcy1iYXI6YmVmb3JlLC5jYXBpYmFyYS5jLXBpbmsgLnByb2dyZXNzLWJhcjphZnRlciwuY2FwaWJhcmEuYy1waW5rIC5wcm9ncmVzcy1iYXI6YmVmb3Jle2JhY2tncm91bmQtY29sb3I6I2U5MWU2MyFpbXBvcnRhbnR9LmNhcGliYXJhLmMtcGluay5kYXJrLXRoZW1lIHNlbGVjdC50YWJzLXNlbGVjdCwuY2FwaWJhcmEuYy1waW5rIHNlbGVjdC50YWJzLXNlbGVjdHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjMzLDMwLDk5LC43KSFpbXBvcnRhbnQ7Ym9yZGVyLWNvbG9yOiNlOTFlNjMhaW1wb3J0YW50fS5jYXBpYmFyYS5jLXBpbmsuZGFyay10aGVtZSAudGltZSwuY2FwaWJhcmEuYy1waW5rIC50aW1le2JvcmRlci1jb2xvcjpyZ2JhKDIzMywzMCw5OSwuNil9LmNhcGliYXJhLmMtcGluay5kYXJrLXRoZW1lIC50aW1lIC5zeW1ib2wsLmNhcGliYXJhLmMtcGluayAudGltZSAuc3ltYm9se2NvbG9yOiNlOTFlNjN9LmNhcGliYXJhLmMtcGluay5kYXJrLXRoZW1lIC50aW1lIGlucHV0OmFjdGl2ZSwuY2FwaWJhcmEuYy1waW5rLmRhcmstdGhlbWUgLnRpbWUgaW5wdXQ6Zm9jdXMsLmNhcGliYXJhLmMtcGluayAudGltZSBpbnB1dDphY3RpdmUsLmNhcGliYXJhLmMtcGluayAudGltZSBpbnB1dDpmb2N1c3tib3JkZXItY29sb3I6I2U5MWU2Mztib3gtc2hhZG93OjAgNHB4IDZweCByZ2JhKDIzMywzMCw5OSwuMil9LmNhcGliYXJhLmMtcGluay5kYXJrLXRoZW1lIC5pbnB1dC1ib3gsLmNhcGliYXJhLmMtcGluay5kYXJrLXRoZW1lIC5pbnB1dC1zZWN0aW9uIGlucHV0Lm5hdi1pbnB1dCwuY2FwaWJhcmEuYy1waW5rIC5pbnB1dC1ib3gsLmNhcGliYXJhLmMtcGluayAuaW5wdXQtc2VjdGlvbiBpbnB1dC5uYXYtaW5wdXR7Ym9yZGVyLWNvbG9yOnJnYmEoMjMzLDMwLDk5LC42KX0uY2FwaWJhcmEuYy1waW5rLmRhcmstdGhlbWUgLmlucHV0LXNlY3Rpb24gaW5wdXQubmF2LWlucHV0OmFjdGl2ZSwuY2FwaWJhcmEuYy1waW5rLmRhcmstdGhlbWUgLmlucHV0LXNlY3Rpb24gaW5wdXQubmF2LWlucHV0OmZvY3VzLC5jYXBpYmFyYS5jLXBpbmsgLmlucHV0LXNlY3Rpb24gaW5wdXQubmF2LWlucHV0OmFjdGl2ZSwuY2FwaWJhcmEuYy1waW5rIC5pbnB1dC1zZWN0aW9uIGlucHV0Lm5hdi1pbnB1dDpmb2N1c3tib3JkZXItY29sb3I6I2U5MWU2Mztib3gtc2hhZG93OjAgNHB4IDZweCByZ2JhKDIzMywzMCw5OSwuMil9LmNhcGliYXJhLmMtcGluay5kYXJrLXRoZW1lIC5pbnB1dC1zZWN0aW9uLm1zai1pbnB1dC1jb250YWluZXIgdGV4dGFyZWEubXNqLC5jYXBpYmFyYS5jLXBpbmsgLmlucHV0LXNlY3Rpb24ubXNqLWlucHV0LWNvbnRhaW5lciB0ZXh0YXJlYS5tc2p7Ym9yZGVyOjJweCBzb2xpZCAjZTkxZTYzfS5jYXBpYmFyYS5jLXBpbmsuZGFyay10aGVtZSAuaW5wdXQtc2VjdGlvbi5tc2otaW5wdXQtY29udGFpbmVyIHRleHRhcmVhLm1zajphY3RpdmUsLmNhcGliYXJhLmMtcGluay5kYXJrLXRoZW1lIC5pbnB1dC1zZWN0aW9uLm1zai1pbnB1dC1jb250YWluZXIgdGV4dGFyZWEubXNqOmZvY3VzLC5jYXBpYmFyYS5jLXBpbmsgLmlucHV0LXNlY3Rpb24ubXNqLWlucHV0LWNvbnRhaW5lciB0ZXh0YXJlYS5tc2o6YWN0aXZlLC5jYXBpYmFyYS5jLXBpbmsgLmlucHV0LXNlY3Rpb24ubXNqLWlucHV0LWNvbnRhaW5lciB0ZXh0YXJlYS5tc2o6Zm9jdXN7Ym94LXNoYWRvdzowIDRweCA2cHggcmdiYSgyMzMsMzAsOTksLjIpfS5jYXBpYmFyYS5jLXBpbmsgLmJ0bi1yYWlzZWQsLmNhcGliYXJhLmMtcGluay5kYXJrLXRoZW1lIC5idG4tcmFpc2Vke2JvcmRlci1jb2xvcjojZTkxZTYzO2JhY2tncm91bmQ6cmdiYSgyMzMsMzAsOTksLjgpfS5jYXBpYmFyYS5jLXBpbmsgLmJ0bi1vdXRsaW5lLC5jYXBpYmFyYS5jLXBpbmsuZGFyay10aGVtZSAuYnRuLW91dGxpbmV7Ym9yZGVyLWNvbG9yOiNlOTFlNjM7Y29sb3I6I2U5MWU2M30uY2FwaWJhcmEuYy1waW5rLmRhcmstdGhlbWUgLnNlbGVjdC1jb250YWluZXIgLnNlbGVjdGVkLWRheSwuY2FwaWJhcmEuYy1waW5rIC5zZWxlY3QtY29udGFpbmVyIC5zZWxlY3RlZC1kYXl7YmFja2dyb3VuZDpyZ2JhKDIzMywzMCw5OSwuMyk7Ym94LXNoYWRvdzppbnNldCAwIDAgMTBweCByZ2JhKDIzMywzMCw5OSwuNSl9LmNhcGliYXJhIC5jLXBpbmstLWJhY2tncm91bmR7YmFja2dyb3VuZDojZTkxZTYzIWltcG9ydGFudH0uY2FwaWJhcmEgLmMtcGluay1kLS1iYWNrZ3JvdW5ke2JhY2tncm91bmQ6I2FhMTE0NSFpbXBvcnRhbnR9LmNhcGliYXJhIC5jLXBpbmstbC0tYmFja2dyb3VuZHtiYWNrZ3JvdW5kOiNmMDY0OTMhaW1wb3J0YW50fS5jYXBpYmFyYSAuYy1waW5rLS10ZXh0e2NvbG9yOiNlOTFlNjMhaW1wb3J0YW50fS5jYXBpYmFyYSAuYy1waW5rLWQtLXRleHR7Y29sb3I6I2FhMTE0NSFpbXBvcnRhbnR9LmNhcGliYXJhIC5jLXBpbmstbC0tdGV4dHtjb2xvcjojZjA2NDkzIWltcG9ydGFudH0uY2FwaWJhcmEgLmRldGFpbC1kYXkgLmxpc3QtZGV0YWlsIC5pdGVtLWRldGFpbC5jLXBpbmt7YmFja2dyb3VuZDpyZ2JhKDIzMywzMCw5OSwuMik7Ym9yZGVyOjFweCBzb2xpZCAjZTkxZTYzfS5jYXBpYmFyYSAuZGV0YWlsLWRheSAubGlzdC1kZXRhaWwgLml0ZW0tZGV0YWlsLmMtcGluayAubGVmdC1pY29ue2JhY2tncm91bmQ6I2U5MWU2M30uY2FwaWJhcmEgLmRldGFpbC1kYXkgLmxpc3QtZGV0YWlsIC5pdGVtLWRldGFpbC5jLXBpbmsgLmxlZnQtaWNvbi5vdXRsaW5lZHtib3JkZXI6MXB4IHNvbGlkICNlOTFlNjM7Ym94LXNoYWRvdzppbnNldCAwIDAgMCAxcHggcmdiYSgyMzMsMzAsOTksLjcpfS5jYXBpYmFyYSAuZGV0YWlsLWRheSAubGlzdC1kZXRhaWwgLml0ZW0tZGV0YWlsLmMtcGluayAubmFtZXtjb2xvcjojZTkxZTYzfS5jYXBpYmFyYSAuZmxvYXQtYm94LWNvbnRhaW5lciAuZmxvYXQtYm94IHNwYW4uZGF0YS5jLXBpbmt7YmFja2dyb3VuZDpyZ2JhKDIzMywzMCw5OSwuOCl9LmNhcGliYXJhIC5mbG9hdC1ib3gtY29udGFpbmVyIC5mbG9hdC1ib3ggc3Bhbi5kYXRhLnNoYXBlLW91dGxpbmVkLmMtcGlua3tib3JkZXItY29sb3I6cmdiYSgyMzMsMzAsOTksLjkpO2JhY2tncm91bmQ6cmdiYSgyMzMsMzAsOTksLjEpO2NvbG9yOiNlOTFlNjN9LmNhcGliYXJhIC5mbG9hdC1ib3gtY29udGFpbmVyIC5mbG9hdC1ib3ggc3Bhbi5kYXRhLnNoYXBlLWJhci5jLXBpbmt7YmFja2dyb3VuZDojZTkxZTYzfS5jYXBpYmFyYSAuZmxvYXQtYm94LWNvbnRhaW5lciAuZmxvYXQtYm94IHNwYW4uZGF0YS5zaGFwZS1iYXItb3V0bGluZWQuYy1waW5re2JhY2tncm91bmQ6cmdiYSgyMzMsMzAsOTksLjUpfS5jYXBpYmFyYSAuZmxvYXQtYm94LWNvbnRhaW5lciAuZmxvYXQtYm94IC5kb3QuYy1waW5re2JhY2tncm91bmQ6I2U5MWU2M30uY2FwaWJhcmEgLmZsb2F0LWJveC1jb250YWluZXIgLmZsb2F0LWJveCAuZG90LmMtcGluay5vdXRsaW5lZHtib3JkZXI6MXB4IHNvbGlkICNlOTFlNjM7Ym94LXNoYWRvdzppbnNldCAwIDAgMCAxcHggcmdiYSgyMzMsMzAsOTksLjcpfS5jYXBpYmFyYSAuaGVhZGVyLXRvcCAudGFicy1jb250YWluZXIgLnRhYjpub3QoLmRpc2FibGVkKS5jLXBpbmsuYWN0aXZle2JhY2tncm91bmQ6cmdiYSgyMzMsMzAsOTksLjcpO2JvcmRlci1jb2xvcjpyZ2JhKDIzMywzMCw5OSwuNyk7Y29sb3I6I2ZmZn0uY2FwaWJhcmEgLmhlYWRlci10b3AgLnRhYnMtY29udGFpbmVyIC50YWI6bm90KC5kaXNhYmxlZCkuYy1waW5rLmFjdGl2ZTpob3ZlcntiYWNrZ3JvdW5kOnJnYmEoMjMzLDMwLDk5LC44KX0uY2FwaWJhcmEgLmhlYWRlci10b3AgLnRhYnMtY29udGFpbmVyIC50YWI6bm90KC5kaXNhYmxlZCkuYy1waW5rOmhvdmVye2JhY2tncm91bmQ6cmdiYSgyMzMsMzAsOTksLjIpO2JvcmRlci1jb2xvcjpyZ2JhKDIzMywzMCw5OSwuOSl9LmNhcGliYXJhIC5pbnB1dC1ib3ggLm1pbmktaW5wdXQtc2VjdGlvbi0taWNvbi5jLXBpbmt7YmFja2dyb3VuZDojZTkxZTYzfS5jYXBpYmFyYS5jLXB1cnBsZTpub3QoLmRhcmstdGhlbWUpIDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWJ7YmFja2dyb3VuZDojOGQzZDlifS5jYXBpYmFyYS5jLXB1cnBsZTpub3QoLmRhcmstdGhlbWUpIC5oZWFkZXItdG9we2JhY2tncm91bmQ6I2Q2Y2JkOH0uY2FwaWJhcmEuYy1wdXJwbGU6bm90KC5kYXJrLXRoZW1lKSAuY29ybmVye2JhY2tncm91bmQ6I2Q2Y2JkODtib3JkZXItY29sb3I6I2NhNjFkY30uY2FwaWJhcmEuYy1wdXJwbGU6bm90KC5kYXJrLXRoZW1lKSAuY29udGFpbmVyLXRsIGhlYWRlcntiYWNrZ3JvdW5kOiNkNmNiZDg7Ym9yZGVyLWJvdHRvbS1jb2xvcjojY2E2MWRjfS5jYXBpYmFyYS5jLXB1cnBsZTpub3QoLmRhcmstdGhlbWUpIC5jb250YWluZXItdGwgaGVhZGVyIC5tZXMubWVzLXJlZHVjZWQ6YWZ0ZXJ7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoOTBkZWcsdHJhbnNwYXJlbnQsI2U2YjVlZSkhaW1wb3J0YW50fS5jYXBpYmFyYS5jLXB1cnBsZTpub3QoLmRhcmstdGhlbWUpIG5hdi5yaWdodHtib3JkZXItY29sb3I6I2NhNjFkY30uY2FwaWJhcmEuYy1wdXJwbGUuZGFyay10aGVtZSAuaGVhZGVyLXRvcCwuY2FwaWJhcmEuYy1wdXJwbGUuZGFyay10aGVtZSBuYXYucmlnaHR7Ym9yZGVyLWNvbG9yOiM1MjE0NWR9LmNhcGliYXJhLmMtcHVycGxlLmRhcmstdGhlbWUgLmNvbnRhaW5lci10bCBoZWFkZXIsLmNhcGliYXJhLmMtcHVycGxlLmRhcmstdGhlbWUgLmNvcm5lcntib3JkZXItYm90dG9tLWNvbG9yOiM1MjE0NWR9LmNhcGliYXJhLmMtcHVycGxlLmRhcmstdGhlbWUgLnByb2dyZXNzLWJhciwuY2FwaWJhcmEuYy1wdXJwbGUgLnByb2dyZXNzLWJhcntiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMTU2LDM5LDE3NiwuMikhaW1wb3J0YW50fS5jYXBpYmFyYS5jLXB1cnBsZS5kYXJrLXRoZW1lIC5wcm9ncmVzcy1iYXI6YWZ0ZXIsLmNhcGliYXJhLmMtcHVycGxlLmRhcmstdGhlbWUgLnByb2dyZXNzLWJhcjpiZWZvcmUsLmNhcGliYXJhLmMtcHVycGxlIC5wcm9ncmVzcy1iYXI6YWZ0ZXIsLmNhcGliYXJhLmMtcHVycGxlIC5wcm9ncmVzcy1iYXI6YmVmb3Jle2JhY2tncm91bmQtY29sb3I6IzljMjdiMCFpbXBvcnRhbnR9LmNhcGliYXJhLmMtcHVycGxlLmRhcmstdGhlbWUgc2VsZWN0LnRhYnMtc2VsZWN0LC5jYXBpYmFyYS5jLXB1cnBsZSBzZWxlY3QudGFicy1zZWxlY3R7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDE1NiwzOSwxNzYsLjcpIWltcG9ydGFudDtib3JkZXItY29sb3I6IzljMjdiMCFpbXBvcnRhbnR9LmNhcGliYXJhLmMtcHVycGxlLmRhcmstdGhlbWUgLnRpbWUsLmNhcGliYXJhLmMtcHVycGxlIC50aW1le2JvcmRlci1jb2xvcjpyZ2JhKDE1NiwzOSwxNzYsLjYpfS5jYXBpYmFyYS5jLXB1cnBsZS5kYXJrLXRoZW1lIC50aW1lIC5zeW1ib2wsLmNhcGliYXJhLmMtcHVycGxlIC50aW1lIC5zeW1ib2x7Y29sb3I6IzljMjdiMH0uY2FwaWJhcmEuYy1wdXJwbGUuZGFyay10aGVtZSAudGltZSBpbnB1dDphY3RpdmUsLmNhcGliYXJhLmMtcHVycGxlLmRhcmstdGhlbWUgLnRpbWUgaW5wdXQ6Zm9jdXMsLmNhcGliYXJhLmMtcHVycGxlIC50aW1lIGlucHV0OmFjdGl2ZSwuY2FwaWJhcmEuYy1wdXJwbGUgLnRpbWUgaW5wdXQ6Zm9jdXN7Ym9yZGVyLWNvbG9yOiM5YzI3YjA7Ym94LXNoYWRvdzowIDRweCA2cHggcmdiYSgxNTYsMzksMTc2LC4yKX0uY2FwaWJhcmEuYy1wdXJwbGUuZGFyay10aGVtZSAuaW5wdXQtYm94LC5jYXBpYmFyYS5jLXB1cnBsZS5kYXJrLXRoZW1lIC5pbnB1dC1zZWN0aW9uIGlucHV0Lm5hdi1pbnB1dCwuY2FwaWJhcmEuYy1wdXJwbGUgLmlucHV0LWJveCwuY2FwaWJhcmEuYy1wdXJwbGUgLmlucHV0LXNlY3Rpb24gaW5wdXQubmF2LWlucHV0e2JvcmRlci1jb2xvcjpyZ2JhKDE1NiwzOSwxNzYsLjYpfS5jYXBpYmFyYS5jLXB1cnBsZS5kYXJrLXRoZW1lIC5pbnB1dC1zZWN0aW9uIGlucHV0Lm5hdi1pbnB1dDphY3RpdmUsLmNhcGliYXJhLmMtcHVycGxlLmRhcmstdGhlbWUgLmlucHV0LXNlY3Rpb24gaW5wdXQubmF2LWlucHV0OmZvY3VzLC5jYXBpYmFyYS5jLXB1cnBsZSAuaW5wdXQtc2VjdGlvbiBpbnB1dC5uYXYtaW5wdXQ6YWN0aXZlLC5jYXBpYmFyYS5jLXB1cnBsZSAuaW5wdXQtc2VjdGlvbiBpbnB1dC5uYXYtaW5wdXQ6Zm9jdXN7Ym9yZGVyLWNvbG9yOiM5YzI3YjA7Ym94LXNoYWRvdzowIDRweCA2cHggcmdiYSgxNTYsMzksMTc2LC4yKX0uY2FwaWJhcmEuYy1wdXJwbGUuZGFyay10aGVtZSAuaW5wdXQtc2VjdGlvbi5tc2otaW5wdXQtY29udGFpbmVyIHRleHRhcmVhLm1zaiwuY2FwaWJhcmEuYy1wdXJwbGUgLmlucHV0LXNlY3Rpb24ubXNqLWlucHV0LWNvbnRhaW5lciB0ZXh0YXJlYS5tc2p7Ym9yZGVyOjJweCBzb2xpZCAjOWMyN2IwfS5jYXBpYmFyYS5jLXB1cnBsZS5kYXJrLXRoZW1lIC5pbnB1dC1zZWN0aW9uLm1zai1pbnB1dC1jb250YWluZXIgdGV4dGFyZWEubXNqOmFjdGl2ZSwuY2FwaWJhcmEuYy1wdXJwbGUuZGFyay10aGVtZSAuaW5wdXQtc2VjdGlvbi5tc2otaW5wdXQtY29udGFpbmVyIHRleHRhcmVhLm1zajpmb2N1cywuY2FwaWJhcmEuYy1wdXJwbGUgLmlucHV0LXNlY3Rpb24ubXNqLWlucHV0LWNvbnRhaW5lciB0ZXh0YXJlYS5tc2o6YWN0aXZlLC5jYXBpYmFyYS5jLXB1cnBsZSAuaW5wdXQtc2VjdGlvbi5tc2otaW5wdXQtY29udGFpbmVyIHRleHRhcmVhLm1zajpmb2N1c3tib3gtc2hhZG93OjAgNHB4IDZweCByZ2JhKDE1NiwzOSwxNzYsLjIpfS5jYXBpYmFyYS5jLXB1cnBsZSAuYnRuLXJhaXNlZCwuY2FwaWJhcmEuYy1wdXJwbGUuZGFyay10aGVtZSAuYnRuLXJhaXNlZHtib3JkZXItY29sb3I6IzljMjdiMDtiYWNrZ3JvdW5kOnJnYmEoMTU2LDM5LDE3NiwuOCl9LmNhcGliYXJhLmMtcHVycGxlIC5idG4tb3V0bGluZSwuY2FwaWJhcmEuYy1wdXJwbGUuZGFyay10aGVtZSAuYnRuLW91dGxpbmV7Ym9yZGVyLWNvbG9yOiM5YzI3YjA7Y29sb3I6IzljMjdiMH0uY2FwaWJhcmEuYy1wdXJwbGUuZGFyay10aGVtZSAuc2VsZWN0LWNvbnRhaW5lciAuc2VsZWN0ZWQtZGF5LC5jYXBpYmFyYS5jLXB1cnBsZSAuc2VsZWN0LWNvbnRhaW5lciAuc2VsZWN0ZWQtZGF5e2JhY2tncm91bmQ6cmdiYSgxNTYsMzksMTc2LC4zKTtib3gtc2hhZG93Omluc2V0IDAgMCAxMHB4IHJnYmEoMTU2LDM5LDE3NiwuNSl9LmNhcGliYXJhIC5jLXB1cnBsZS0tYmFja2dyb3VuZHtiYWNrZ3JvdW5kOiM5YzI3YjAhaW1wb3J0YW50fS5jYXBpYmFyYSAuYy1wdXJwbGUtZC0tYmFja2dyb3VuZHtiYWNrZ3JvdW5kOiM2NDE5NzEhaW1wb3J0YW50fS5jYXBpYmFyYSAuYy1wdXJwbGUtbC0tYmFja2dyb3VuZHtiYWNrZ3JvdW5kOiNjMzRjZDchaW1wb3J0YW50fS5jYXBpYmFyYSAuYy1wdXJwbGUtLXRleHR7Y29sb3I6IzljMjdiMCFpbXBvcnRhbnR9LmNhcGliYXJhIC5jLXB1cnBsZS1kLS10ZXh0e2NvbG9yOiM2NDE5NzEhaW1wb3J0YW50fS5jYXBpYmFyYSAuYy1wdXJwbGUtbC0tdGV4dHtjb2xvcjojYzM0Y2Q3IWltcG9ydGFudH0uY2FwaWJhcmEgLmRldGFpbC1kYXkgLmxpc3QtZGV0YWlsIC5pdGVtLWRldGFpbC5jLXB1cnBsZXtiYWNrZ3JvdW5kOnJnYmEoMTU2LDM5LDE3NiwuMik7Ym9yZGVyOjFweCBzb2xpZCAjOWMyN2IwfS5jYXBpYmFyYSAuZGV0YWlsLWRheSAubGlzdC1kZXRhaWwgLml0ZW0tZGV0YWlsLmMtcHVycGxlIC5sZWZ0LWljb257YmFja2dyb3VuZDojOWMyN2IwfS5jYXBpYmFyYSAuZGV0YWlsLWRheSAubGlzdC1kZXRhaWwgLml0ZW0tZGV0YWlsLmMtcHVycGxlIC5sZWZ0LWljb24ub3V0bGluZWR7Ym9yZGVyOjFweCBzb2xpZCAjOWMyN2IwO2JveC1zaGFkb3c6aW5zZXQgMCAwIDAgMXB4IHJnYmEoMTU2LDM5LDE3NiwuNyl9LmNhcGliYXJhIC5kZXRhaWwtZGF5IC5saXN0LWRldGFpbCAuaXRlbS1kZXRhaWwuYy1wdXJwbGUgLm5hbWV7Y29sb3I6IzljMjdiMH0uY2FwaWJhcmEgLmZsb2F0LWJveC1jb250YWluZXIgLmZsb2F0LWJveCBzcGFuLmRhdGEuYy1wdXJwbGV7YmFja2dyb3VuZDpyZ2JhKDE1NiwzOSwxNzYsLjgpfS5jYXBpYmFyYSAuZmxvYXQtYm94LWNvbnRhaW5lciAuZmxvYXQtYm94IHNwYW4uZGF0YS5zaGFwZS1vdXRsaW5lZC5jLXB1cnBsZXtib3JkZXItY29sb3I6cmdiYSgxNTYsMzksMTc2LC45KTtiYWNrZ3JvdW5kOnJnYmEoMTU2LDM5LDE3NiwuMSk7Y29sb3I6IzljMjdiMH0uY2FwaWJhcmEgLmZsb2F0LWJveC1jb250YWluZXIgLmZsb2F0LWJveCBzcGFuLmRhdGEuc2hhcGUtYmFyLmMtcHVycGxle2JhY2tncm91bmQ6IzljMjdiMH0uY2FwaWJhcmEgLmZsb2F0LWJveC1jb250YWluZXIgLmZsb2F0LWJveCBzcGFuLmRhdGEuc2hhcGUtYmFyLW91dGxpbmVkLmMtcHVycGxle2JhY2tncm91bmQ6cmdiYSgxNTYsMzksMTc2LC41KX0uY2FwaWJhcmEgLmZsb2F0LWJveC1jb250YWluZXIgLmZsb2F0LWJveCAuZG90LmMtcHVycGxle2JhY2tncm91bmQ6IzljMjdiMH0uY2FwaWJhcmEgLmZsb2F0LWJveC1jb250YWluZXIgLmZsb2F0LWJveCAuZG90LmMtcHVycGxlLm91dGxpbmVke2JvcmRlcjoxcHggc29saWQgIzljMjdiMDtib3gtc2hhZG93Omluc2V0IDAgMCAwIDFweCByZ2JhKDE1NiwzOSwxNzYsLjcpfS5jYXBpYmFyYSAuaGVhZGVyLXRvcCAudGFicy1jb250YWluZXIgLnRhYjpub3QoLmRpc2FibGVkKS5jLXB1cnBsZS5hY3RpdmV7YmFja2dyb3VuZDpyZ2JhKDE1NiwzOSwxNzYsLjcpO2JvcmRlci1jb2xvcjpyZ2JhKDE1NiwzOSwxNzYsLjcpO2NvbG9yOiNmZmZ9LmNhcGliYXJhIC5oZWFkZXItdG9wIC50YWJzLWNvbnRhaW5lciAudGFiOm5vdCguZGlzYWJsZWQpLmMtcHVycGxlLmFjdGl2ZTpob3ZlcntiYWNrZ3JvdW5kOnJnYmEoMTU2LDM5LDE3NiwuOCl9LmNhcGliYXJhIC5oZWFkZXItdG9wIC50YWJzLWNvbnRhaW5lciAudGFiOm5vdCguZGlzYWJsZWQpLmMtcHVycGxlOmhvdmVye2JhY2tncm91bmQ6cmdiYSgxNTYsMzksMTc2LC4yKTtib3JkZXItY29sb3I6cmdiYSgxNTYsMzksMTc2LC45KX0uY2FwaWJhcmEgLmlucHV0LWJveCAubWluaS1pbnB1dC1zZWN0aW9uLS1pY29uLmMtcHVycGxle2JhY2tncm91bmQ6IzljMjdiMH0uY2FwaWJhcmEuYy1kZWVwLXB1cnBsZTpub3QoLmRhcmstdGhlbWUpIDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWJ7YmFja2dyb3VuZDojNmU1MjlmfS5jYXBpYmFyYS5jLWRlZXAtcHVycGxlOm5vdCguZGFyay10aGVtZSkgLmhlYWRlci10b3B7YmFja2dyb3VuZDojZGVkZWRmfS5jYXBpYmFyYS5jLWRlZXAtcHVycGxlOm5vdCguZGFyay10aGVtZSkgLmNvcm5lcntiYWNrZ3JvdW5kOiNkZWRlZGY7Ym9yZGVyLWNvbG9yOiM5ZjgwZDd9LmNhcGliYXJhLmMtZGVlcC1wdXJwbGU6bm90KC5kYXJrLXRoZW1lKSAuY29udGFpbmVyLXRsIGhlYWRlcntiYWNrZ3JvdW5kOiNkZWRlZGY7Ym9yZGVyLWJvdHRvbS1jb2xvcjojOWY4MGQ3fS5jYXBpYmFyYS5jLWRlZXAtcHVycGxlOm5vdCguZGFyay10aGVtZSkgLmNvbnRhaW5lci10bCBoZWFkZXIgLm1lcy5tZXMtcmVkdWNlZDphZnRlcntiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCg5MGRlZyx0cmFuc3BhcmVudCwjZGFjZWVmKSFpbXBvcnRhbnR9LmNhcGliYXJhLmMtZGVlcC1wdXJwbGU6bm90KC5kYXJrLXRoZW1lKSBuYXYucmlnaHR7Ym9yZGVyLWNvbG9yOiM5ZjgwZDd9LmNhcGliYXJhLmMtZGVlcC1wdXJwbGUuZGFyay10aGVtZSAuaGVhZGVyLXRvcCwuY2FwaWJhcmEuYy1kZWVwLXB1cnBsZS5kYXJrLXRoZW1lIG5hdi5yaWdodHtib3JkZXItY29sb3I6IzNiMjE2YX0uY2FwaWJhcmEuYy1kZWVwLXB1cnBsZS5kYXJrLXRoZW1lIC5jb250YWluZXItdGwgaGVhZGVyLC5jYXBpYmFyYS5jLWRlZXAtcHVycGxlLmRhcmstdGhlbWUgLmNvcm5lcntib3JkZXItYm90dG9tLWNvbG9yOiMzYjIxNmF9LmNhcGliYXJhLmMtZGVlcC1wdXJwbGUuZGFyay10aGVtZSAucHJvZ3Jlc3MtYmFyLC5jYXBpYmFyYS5jLWRlZXAtcHVycGxlIC5wcm9ncmVzcy1iYXJ7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDEwMyw1OCwxODMsLjIpIWltcG9ydGFudH0uY2FwaWJhcmEuYy1kZWVwLXB1cnBsZS5kYXJrLXRoZW1lIC5wcm9ncmVzcy1iYXI6YWZ0ZXIsLmNhcGliYXJhLmMtZGVlcC1wdXJwbGUuZGFyay10aGVtZSAucHJvZ3Jlc3MtYmFyOmJlZm9yZSwuY2FwaWJhcmEuYy1kZWVwLXB1cnBsZSAucHJvZ3Jlc3MtYmFyOmFmdGVyLC5jYXBpYmFyYS5jLWRlZXAtcHVycGxlIC5wcm9ncmVzcy1iYXI6YmVmb3Jle2JhY2tncm91bmQtY29sb3I6IzY3M2FiNyFpbXBvcnRhbnR9LmNhcGliYXJhLmMtZGVlcC1wdXJwbGUuZGFyay10aGVtZSBzZWxlY3QudGFicy1zZWxlY3QsLmNhcGliYXJhLmMtZGVlcC1wdXJwbGUgc2VsZWN0LnRhYnMtc2VsZWN0e2JhY2tncm91bmQtY29sb3I6cmdiYSgxMDMsNTgsMTgzLC43KSFpbXBvcnRhbnQ7Ym9yZGVyLWNvbG9yOiM2NzNhYjchaW1wb3J0YW50fS5jYXBpYmFyYS5jLWRlZXAtcHVycGxlLmRhcmstdGhlbWUgLnRpbWUsLmNhcGliYXJhLmMtZGVlcC1wdXJwbGUgLnRpbWV7Ym9yZGVyLWNvbG9yOnJnYmEoMTAzLDU4LDE4MywuNil9LmNhcGliYXJhLmMtZGVlcC1wdXJwbGUuZGFyay10aGVtZSAudGltZSAuc3ltYm9sLC5jYXBpYmFyYS5jLWRlZXAtcHVycGxlIC50aW1lIC5zeW1ib2x7Y29sb3I6IzY3M2FiN30uY2FwaWJhcmEuYy1kZWVwLXB1cnBsZS5kYXJrLXRoZW1lIC50aW1lIGlucHV0OmFjdGl2ZSwuY2FwaWJhcmEuYy1kZWVwLXB1cnBsZS5kYXJrLXRoZW1lIC50aW1lIGlucHV0OmZvY3VzLC5jYXBpYmFyYS5jLWRlZXAtcHVycGxlIC50aW1lIGlucHV0OmFjdGl2ZSwuY2FwaWJhcmEuYy1kZWVwLXB1cnBsZSAudGltZSBpbnB1dDpmb2N1c3tib3JkZXItY29sb3I6IzY3M2FiNztib3gtc2hhZG93OjAgNHB4IDZweCByZ2JhKDEwMyw1OCwxODMsLjIpfS5jYXBpYmFyYS5jLWRlZXAtcHVycGxlLmRhcmstdGhlbWUgLmlucHV0LWJveCwuY2FwaWJhcmEuYy1kZWVwLXB1cnBsZS5kYXJrLXRoZW1lIC5pbnB1dC1zZWN0aW9uIGlucHV0Lm5hdi1pbnB1dCwuY2FwaWJhcmEuYy1kZWVwLXB1cnBsZSAuaW5wdXQtYm94LC5jYXBpYmFyYS5jLWRlZXAtcHVycGxlIC5pbnB1dC1zZWN0aW9uIGlucHV0Lm5hdi1pbnB1dHtib3JkZXItY29sb3I6cmdiYSgxMDMsNTgsMTgzLC42KX0uY2FwaWJhcmEuYy1kZWVwLXB1cnBsZS5kYXJrLXRoZW1lIC5pbnB1dC1zZWN0aW9uIGlucHV0Lm5hdi1pbnB1dDphY3RpdmUsLmNhcGliYXJhLmMtZGVlcC1wdXJwbGUuZGFyay10aGVtZSAuaW5wdXQtc2VjdGlvbiBpbnB1dC5uYXYtaW5wdXQ6Zm9jdXMsLmNhcGliYXJhLmMtZGVlcC1wdXJwbGUgLmlucHV0LXNlY3Rpb24gaW5wdXQubmF2LWlucHV0OmFjdGl2ZSwuY2FwaWJhcmEuYy1kZWVwLXB1cnBsZSAuaW5wdXQtc2VjdGlvbiBpbnB1dC5uYXYtaW5wdXQ6Zm9jdXN7Ym9yZGVyLWNvbG9yOiM2NzNhYjc7Ym94LXNoYWRvdzowIDRweCA2cHggcmdiYSgxMDMsNTgsMTgzLC4yKX0uY2FwaWJhcmEuYy1kZWVwLXB1cnBsZS5kYXJrLXRoZW1lIC5pbnB1dC1zZWN0aW9uLm1zai1pbnB1dC1jb250YWluZXIgdGV4dGFyZWEubXNqLC5jYXBpYmFyYS5jLWRlZXAtcHVycGxlIC5pbnB1dC1zZWN0aW9uLm1zai1pbnB1dC1jb250YWluZXIgdGV4dGFyZWEubXNqe2JvcmRlcjoycHggc29saWQgIzY3M2FiN30uY2FwaWJhcmEuYy1kZWVwLXB1cnBsZS5kYXJrLXRoZW1lIC5pbnB1dC1zZWN0aW9uLm1zai1pbnB1dC1jb250YWluZXIgdGV4dGFyZWEubXNqOmFjdGl2ZSwuY2FwaWJhcmEuYy1kZWVwLXB1cnBsZS5kYXJrLXRoZW1lIC5pbnB1dC1zZWN0aW9uLm1zai1pbnB1dC1jb250YWluZXIgdGV4dGFyZWEubXNqOmZvY3VzLC5jYXBpYmFyYS5jLWRlZXAtcHVycGxlIC5pbnB1dC1zZWN0aW9uLm1zai1pbnB1dC1jb250YWluZXIgdGV4dGFyZWEubXNqOmFjdGl2ZSwuY2FwaWJhcmEuYy1kZWVwLXB1cnBsZSAuaW5wdXQtc2VjdGlvbi5tc2otaW5wdXQtY29udGFpbmVyIHRleHRhcmVhLm1zajpmb2N1c3tib3gtc2hhZG93OjAgNHB4IDZweCByZ2JhKDEwMyw1OCwxODMsLjIpfS5jYXBpYmFyYS5jLWRlZXAtcHVycGxlIC5idG4tcmFpc2VkLC5jYXBpYmFyYS5jLWRlZXAtcHVycGxlLmRhcmstdGhlbWUgLmJ0bi1yYWlzZWR7Ym9yZGVyLWNvbG9yOiM2NzNhYjc7YmFja2dyb3VuZDpyZ2JhKDEwMyw1OCwxODMsLjgpfS5jYXBpYmFyYS5jLWRlZXAtcHVycGxlIC5idG4tb3V0bGluZSwuY2FwaWJhcmEuYy1kZWVwLXB1cnBsZS5kYXJrLXRoZW1lIC5idG4tb3V0bGluZXtib3JkZXItY29sb3I6IzY3M2FiNztjb2xvcjojNjczYWI3fS5jYXBpYmFyYS5jLWRlZXAtcHVycGxlLmRhcmstdGhlbWUgLnNlbGVjdC1jb250YWluZXIgLnNlbGVjdGVkLWRheSwuY2FwaWJhcmEuYy1kZWVwLXB1cnBsZSAuc2VsZWN0LWNvbnRhaW5lciAuc2VsZWN0ZWQtZGF5e2JhY2tncm91bmQ6cmdiYSgxMDMsNTgsMTgzLC4zKTtib3gtc2hhZG93Omluc2V0IDAgMCAxMHB4IHJnYmEoMTAzLDU4LDE4MywuNSl9LmNhcGliYXJhIC5jLWRlZXAtcHVycGxlLS1iYWNrZ3JvdW5ke2JhY2tncm91bmQ6IzY3M2FiNyFpbXBvcnRhbnR9LmNhcGliYXJhIC5jLWRlZXAtcHVycGxlLWQtLWJhY2tncm91bmR7YmFja2dyb3VuZDojNDYyODdkIWltcG9ydGFudH0uY2FwaWJhcmEgLmMtZGVlcC1wdXJwbGUtbC0tYmFja2dyb3VuZHtiYWNrZ3JvdW5kOiM5MTZkZDEhaW1wb3J0YW50fS5jYXBpYmFyYSAuYy1kZWVwLXB1cnBsZS0tdGV4dHtjb2xvcjojNjczYWI3IWltcG9ydGFudH0uY2FwaWJhcmEgLmMtZGVlcC1wdXJwbGUtZC0tdGV4dHtjb2xvcjojNDYyODdkIWltcG9ydGFudH0uY2FwaWJhcmEgLmMtZGVlcC1wdXJwbGUtbC0tdGV4dHtjb2xvcjojOTE2ZGQxIWltcG9ydGFudH0uY2FwaWJhcmEgLmRldGFpbC1kYXkgLmxpc3QtZGV0YWlsIC5pdGVtLWRldGFpbC5jLWRlZXAtcHVycGxle2JhY2tncm91bmQ6cmdiYSgxMDMsNTgsMTgzLC4yKTtib3JkZXI6MXB4IHNvbGlkICM2NzNhYjd9LmNhcGliYXJhIC5kZXRhaWwtZGF5IC5saXN0LWRldGFpbCAuaXRlbS1kZXRhaWwuYy1kZWVwLXB1cnBsZSAubGVmdC1pY29ue2JhY2tncm91bmQ6IzY3M2FiN30uY2FwaWJhcmEgLmRldGFpbC1kYXkgLmxpc3QtZGV0YWlsIC5pdGVtLWRldGFpbC5jLWRlZXAtcHVycGxlIC5sZWZ0LWljb24ub3V0bGluZWR7Ym9yZGVyOjFweCBzb2xpZCAjNjczYWI3O2JveC1zaGFkb3c6aW5zZXQgMCAwIDAgMXB4IHJnYmEoMTAzLDU4LDE4MywuNyl9LmNhcGliYXJhIC5kZXRhaWwtZGF5IC5saXN0LWRldGFpbCAuaXRlbS1kZXRhaWwuYy1kZWVwLXB1cnBsZSAubmFtZXtjb2xvcjojNjczYWI3fS5jYXBpYmFyYSAuZmxvYXQtYm94LWNvbnRhaW5lciAuZmxvYXQtYm94IHNwYW4uZGF0YS5jLWRlZXAtcHVycGxle2JhY2tncm91bmQ6cmdiYSgxMDMsNTgsMTgzLC44KX0uY2FwaWJhcmEgLmZsb2F0LWJveC1jb250YWluZXIgLmZsb2F0LWJveCBzcGFuLmRhdGEuc2hhcGUtb3V0bGluZWQuYy1kZWVwLXB1cnBsZXtib3JkZXItY29sb3I6cmdiYSgxMDMsNTgsMTgzLC45KTtiYWNrZ3JvdW5kOnJnYmEoMTAzLDU4LDE4MywuMSk7Y29sb3I6IzY3M2FiN30uY2FwaWJhcmEgLmZsb2F0LWJveC1jb250YWluZXIgLmZsb2F0LWJveCBzcGFuLmRhdGEuc2hhcGUtYmFyLmMtZGVlcC1wdXJwbGV7YmFja2dyb3VuZDojNjczYWI3fS5jYXBpYmFyYSAuZmxvYXQtYm94LWNvbnRhaW5lciAuZmxvYXQtYm94IHNwYW4uZGF0YS5zaGFwZS1iYXItb3V0bGluZWQuYy1kZWVwLXB1cnBsZXtiYWNrZ3JvdW5kOnJnYmEoMTAzLDU4LDE4MywuNSl9LmNhcGliYXJhIC5mbG9hdC1ib3gtY29udGFpbmVyIC5mbG9hdC1ib3ggLmRvdC5jLWRlZXAtcHVycGxle2JhY2tncm91bmQ6IzY3M2FiN30uY2FwaWJhcmEgLmZsb2F0LWJveC1jb250YWluZXIgLmZsb2F0LWJveCAuZG90LmMtZGVlcC1wdXJwbGUub3V0bGluZWR7Ym9yZGVyOjFweCBzb2xpZCAjNjczYWI3O2JveC1zaGFkb3c6aW5zZXQgMCAwIDAgMXB4IHJnYmEoMTAzLDU4LDE4MywuNyl9LmNhcGliYXJhIC5oZWFkZXItdG9wIC50YWJzLWNvbnRhaW5lciAudGFiOm5vdCguZGlzYWJsZWQpLmMtZGVlcC1wdXJwbGUuYWN0aXZle2JhY2tncm91bmQ6cmdiYSgxMDMsNTgsMTgzLC43KTtib3JkZXItY29sb3I6cmdiYSgxMDMsNTgsMTgzLC43KTtjb2xvcjojZmZmfS5jYXBpYmFyYSAuaGVhZGVyLXRvcCAudGFicy1jb250YWluZXIgLnRhYjpub3QoLmRpc2FibGVkKS5jLWRlZXAtcHVycGxlLmFjdGl2ZTpob3ZlcntiYWNrZ3JvdW5kOnJnYmEoMTAzLDU4LDE4MywuOCl9LmNhcGliYXJhIC5oZWFkZXItdG9wIC50YWJzLWNvbnRhaW5lciAudGFiOm5vdCguZGlzYWJsZWQpLmMtZGVlcC1wdXJwbGU6aG92ZXJ7YmFja2dyb3VuZDpyZ2JhKDEwMyw1OCwxODMsLjIpO2JvcmRlci1jb2xvcjpyZ2JhKDEwMyw1OCwxODMsLjkpfS5jYXBpYmFyYSAuaW5wdXQtYm94IC5taW5pLWlucHV0LXNlY3Rpb24tLWljb24uYy1kZWVwLXB1cnBsZXtiYWNrZ3JvdW5kOiM2NzNhYjd9LmNhcGliYXJhLmMtaW5kaWdvOm5vdCguZGFyay10aGVtZSkgOjotd2Via2l0LXNjcm9sbGJhci10aHVtYntiYWNrZ3JvdW5kOiM1NzYyOWR9LmNhcGliYXJhLmMtaW5kaWdvOm5vdCguZGFyay10aGVtZSkgLmhlYWRlci10b3B7YmFja2dyb3VuZDojZTBlMGUwfS5jYXBpYmFyYS5jLWluZGlnbzpub3QoLmRhcmstdGhlbWUpIC5jb3JuZXJ7YmFja2dyb3VuZDojZTBlMGUwO2JvcmRlci1jb2xvcjojODU5MWQ1fS5jYXBpYmFyYS5jLWluZGlnbzpub3QoLmRhcmstdGhlbWUpIC5jb250YWluZXItdGwgaGVhZGVye2JhY2tncm91bmQ6I2UwZTBlMDtib3JkZXItYm90dG9tLWNvbG9yOiM4NTkxZDV9LmNhcGliYXJhLmMtaW5kaWdvOm5vdCguZGFyay10aGVtZSkgLmNvbnRhaW5lci10bCBoZWFkZXIgLm1lcy5tZXMtcmVkdWNlZDphZnRlcntiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCg5MGRlZyx0cmFuc3BhcmVudCwjZDFkNmVmKSFpbXBvcnRhbnR9LmNhcGliYXJhLmMtaW5kaWdvOm5vdCguZGFyay10aGVtZSkgbmF2LnJpZ2h0e2JvcmRlci1jb2xvcjojODU5MWQ1fS5jYXBpYmFyYS5jLWluZGlnby5kYXJrLXRoZW1lIC5oZWFkZXItdG9wLC5jYXBpYmFyYS5jLWluZGlnby5kYXJrLXRoZW1lIG5hdi5yaWdodHtib3JkZXItY29sb3I6IzI1MmY2OX0uY2FwaWJhcmEuYy1pbmRpZ28uZGFyay10aGVtZSAuY29udGFpbmVyLXRsIGhlYWRlciwuY2FwaWJhcmEuYy1pbmRpZ28uZGFyay10aGVtZSAuY29ybmVye2JvcmRlci1ib3R0b20tY29sb3I6IzI1MmY2OX0uY2FwaWJhcmEuYy1pbmRpZ28uZGFyay10aGVtZSAucHJvZ3Jlc3MtYmFyLC5jYXBpYmFyYS5jLWluZGlnbyAucHJvZ3Jlc3MtYmFye2JhY2tncm91bmQtY29sb3I6cmdiYSg2Myw4MSwxODEsLjIpIWltcG9ydGFudH0uY2FwaWJhcmEuYy1pbmRpZ28uZGFyay10aGVtZSAucHJvZ3Jlc3MtYmFyOmFmdGVyLC5jYXBpYmFyYS5jLWluZGlnby5kYXJrLXRoZW1lIC5wcm9ncmVzcy1iYXI6YmVmb3JlLC5jYXBpYmFyYS5jLWluZGlnbyAucHJvZ3Jlc3MtYmFyOmFmdGVyLC5jYXBpYmFyYS5jLWluZGlnbyAucHJvZ3Jlc3MtYmFyOmJlZm9yZXtiYWNrZ3JvdW5kLWNvbG9yOiMzZjUxYjUhaW1wb3J0YW50fS5jYXBpYmFyYS5jLWluZGlnby5kYXJrLXRoZW1lIHNlbGVjdC50YWJzLXNlbGVjdCwuY2FwaWJhcmEuYy1pbmRpZ28gc2VsZWN0LnRhYnMtc2VsZWN0e2JhY2tncm91bmQtY29sb3I6cmdiYSg2Myw4MSwxODEsLjcpIWltcG9ydGFudDtib3JkZXItY29sb3I6IzNmNTFiNSFpbXBvcnRhbnR9LmNhcGliYXJhLmMtaW5kaWdvLmRhcmstdGhlbWUgLnRpbWUsLmNhcGliYXJhLmMtaW5kaWdvIC50aW1le2JvcmRlci1jb2xvcjpyZ2JhKDYzLDgxLDE4MSwuNil9LmNhcGliYXJhLmMtaW5kaWdvLmRhcmstdGhlbWUgLnRpbWUgLnN5bWJvbCwuY2FwaWJhcmEuYy1pbmRpZ28gLnRpbWUgLnN5bWJvbHtjb2xvcjojM2Y1MWI1fS5jYXBpYmFyYS5jLWluZGlnby5kYXJrLXRoZW1lIC50aW1lIGlucHV0OmFjdGl2ZSwuY2FwaWJhcmEuYy1pbmRpZ28uZGFyay10aGVtZSAudGltZSBpbnB1dDpmb2N1cywuY2FwaWJhcmEuYy1pbmRpZ28gLnRpbWUgaW5wdXQ6YWN0aXZlLC5jYXBpYmFyYS5jLWluZGlnbyAudGltZSBpbnB1dDpmb2N1c3tib3JkZXItY29sb3I6IzNmNTFiNTtib3gtc2hhZG93OjAgNHB4IDZweCByZ2JhKDYzLDgxLDE4MSwuMil9LmNhcGliYXJhLmMtaW5kaWdvLmRhcmstdGhlbWUgLmlucHV0LWJveCwuY2FwaWJhcmEuYy1pbmRpZ28uZGFyay10aGVtZSAuaW5wdXQtc2VjdGlvbiBpbnB1dC5uYXYtaW5wdXQsLmNhcGliYXJhLmMtaW5kaWdvIC5pbnB1dC1ib3gsLmNhcGliYXJhLmMtaW5kaWdvIC5pbnB1dC1zZWN0aW9uIGlucHV0Lm5hdi1pbnB1dHtib3JkZXItY29sb3I6cmdiYSg2Myw4MSwxODEsLjYpfS5jYXBpYmFyYS5jLWluZGlnby5kYXJrLXRoZW1lIC5pbnB1dC1zZWN0aW9uIGlucHV0Lm5hdi1pbnB1dDphY3RpdmUsLmNhcGliYXJhLmMtaW5kaWdvLmRhcmstdGhlbWUgLmlucHV0LXNlY3Rpb24gaW5wdXQubmF2LWlucHV0OmZvY3VzLC5jYXBpYmFyYS5jLWluZGlnbyAuaW5wdXQtc2VjdGlvbiBpbnB1dC5uYXYtaW5wdXQ6YWN0aXZlLC5jYXBpYmFyYS5jLWluZGlnbyAuaW5wdXQtc2VjdGlvbiBpbnB1dC5uYXYtaW5wdXQ6Zm9jdXN7Ym9yZGVyLWNvbG9yOiMzZjUxYjU7Ym94LXNoYWRvdzowIDRweCA2cHggcmdiYSg2Myw4MSwxODEsLjIpfS5jYXBpYmFyYS5jLWluZGlnby5kYXJrLXRoZW1lIC5pbnB1dC1zZWN0aW9uLm1zai1pbnB1dC1jb250YWluZXIgdGV4dGFyZWEubXNqLC5jYXBpYmFyYS5jLWluZGlnbyAuaW5wdXQtc2VjdGlvbi5tc2otaW5wdXQtY29udGFpbmVyIHRleHRhcmVhLm1zantib3JkZXI6MnB4IHNvbGlkICMzZjUxYjV9LmNhcGliYXJhLmMtaW5kaWdvLmRhcmstdGhlbWUgLmlucHV0LXNlY3Rpb24ubXNqLWlucHV0LWNvbnRhaW5lciB0ZXh0YXJlYS5tc2o6YWN0aXZlLC5jYXBpYmFyYS5jLWluZGlnby5kYXJrLXRoZW1lIC5pbnB1dC1zZWN0aW9uLm1zai1pbnB1dC1jb250YWluZXIgdGV4dGFyZWEubXNqOmZvY3VzLC5jYXBpYmFyYS5jLWluZGlnbyAuaW5wdXQtc2VjdGlvbi5tc2otaW5wdXQtY29udGFpbmVyIHRleHRhcmVhLm1zajphY3RpdmUsLmNhcGliYXJhLmMtaW5kaWdvIC5pbnB1dC1zZWN0aW9uLm1zai1pbnB1dC1jb250YWluZXIgdGV4dGFyZWEubXNqOmZvY3Vze2JveC1zaGFkb3c6MCA0cHggNnB4IHJnYmEoNjMsODEsMTgxLC4yKX0uY2FwaWJhcmEuYy1pbmRpZ28gLmJ0bi1yYWlzZWQsLmNhcGliYXJhLmMtaW5kaWdvLmRhcmstdGhlbWUgLmJ0bi1yYWlzZWR7Ym9yZGVyLWNvbG9yOiMzZjUxYjU7YmFja2dyb3VuZDpyZ2JhKDYzLDgxLDE4MSwuOCl9LmNhcGliYXJhLmMtaW5kaWdvIC5idG4tb3V0bGluZSwuY2FwaWJhcmEuYy1pbmRpZ28uZGFyay10aGVtZSAuYnRuLW91dGxpbmV7Ym9yZGVyLWNvbG9yOiMzZjUxYjU7Y29sb3I6IzNmNTFiNX0uY2FwaWJhcmEuYy1pbmRpZ28uZGFyay10aGVtZSAuc2VsZWN0LWNvbnRhaW5lciAuc2VsZWN0ZWQtZGF5LC5jYXBpYmFyYS5jLWluZGlnbyAuc2VsZWN0LWNvbnRhaW5lciAuc2VsZWN0ZWQtZGF5e2JhY2tncm91bmQ6cmdiYSg2Myw4MSwxODEsLjMpO2JveC1zaGFkb3c6aW5zZXQgMCAwIDEwcHggcmdiYSg2Myw4MSwxODEsLjUpfS5jYXBpYmFyYSAuYy1pbmRpZ28tLWJhY2tncm91bmR7YmFja2dyb3VuZDojM2Y1MWI1IWltcG9ydGFudH0uY2FwaWJhcmEgLmMtaW5kaWdvLWQtLWJhY2tncm91bmR7YmFja2dyb3VuZDojMmIzODdjIWltcG9ydGFudH0uY2FwaWJhcmEgLmMtaW5kaWdvLWwtLWJhY2tncm91bmR7YmFja2dyb3VuZDojNzI4MGNlIWltcG9ydGFudH0uY2FwaWJhcmEgLmMtaW5kaWdvLS10ZXh0e2NvbG9yOiMzZjUxYjUhaW1wb3J0YW50fS5jYXBpYmFyYSAuYy1pbmRpZ28tZC0tdGV4dHtjb2xvcjojMmIzODdjIWltcG9ydGFudH0uY2FwaWJhcmEgLmMtaW5kaWdvLWwtLXRleHR7Y29sb3I6IzcyODBjZSFpbXBvcnRhbnR9LmNhcGliYXJhIC5kZXRhaWwtZGF5IC5saXN0LWRldGFpbCAuaXRlbS1kZXRhaWwuYy1pbmRpZ297YmFja2dyb3VuZDpyZ2JhKDYzLDgxLDE4MSwuMik7Ym9yZGVyOjFweCBzb2xpZCAjM2Y1MWI1fS5jYXBpYmFyYSAuZGV0YWlsLWRheSAubGlzdC1kZXRhaWwgLml0ZW0tZGV0YWlsLmMtaW5kaWdvIC5sZWZ0LWljb257YmFja2dyb3VuZDojM2Y1MWI1fS5jYXBpYmFyYSAuZGV0YWlsLWRheSAubGlzdC1kZXRhaWwgLml0ZW0tZGV0YWlsLmMtaW5kaWdvIC5sZWZ0LWljb24ub3V0bGluZWR7Ym9yZGVyOjFweCBzb2xpZCAjM2Y1MWI1O2JveC1zaGFkb3c6aW5zZXQgMCAwIDAgMXB4IHJnYmEoNjMsODEsMTgxLC43KX0uY2FwaWJhcmEgLmRldGFpbC1kYXkgLmxpc3QtZGV0YWlsIC5pdGVtLWRldGFpbC5jLWluZGlnbyAubmFtZXtjb2xvcjojM2Y1MWI1fS5jYXBpYmFyYSAuZmxvYXQtYm94LWNvbnRhaW5lciAuZmxvYXQtYm94IHNwYW4uZGF0YS5jLWluZGlnb3tiYWNrZ3JvdW5kOnJnYmEoNjMsODEsMTgxLC44KX0uY2FwaWJhcmEgLmZsb2F0LWJveC1jb250YWluZXIgLmZsb2F0LWJveCBzcGFuLmRhdGEuc2hhcGUtb3V0bGluZWQuYy1pbmRpZ297Ym9yZGVyLWNvbG9yOnJnYmEoNjMsODEsMTgxLC45KTtiYWNrZ3JvdW5kOnJnYmEoNjMsODEsMTgxLC4xKTtjb2xvcjojM2Y1MWI1fS5jYXBpYmFyYSAuZmxvYXQtYm94LWNvbnRhaW5lciAuZmxvYXQtYm94IHNwYW4uZGF0YS5zaGFwZS1iYXIuYy1pbmRpZ297YmFja2dyb3VuZDojM2Y1MWI1fS5jYXBpYmFyYSAuZmxvYXQtYm94LWNvbnRhaW5lciAuZmxvYXQtYm94IHNwYW4uZGF0YS5zaGFwZS1iYXItb3V0bGluZWQuYy1pbmRpZ297YmFja2dyb3VuZDpyZ2JhKDYzLDgxLDE4MSwuNSl9LmNhcGliYXJhIC5mbG9hdC1ib3gtY29udGFpbmVyIC5mbG9hdC1ib3ggLmRvdC5jLWluZGlnb3tiYWNrZ3JvdW5kOiMzZjUxYjV9LmNhcGliYXJhIC5mbG9hdC1ib3gtY29udGFpbmVyIC5mbG9hdC1ib3ggLmRvdC5jLWluZGlnby5vdXRsaW5lZHtib3JkZXI6MXB4IHNvbGlkICMzZjUxYjU7Ym94LXNoYWRvdzppbnNldCAwIDAgMCAxcHggcmdiYSg2Myw4MSwxODEsLjcpfS5jYXBpYmFyYSAuaGVhZGVyLXRvcCAudGFicy1jb250YWluZXIgLnRhYjpub3QoLmRpc2FibGVkKS5jLWluZGlnby5hY3RpdmV7YmFja2dyb3VuZDpyZ2JhKDYzLDgxLDE4MSwuNyk7Ym9yZGVyLWNvbG9yOnJnYmEoNjMsODEsMTgxLC43KTtjb2xvcjojZmZmfS5jYXBpYmFyYSAuaGVhZGVyLXRvcCAudGFicy1jb250YWluZXIgLnRhYjpub3QoLmRpc2FibGVkKS5jLWluZGlnby5hY3RpdmU6aG92ZXJ7YmFja2dyb3VuZDpyZ2JhKDYzLDgxLDE4MSwuOCl9LmNhcGliYXJhIC5oZWFkZXItdG9wIC50YWJzLWNvbnRhaW5lciAudGFiOm5vdCguZGlzYWJsZWQpLmMtaW5kaWdvOmhvdmVye2JhY2tncm91bmQ6cmdiYSg2Myw4MSwxODEsLjIpO2JvcmRlci1jb2xvcjpyZ2JhKDYzLDgxLDE4MSwuOSl9LmNhcGliYXJhIC5pbnB1dC1ib3ggLm1pbmktaW5wdXQtc2VjdGlvbi0taWNvbi5jLWluZGlnb3tiYWNrZ3JvdW5kOiMzZjUxYjV9LmNhcGliYXJhLmMtYmx1ZTpub3QoLmRhcmstdGhlbWUpIDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWJ7YmFja2dyb3VuZDojMzE3NmJifS5jYXBpYmFyYS5jLWJsdWU6bm90KC5kYXJrLXRoZW1lKSAuaGVhZGVyLXRvcHtiYWNrZ3JvdW5kOiNkMWRjZTZ9LmNhcGliYXJhLmMtYmx1ZTpub3QoLmRhcmstdGhlbWUpIC5jb3JuZXJ7YmFja2dyb3VuZDojZDFkY2U2O2JvcmRlci1jb2xvcjojNjRhOWVkfS5jYXBpYmFyYS5jLWJsdWU6bm90KC5kYXJrLXRoZW1lKSAuY29udGFpbmVyLXRsIGhlYWRlcntiYWNrZ3JvdW5kOiNkMWRjZTY7Ym9yZGVyLWJvdHRvbS1jb2xvcjojNjRhOWVkfS5jYXBpYmFyYS5jLWJsdWU6bm90KC5kYXJrLXRoZW1lKSAuY29udGFpbmVyLXRsIGhlYWRlciAubWVzLm1lcy1yZWR1Y2VkOmFmdGVye2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDkwZGVnLHRyYW5zcGFyZW50LCNjMGRjZjcpIWltcG9ydGFudH0uY2FwaWJhcmEuYy1ibHVlOm5vdCguZGFyay10aGVtZSkgbmF2LnJpZ2h0e2JvcmRlci1jb2xvcjojNjRhOWVkfS5jYXBpYmFyYS5jLWJsdWUuZGFyay10aGVtZSAuaGVhZGVyLXRvcCwuY2FwaWJhcmEuYy1ibHVlLmRhcmstdGhlbWUgbmF2LnJpZ2h0e2JvcmRlci1jb2xvcjojMGU0Mzc3fS5jYXBpYmFyYS5jLWJsdWUuZGFyay10aGVtZSAuY29udGFpbmVyLXRsIGhlYWRlciwuY2FwaWJhcmEuYy1ibHVlLmRhcmstdGhlbWUgLmNvcm5lcntib3JkZXItYm90dG9tLWNvbG9yOiMwZTQzNzd9LmNhcGliYXJhLmMtYmx1ZS5kYXJrLXRoZW1lIC5wcm9ncmVzcy1iYXIsLmNhcGliYXJhLmMtYmx1ZSAucHJvZ3Jlc3MtYmFye2JhY2tncm91bmQtY29sb3I6cmdiYSgyNSwxMTgsMjEwLC4yKSFpbXBvcnRhbnR9LmNhcGliYXJhLmMtYmx1ZS5kYXJrLXRoZW1lIC5wcm9ncmVzcy1iYXI6YWZ0ZXIsLmNhcGliYXJhLmMtYmx1ZS5kYXJrLXRoZW1lIC5wcm9ncmVzcy1iYXI6YmVmb3JlLC5jYXBpYmFyYS5jLWJsdWUgLnByb2dyZXNzLWJhcjphZnRlciwuY2FwaWJhcmEuYy1ibHVlIC5wcm9ncmVzcy1iYXI6YmVmb3Jle2JhY2tncm91bmQtY29sb3I6IzE5NzZkMiFpbXBvcnRhbnR9LmNhcGliYXJhLmMtYmx1ZS5kYXJrLXRoZW1lIHNlbGVjdC50YWJzLXNlbGVjdCwuY2FwaWJhcmEuYy1ibHVlIHNlbGVjdC50YWJzLXNlbGVjdHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjUsMTE4LDIxMCwuNykhaW1wb3J0YW50O2JvcmRlci1jb2xvcjojMTk3NmQyIWltcG9ydGFudH0uY2FwaWJhcmEuYy1ibHVlLmRhcmstdGhlbWUgLnRpbWUsLmNhcGliYXJhLmMtYmx1ZSAudGltZXtib3JkZXItY29sb3I6cmdiYSgyNSwxMTgsMjEwLC42KX0uY2FwaWJhcmEuYy1ibHVlLmRhcmstdGhlbWUgLnRpbWUgLnN5bWJvbCwuY2FwaWJhcmEuYy1ibHVlIC50aW1lIC5zeW1ib2x7Y29sb3I6IzE5NzZkMn0uY2FwaWJhcmEuYy1ibHVlLmRhcmstdGhlbWUgLnRpbWUgaW5wdXQ6YWN0aXZlLC5jYXBpYmFyYS5jLWJsdWUuZGFyay10aGVtZSAudGltZSBpbnB1dDpmb2N1cywuY2FwaWJhcmEuYy1ibHVlIC50aW1lIGlucHV0OmFjdGl2ZSwuY2FwaWJhcmEuYy1ibHVlIC50aW1lIGlucHV0OmZvY3Vze2JvcmRlci1jb2xvcjojMTk3NmQyO2JveC1zaGFkb3c6MCA0cHggNnB4IHJnYmEoMjUsMTE4LDIxMCwuMil9LmNhcGliYXJhLmMtYmx1ZS5kYXJrLXRoZW1lIC5pbnB1dC1ib3gsLmNhcGliYXJhLmMtYmx1ZS5kYXJrLXRoZW1lIC5pbnB1dC1zZWN0aW9uIGlucHV0Lm5hdi1pbnB1dCwuY2FwaWJhcmEuYy1ibHVlIC5pbnB1dC1ib3gsLmNhcGliYXJhLmMtYmx1ZSAuaW5wdXQtc2VjdGlvbiBpbnB1dC5uYXYtaW5wdXR7Ym9yZGVyLWNvbG9yOnJnYmEoMjUsMTE4LDIxMCwuNil9LmNhcGliYXJhLmMtYmx1ZS5kYXJrLXRoZW1lIC5pbnB1dC1zZWN0aW9uIGlucHV0Lm5hdi1pbnB1dDphY3RpdmUsLmNhcGliYXJhLmMtYmx1ZS5kYXJrLXRoZW1lIC5pbnB1dC1zZWN0aW9uIGlucHV0Lm5hdi1pbnB1dDpmb2N1cywuY2FwaWJhcmEuYy1ibHVlIC5pbnB1dC1zZWN0aW9uIGlucHV0Lm5hdi1pbnB1dDphY3RpdmUsLmNhcGliYXJhLmMtYmx1ZSAuaW5wdXQtc2VjdGlvbiBpbnB1dC5uYXYtaW5wdXQ6Zm9jdXN7Ym9yZGVyLWNvbG9yOiMxOTc2ZDI7Ym94LXNoYWRvdzowIDRweCA2cHggcmdiYSgyNSwxMTgsMjEwLC4yKX0uY2FwaWJhcmEuYy1ibHVlLmRhcmstdGhlbWUgLmlucHV0LXNlY3Rpb24ubXNqLWlucHV0LWNvbnRhaW5lciB0ZXh0YXJlYS5tc2osLmNhcGliYXJhLmMtYmx1ZSAuaW5wdXQtc2VjdGlvbi5tc2otaW5wdXQtY29udGFpbmVyIHRleHRhcmVhLm1zantib3JkZXI6MnB4IHNvbGlkICMxOTc2ZDJ9LmNhcGliYXJhLmMtYmx1ZS5kYXJrLXRoZW1lIC5pbnB1dC1zZWN0aW9uLm1zai1pbnB1dC1jb250YWluZXIgdGV4dGFyZWEubXNqOmFjdGl2ZSwuY2FwaWJhcmEuYy1ibHVlLmRhcmstdGhlbWUgLmlucHV0LXNlY3Rpb24ubXNqLWlucHV0LWNvbnRhaW5lciB0ZXh0YXJlYS5tc2o6Zm9jdXMsLmNhcGliYXJhLmMtYmx1ZSAuaW5wdXQtc2VjdGlvbi5tc2otaW5wdXQtY29udGFpbmVyIHRleHRhcmVhLm1zajphY3RpdmUsLmNhcGliYXJhLmMtYmx1ZSAuaW5wdXQtc2VjdGlvbi5tc2otaW5wdXQtY29udGFpbmVyIHRleHRhcmVhLm1zajpmb2N1c3tib3gtc2hhZG93OjAgNHB4IDZweCByZ2JhKDI1LDExOCwyMTAsLjIpfS5jYXBpYmFyYS5jLWJsdWUgLmJ0bi1yYWlzZWQsLmNhcGliYXJhLmMtYmx1ZS5kYXJrLXRoZW1lIC5idG4tcmFpc2Vke2JvcmRlci1jb2xvcjojMTk3NmQyO2JhY2tncm91bmQ6cmdiYSgyNSwxMTgsMjEwLC44KX0uY2FwaWJhcmEuYy1ibHVlIC5idG4tb3V0bGluZSwuY2FwaWJhcmEuYy1ibHVlLmRhcmstdGhlbWUgLmJ0bi1vdXRsaW5le2JvcmRlci1jb2xvcjojMTk3NmQyO2NvbG9yOiMxOTc2ZDJ9LmNhcGliYXJhLmMtYmx1ZS5kYXJrLXRoZW1lIC5zZWxlY3QtY29udGFpbmVyIC5zZWxlY3RlZC1kYXksLmNhcGliYXJhLmMtYmx1ZSAuc2VsZWN0LWNvbnRhaW5lciAuc2VsZWN0ZWQtZGF5e2JhY2tncm91bmQ6cmdiYSgyNSwxMTgsMjEwLC4zKTtib3gtc2hhZG93Omluc2V0IDAgMCAxMHB4IHJnYmEoMjUsMTE4LDIxMCwuNSl9LmNhcGliYXJhIC5jLWJsdWUtLWJhY2tncm91bmR7YmFja2dyb3VuZDojMTk3NmQyIWltcG9ydGFudH0uY2FwaWJhcmEgLmMtYmx1ZS1kLS1iYWNrZ3JvdW5ke2JhY2tncm91bmQ6IzExNTA4ZSFpbXBvcnRhbnR9LmNhcGliYXJhIC5jLWJsdWUtbC0tYmFja2dyb3VuZHtiYWNrZ3JvdW5kOiM0ZTljZWEhaW1wb3J0YW50fS5jYXBpYmFyYSAuYy1ibHVlLS10ZXh0e2NvbG9yOiMxOTc2ZDIhaW1wb3J0YW50fS5jYXBpYmFyYSAuYy1ibHVlLWQtLXRleHR7Y29sb3I6IzExNTA4ZSFpbXBvcnRhbnR9LmNhcGliYXJhIC5jLWJsdWUtbC0tdGV4dHtjb2xvcjojNGU5Y2VhIWltcG9ydGFudH0uY2FwaWJhcmEgLmRldGFpbC1kYXkgLmxpc3QtZGV0YWlsIC5pdGVtLWRldGFpbC5jLWJsdWV7YmFja2dyb3VuZDpyZ2JhKDI1LDExOCwyMTAsLjIpO2JvcmRlcjoxcHggc29saWQgIzE5NzZkMn0uY2FwaWJhcmEgLmRldGFpbC1kYXkgLmxpc3QtZGV0YWlsIC5pdGVtLWRldGFpbC5jLWJsdWUgLmxlZnQtaWNvbntiYWNrZ3JvdW5kOiMxOTc2ZDJ9LmNhcGliYXJhIC5kZXRhaWwtZGF5IC5saXN0LWRldGFpbCAuaXRlbS1kZXRhaWwuYy1ibHVlIC5sZWZ0LWljb24ub3V0bGluZWR7Ym9yZGVyOjFweCBzb2xpZCAjMTk3NmQyO2JveC1zaGFkb3c6aW5zZXQgMCAwIDAgMXB4IHJnYmEoMjUsMTE4LDIxMCwuNyl9LmNhcGliYXJhIC5kZXRhaWwtZGF5IC5saXN0LWRldGFpbCAuaXRlbS1kZXRhaWwuYy1ibHVlIC5uYW1le2NvbG9yOiMxOTc2ZDJ9LmNhcGliYXJhIC5mbG9hdC1ib3gtY29udGFpbmVyIC5mbG9hdC1ib3ggc3Bhbi5kYXRhLmMtYmx1ZXtiYWNrZ3JvdW5kOnJnYmEoMjUsMTE4LDIxMCwuOCl9LmNhcGliYXJhIC5mbG9hdC1ib3gtY29udGFpbmVyIC5mbG9hdC1ib3ggc3Bhbi5kYXRhLnNoYXBlLW91dGxpbmVkLmMtYmx1ZXtib3JkZXItY29sb3I6cmdiYSgyNSwxMTgsMjEwLC45KTtiYWNrZ3JvdW5kOnJnYmEoMjUsMTE4LDIxMCwuMSk7Y29sb3I6IzE5NzZkMn0uY2FwaWJhcmEgLmZsb2F0LWJveC1jb250YWluZXIgLmZsb2F0LWJveCBzcGFuLmRhdGEuc2hhcGUtYmFyLmMtYmx1ZXtiYWNrZ3JvdW5kOiMxOTc2ZDJ9LmNhcGliYXJhIC5mbG9hdC1ib3gtY29udGFpbmVyIC5mbG9hdC1ib3ggc3Bhbi5kYXRhLnNoYXBlLWJhci1vdXRsaW5lZC5jLWJsdWV7YmFja2dyb3VuZDpyZ2JhKDI1LDExOCwyMTAsLjUpfS5jYXBpYmFyYSAuZmxvYXQtYm94LWNvbnRhaW5lciAuZmxvYXQtYm94IC5kb3QuYy1ibHVle2JhY2tncm91bmQ6IzE5NzZkMn0uY2FwaWJhcmEgLmZsb2F0LWJveC1jb250YWluZXIgLmZsb2F0LWJveCAuZG90LmMtYmx1ZS5vdXRsaW5lZHtib3JkZXI6MXB4IHNvbGlkICMxOTc2ZDI7Ym94LXNoYWRvdzppbnNldCAwIDAgMCAxcHggcmdiYSgyNSwxMTgsMjEwLC43KX0uY2FwaWJhcmEgLmhlYWRlci10b3AgLnRhYnMtY29udGFpbmVyIC50YWI6bm90KC5kaXNhYmxlZCkuYy1ibHVlLmFjdGl2ZXtiYWNrZ3JvdW5kOnJnYmEoMjUsMTE4LDIxMCwuNyk7Ym9yZGVyLWNvbG9yOnJnYmEoMjUsMTE4LDIxMCwuNyk7Y29sb3I6I2ZmZn0uY2FwaWJhcmEgLmhlYWRlci10b3AgLnRhYnMtY29udGFpbmVyIC50YWI6bm90KC5kaXNhYmxlZCkuYy1ibHVlLmFjdGl2ZTpob3ZlcntiYWNrZ3JvdW5kOnJnYmEoMjUsMTE4LDIxMCwuOCl9LmNhcGliYXJhIC5oZWFkZXItdG9wIC50YWJzLWNvbnRhaW5lciAudGFiOm5vdCguZGlzYWJsZWQpLmMtYmx1ZTpob3ZlcntiYWNrZ3JvdW5kOnJnYmEoMjUsMTE4LDIxMCwuMik7Ym9yZGVyLWNvbG9yOnJnYmEoMjUsMTE4LDIxMCwuOSl9LmNhcGliYXJhIC5pbnB1dC1ib3ggLm1pbmktaW5wdXQtc2VjdGlvbi0taWNvbi5jLWJsdWV7YmFja2dyb3VuZDojMTk3NmQyfS5jYXBpYmFyYS5jLWxpZ2h0LWJsdWU6bm90KC5kYXJrLXRoZW1lKSA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1ie2JhY2tncm91bmQ6IzFjYTBkYn0uY2FwaWJhcmEuYy1saWdodC1ibHVlOm5vdCguZGFyay10aGVtZSkgLmhlYWRlci10b3B7YmFja2dyb3VuZDojZDNlN2YwfS5jYXBpYmFyYS5jLWxpZ2h0LWJsdWU6bm90KC5kYXJrLXRoZW1lKSAuY29ybmVye2JhY2tncm91bmQ6I2QzZTdmMDtib3JkZXItY29sb3I6IzYwY2NmZH0uY2FwaWJhcmEuYy1saWdodC1ibHVlOm5vdCguZGFyay10aGVtZSkgLmNvbnRhaW5lci10bCBoZWFkZXJ7YmFja2dyb3VuZDojZDNlN2YwO2JvcmRlci1ib3R0b20tY29sb3I6IzYwY2NmZH0uY2FwaWJhcmEuYy1saWdodC1ibHVlOm5vdCguZGFyay10aGVtZSkgLmNvbnRhaW5lci10bCBoZWFkZXIgLm1lcy5tZXMtcmVkdWNlZDphZnRlcntiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCg5MGRlZyx0cmFuc3BhcmVudCwjYzVlY2ZlKSFpbXBvcnRhbnR9LmNhcGliYXJhLmMtbGlnaHQtYmx1ZTpub3QoLmRhcmstdGhlbWUpIG5hdi5yaWdodHtib3JkZXItY29sb3I6IzYwY2NmZH0uY2FwaWJhcmEuYy1saWdodC1ibHVlLmRhcmstdGhlbWUgLmhlYWRlci10b3AsLmNhcGliYXJhLmMtbGlnaHQtYmx1ZS5kYXJrLXRoZW1lIG5hdi5yaWdodHtib3JkZXItY29sb3I6IzAyNjM4Zn0uY2FwaWJhcmEuYy1saWdodC1ibHVlLmRhcmstdGhlbWUgLmNvbnRhaW5lci10bCBoZWFkZXIsLmNhcGliYXJhLmMtbGlnaHQtYmx1ZS5kYXJrLXRoZW1lIC5jb3JuZXJ7Ym9yZGVyLWJvdHRvbS1jb2xvcjojMDI2MzhmfS5jYXBpYmFyYS5jLWxpZ2h0LWJsdWUuZGFyay10aGVtZSAucHJvZ3Jlc3MtYmFyLC5jYXBpYmFyYS5jLWxpZ2h0LWJsdWUgLnByb2dyZXNzLWJhcntiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMywxNjksMjQ0LC4yKSFpbXBvcnRhbnR9LmNhcGliYXJhLmMtbGlnaHQtYmx1ZS5kYXJrLXRoZW1lIC5wcm9ncmVzcy1iYXI6YWZ0ZXIsLmNhcGliYXJhLmMtbGlnaHQtYmx1ZS5kYXJrLXRoZW1lIC5wcm9ncmVzcy1iYXI6YmVmb3JlLC5jYXBpYmFyYS5jLWxpZ2h0LWJsdWUgLnByb2dyZXNzLWJhcjphZnRlciwuY2FwaWJhcmEuYy1saWdodC1ibHVlIC5wcm9ncmVzcy1iYXI6YmVmb3Jle2JhY2tncm91bmQtY29sb3I6IzAzYTlmNCFpbXBvcnRhbnR9LmNhcGliYXJhLmMtbGlnaHQtYmx1ZS5kYXJrLXRoZW1lIHNlbGVjdC50YWJzLXNlbGVjdCwuY2FwaWJhcmEuYy1saWdodC1ibHVlIHNlbGVjdC50YWJzLXNlbGVjdHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMywxNjksMjQ0LC43KSFpbXBvcnRhbnQ7Ym9yZGVyLWNvbG9yOiMwM2E5ZjQhaW1wb3J0YW50fS5jYXBpYmFyYS5jLWxpZ2h0LWJsdWUuZGFyay10aGVtZSAudGltZSwuY2FwaWJhcmEuYy1saWdodC1ibHVlIC50aW1le2JvcmRlci1jb2xvcjpyZ2JhKDMsMTY5LDI0NCwuNil9LmNhcGliYXJhLmMtbGlnaHQtYmx1ZS5kYXJrLXRoZW1lIC50aW1lIC5zeW1ib2wsLmNhcGliYXJhLmMtbGlnaHQtYmx1ZSAudGltZSAuc3ltYm9se2NvbG9yOiMwM2E5ZjR9LmNhcGliYXJhLmMtbGlnaHQtYmx1ZS5kYXJrLXRoZW1lIC50aW1lIGlucHV0OmFjdGl2ZSwuY2FwaWJhcmEuYy1saWdodC1ibHVlLmRhcmstdGhlbWUgLnRpbWUgaW5wdXQ6Zm9jdXMsLmNhcGliYXJhLmMtbGlnaHQtYmx1ZSAudGltZSBpbnB1dDphY3RpdmUsLmNhcGliYXJhLmMtbGlnaHQtYmx1ZSAudGltZSBpbnB1dDpmb2N1c3tib3JkZXItY29sb3I6IzAzYTlmNDtib3gtc2hhZG93OjAgNHB4IDZweCByZ2JhKDMsMTY5LDI0NCwuMil9LmNhcGliYXJhLmMtbGlnaHQtYmx1ZS5kYXJrLXRoZW1lIC5pbnB1dC1ib3gsLmNhcGliYXJhLmMtbGlnaHQtYmx1ZS5kYXJrLXRoZW1lIC5pbnB1dC1zZWN0aW9uIGlucHV0Lm5hdi1pbnB1dCwuY2FwaWJhcmEuYy1saWdodC1ibHVlIC5pbnB1dC1ib3gsLmNhcGliYXJhLmMtbGlnaHQtYmx1ZSAuaW5wdXQtc2VjdGlvbiBpbnB1dC5uYXYtaW5wdXR7Ym9yZGVyLWNvbG9yOnJnYmEoMywxNjksMjQ0LC42KX0uY2FwaWJhcmEuYy1saWdodC1ibHVlLmRhcmstdGhlbWUgLmlucHV0LXNlY3Rpb24gaW5wdXQubmF2LWlucHV0OmFjdGl2ZSwuY2FwaWJhcmEuYy1saWdodC1ibHVlLmRhcmstdGhlbWUgLmlucHV0LXNlY3Rpb24gaW5wdXQubmF2LWlucHV0OmZvY3VzLC5jYXBpYmFyYS5jLWxpZ2h0LWJsdWUgLmlucHV0LXNlY3Rpb24gaW5wdXQubmF2LWlucHV0OmFjdGl2ZSwuY2FwaWJhcmEuYy1saWdodC1ibHVlIC5pbnB1dC1zZWN0aW9uIGlucHV0Lm5hdi1pbnB1dDpmb2N1c3tib3JkZXItY29sb3I6IzAzYTlmNDtib3gtc2hhZG93OjAgNHB4IDZweCByZ2JhKDMsMTY5LDI0NCwuMil9LmNhcGliYXJhLmMtbGlnaHQtYmx1ZS5kYXJrLXRoZW1lIC5pbnB1dC1zZWN0aW9uLm1zai1pbnB1dC1jb250YWluZXIgdGV4dGFyZWEubXNqLC5jYXBpYmFyYS5jLWxpZ2h0LWJsdWUgLmlucHV0LXNlY3Rpb24ubXNqLWlucHV0LWNvbnRhaW5lciB0ZXh0YXJlYS5tc2p7Ym9yZGVyOjJweCBzb2xpZCAjMDNhOWY0fS5jYXBpYmFyYS5jLWxpZ2h0LWJsdWUuZGFyay10aGVtZSAuaW5wdXQtc2VjdGlvbi5tc2otaW5wdXQtY29udGFpbmVyIHRleHRhcmVhLm1zajphY3RpdmUsLmNhcGliYXJhLmMtbGlnaHQtYmx1ZS5kYXJrLXRoZW1lIC5pbnB1dC1zZWN0aW9uLm1zai1pbnB1dC1jb250YWluZXIgdGV4dGFyZWEubXNqOmZvY3VzLC5jYXBpYmFyYS5jLWxpZ2h0LWJsdWUgLmlucHV0LXNlY3Rpb24ubXNqLWlucHV0LWNvbnRhaW5lciB0ZXh0YXJlYS5tc2o6YWN0aXZlLC5jYXBpYmFyYS5jLWxpZ2h0LWJsdWUgLmlucHV0LXNlY3Rpb24ubXNqLWlucHV0LWNvbnRhaW5lciB0ZXh0YXJlYS5tc2o6Zm9jdXN7Ym94LXNoYWRvdzowIDRweCA2cHggcmdiYSgzLDE2OSwyNDQsLjIpfS5jYXBpYmFyYS5jLWxpZ2h0LWJsdWUgLmJ0bi1yYWlzZWQsLmNhcGliYXJhLmMtbGlnaHQtYmx1ZS5kYXJrLXRoZW1lIC5idG4tcmFpc2Vke2JvcmRlci1jb2xvcjojMDNhOWY0O2JhY2tncm91bmQ6cmdiYSgzLDE2OSwyNDQsLjgpfS5jYXBpYmFyYS5jLWxpZ2h0LWJsdWUgLmJ0bi1vdXRsaW5lLC5jYXBpYmFyYS5jLWxpZ2h0LWJsdWUuZGFyay10aGVtZSAuYnRuLW91dGxpbmV7Ym9yZGVyLWNvbG9yOiMwM2E5ZjQ7Y29sb3I6IzAzYTlmNH0uY2FwaWJhcmEuYy1saWdodC1ibHVlLmRhcmstdGhlbWUgLnNlbGVjdC1jb250YWluZXIgLnNlbGVjdGVkLWRheSwuY2FwaWJhcmEuYy1saWdodC1ibHVlIC5zZWxlY3QtY29udGFpbmVyIC5zZWxlY3RlZC1kYXl7YmFja2dyb3VuZDpyZ2JhKDMsMTY5LDI0NCwuMyk7Ym94LXNoYWRvdzppbnNldCAwIDAgMTBweCByZ2JhKDMsMTY5LDI0NCwuNSl9LmNhcGliYXJhIC5jLWxpZ2h0LWJsdWUtLWJhY2tncm91bmR7YmFja2dyb3VuZDojMDNhOWY0IWltcG9ydGFudH0uY2FwaWJhcmEgLmMtbGlnaHQtYmx1ZS1kLS1iYWNrZ3JvdW5ke2JhY2tncm91bmQ6IzAyNzVhOCFpbXBvcnRhbnR9LmNhcGliYXJhIC5jLWxpZ2h0LWJsdWUtbC0tYmFja2dyb3VuZHtiYWNrZ3JvdW5kOiM0N2M0ZmQhaW1wb3J0YW50fS5jYXBpYmFyYSAuYy1saWdodC1ibHVlLS10ZXh0e2NvbG9yOiMwM2E5ZjQhaW1wb3J0YW50fS5jYXBpYmFyYSAuYy1saWdodC1ibHVlLWQtLXRleHR7Y29sb3I6IzAyNzVhOCFpbXBvcnRhbnR9LmNhcGliYXJhIC5jLWxpZ2h0LWJsdWUtbC0tdGV4dHtjb2xvcjojNDdjNGZkIWltcG9ydGFudH0uY2FwaWJhcmEgLmRldGFpbC1kYXkgLmxpc3QtZGV0YWlsIC5pdGVtLWRldGFpbC5jLWxpZ2h0LWJsdWV7YmFja2dyb3VuZDpyZ2JhKDMsMTY5LDI0NCwuMik7Ym9yZGVyOjFweCBzb2xpZCAjMDNhOWY0fS5jYXBpYmFyYSAuZGV0YWlsLWRheSAubGlzdC1kZXRhaWwgLml0ZW0tZGV0YWlsLmMtbGlnaHQtYmx1ZSAubGVmdC1pY29ue2JhY2tncm91bmQ6IzAzYTlmNH0uY2FwaWJhcmEgLmRldGFpbC1kYXkgLmxpc3QtZGV0YWlsIC5pdGVtLWRldGFpbC5jLWxpZ2h0LWJsdWUgLmxlZnQtaWNvbi5vdXRsaW5lZHtib3JkZXI6MXB4IHNvbGlkICMwM2E5ZjQ7Ym94LXNoYWRvdzppbnNldCAwIDAgMCAxcHggcmdiYSgzLDE2OSwyNDQsLjcpfS5jYXBpYmFyYSAuZGV0YWlsLWRheSAubGlzdC1kZXRhaWwgLml0ZW0tZGV0YWlsLmMtbGlnaHQtYmx1ZSAubmFtZXtjb2xvcjojMDNhOWY0fS5jYXBpYmFyYSAuZmxvYXQtYm94LWNvbnRhaW5lciAuZmxvYXQtYm94IHNwYW4uZGF0YS5jLWxpZ2h0LWJsdWV7YmFja2dyb3VuZDpyZ2JhKDMsMTY5LDI0NCwuOCl9LmNhcGliYXJhIC5mbG9hdC1ib3gtY29udGFpbmVyIC5mbG9hdC1ib3ggc3Bhbi5kYXRhLnNoYXBlLW91dGxpbmVkLmMtbGlnaHQtYmx1ZXtib3JkZXItY29sb3I6cmdiYSgzLDE2OSwyNDQsLjkpO2JhY2tncm91bmQ6cmdiYSgzLDE2OSwyNDQsLjEpO2NvbG9yOiMwM2E5ZjR9LmNhcGliYXJhIC5mbG9hdC1ib3gtY29udGFpbmVyIC5mbG9hdC1ib3ggc3Bhbi5kYXRhLnNoYXBlLWJhci5jLWxpZ2h0LWJsdWV7YmFja2dyb3VuZDojMDNhOWY0fS5jYXBpYmFyYSAuZmxvYXQtYm94LWNvbnRhaW5lciAuZmxvYXQtYm94IHNwYW4uZGF0YS5zaGFwZS1iYXItb3V0bGluZWQuYy1saWdodC1ibHVle2JhY2tncm91bmQ6cmdiYSgzLDE2OSwyNDQsLjUpfS5jYXBpYmFyYSAuZmxvYXQtYm94LWNvbnRhaW5lciAuZmxvYXQtYm94IC5kb3QuYy1saWdodC1ibHVle2JhY2tncm91bmQ6IzAzYTlmNH0uY2FwaWJhcmEgLmZsb2F0LWJveC1jb250YWluZXIgLmZsb2F0LWJveCAuZG90LmMtbGlnaHQtYmx1ZS5vdXRsaW5lZHtib3JkZXI6MXB4IHNvbGlkICMwM2E5ZjQ7Ym94LXNoYWRvdzppbnNldCAwIDAgMCAxcHggcmdiYSgzLDE2OSwyNDQsLjcpfS5jYXBpYmFyYSAuaGVhZGVyLXRvcCAudGFicy1jb250YWluZXIgLnRhYjpub3QoLmRpc2FibGVkKS5jLWxpZ2h0LWJsdWUuYWN0aXZle2JhY2tncm91bmQ6cmdiYSgzLDE2OSwyNDQsLjcpO2JvcmRlci1jb2xvcjpyZ2JhKDMsMTY5LDI0NCwuNyk7Y29sb3I6I2ZmZn0uY2FwaWJhcmEgLmhlYWRlci10b3AgLnRhYnMtY29udGFpbmVyIC50YWI6bm90KC5kaXNhYmxlZCkuYy1saWdodC1ibHVlLmFjdGl2ZTpob3ZlcntiYWNrZ3JvdW5kOnJnYmEoMywxNjksMjQ0LC44KX0uY2FwaWJhcmEgLmhlYWRlci10b3AgLnRhYnMtY29udGFpbmVyIC50YWI6bm90KC5kaXNhYmxlZCkuYy1saWdodC1ibHVlOmhvdmVye2JhY2tncm91bmQ6cmdiYSgzLDE2OSwyNDQsLjIpO2JvcmRlci1jb2xvcjpyZ2JhKDMsMTY5LDI0NCwuOSl9LmNhcGliYXJhIC5pbnB1dC1ib3ggLm1pbmktaW5wdXQtc2VjdGlvbi0taWNvbi5jLWxpZ2h0LWJsdWV7YmFja2dyb3VuZDojMDNhOWY0fS5jYXBpYmFyYS5jLWN5YW46bm90KC5kYXJrLXRoZW1lKSA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1ie2JhY2tncm91bmQ6IzE1YWNiZn0uY2FwaWJhcmEuYy1jeWFuOm5vdCguZGFyay10aGVtZSkgLmhlYWRlci10b3B7YmFja2dyb3VuZDojYjllMmU4fS5jYXBpYmFyYS5jLWN5YW46bm90KC5kYXJrLXRoZW1lKSAuY29ybmVye2JhY2tncm91bmQ6I2I5ZTJlODtib3JkZXItY29sb3I6IzNiZTlmZn0uY2FwaWJhcmEuYy1jeWFuOm5vdCguZGFyay10aGVtZSkgLmNvbnRhaW5lci10bCBoZWFkZXJ7YmFja2dyb3VuZDojYjllMmU4O2JvcmRlci1ib3R0b20tY29sb3I6IzNiZTlmZn0uY2FwaWJhcmEuYy1jeWFuOm5vdCguZGFyay10aGVtZSkgLmNvbnRhaW5lci10bCBoZWFkZXIgLm1lcy5tZXMtcmVkdWNlZDphZnRlcntiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCg5MGRlZyx0cmFuc3BhcmVudCwjYTFmNGZmKSFpbXBvcnRhbnR9LmNhcGliYXJhLmMtY3lhbjpub3QoLmRhcmstdGhlbWUpIG5hdi5yaWdodHtib3JkZXItY29sb3I6IzNiZTlmZn0uY2FwaWJhcmEuYy1jeWFuLmRhcmstdGhlbWUgLmhlYWRlci10b3AsLmNhcGliYXJhLmMtY3lhbi5kYXJrLXRoZW1lIG5hdi5yaWdodHtib3JkZXItY29sb3I6IzAwNjI2ZX0uY2FwaWJhcmEuYy1jeWFuLmRhcmstdGhlbWUgLmNvbnRhaW5lci10bCBoZWFkZXIsLmNhcGliYXJhLmMtY3lhbi5kYXJrLXRoZW1lIC5jb3JuZXJ7Ym9yZGVyLWJvdHRvbS1jb2xvcjojMDA2MjZlfS5jYXBpYmFyYS5jLWN5YW4uZGFyay10aGVtZSAucHJvZ3Jlc3MtYmFyLC5jYXBpYmFyYS5jLWN5YW4gLnByb2dyZXNzLWJhcntiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwxODgsMjEyLC4yKSFpbXBvcnRhbnR9LmNhcGliYXJhLmMtY3lhbi5kYXJrLXRoZW1lIC5wcm9ncmVzcy1iYXI6YWZ0ZXIsLmNhcGliYXJhLmMtY3lhbi5kYXJrLXRoZW1lIC5wcm9ncmVzcy1iYXI6YmVmb3JlLC5jYXBpYmFyYS5jLWN5YW4gLnByb2dyZXNzLWJhcjphZnRlciwuY2FwaWJhcmEuYy1jeWFuIC5wcm9ncmVzcy1iYXI6YmVmb3Jle2JhY2tncm91bmQtY29sb3I6IzAwYmNkNCFpbXBvcnRhbnR9LmNhcGliYXJhLmMtY3lhbi5kYXJrLXRoZW1lIHNlbGVjdC50YWJzLXNlbGVjdCwuY2FwaWJhcmEuYy1jeWFuIHNlbGVjdC50YWJzLXNlbGVjdHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwxODgsMjEyLC43KSFpbXBvcnRhbnQ7Ym9yZGVyLWNvbG9yOiMwMGJjZDQhaW1wb3J0YW50fS5jYXBpYmFyYS5jLWN5YW4uZGFyay10aGVtZSAudGltZSwuY2FwaWJhcmEuYy1jeWFuIC50aW1le2JvcmRlci1jb2xvcjpyZ2JhKDAsMTg4LDIxMiwuNil9LmNhcGliYXJhLmMtY3lhbi5kYXJrLXRoZW1lIC50aW1lIC5zeW1ib2wsLmNhcGliYXJhLmMtY3lhbiAudGltZSAuc3ltYm9se2NvbG9yOiMwMGJjZDR9LmNhcGliYXJhLmMtY3lhbi5kYXJrLXRoZW1lIC50aW1lIGlucHV0OmFjdGl2ZSwuY2FwaWJhcmEuYy1jeWFuLmRhcmstdGhlbWUgLnRpbWUgaW5wdXQ6Zm9jdXMsLmNhcGliYXJhLmMtY3lhbiAudGltZSBpbnB1dDphY3RpdmUsLmNhcGliYXJhLmMtY3lhbiAudGltZSBpbnB1dDpmb2N1c3tib3JkZXItY29sb3I6IzAwYmNkNDtib3gtc2hhZG93OjAgNHB4IDZweCByZ2JhKDAsMTg4LDIxMiwuMil9LmNhcGliYXJhLmMtY3lhbi5kYXJrLXRoZW1lIC5pbnB1dC1ib3gsLmNhcGliYXJhLmMtY3lhbi5kYXJrLXRoZW1lIC5pbnB1dC1zZWN0aW9uIGlucHV0Lm5hdi1pbnB1dCwuY2FwaWJhcmEuYy1jeWFuIC5pbnB1dC1ib3gsLmNhcGliYXJhLmMtY3lhbiAuaW5wdXQtc2VjdGlvbiBpbnB1dC5uYXYtaW5wdXR7Ym9yZGVyLWNvbG9yOnJnYmEoMCwxODgsMjEyLC42KX0uY2FwaWJhcmEuYy1jeWFuLmRhcmstdGhlbWUgLmlucHV0LXNlY3Rpb24gaW5wdXQubmF2LWlucHV0OmFjdGl2ZSwuY2FwaWJhcmEuYy1jeWFuLmRhcmstdGhlbWUgLmlucHV0LXNlY3Rpb24gaW5wdXQubmF2LWlucHV0OmZvY3VzLC5jYXBpYmFyYS5jLWN5YW4gLmlucHV0LXNlY3Rpb24gaW5wdXQubmF2LWlucHV0OmFjdGl2ZSwuY2FwaWJhcmEuYy1jeWFuIC5pbnB1dC1zZWN0aW9uIGlucHV0Lm5hdi1pbnB1dDpmb2N1c3tib3JkZXItY29sb3I6IzAwYmNkNDtib3gtc2hhZG93OjAgNHB4IDZweCByZ2JhKDAsMTg4LDIxMiwuMil9LmNhcGliYXJhLmMtY3lhbi5kYXJrLXRoZW1lIC5pbnB1dC1zZWN0aW9uLm1zai1pbnB1dC1jb250YWluZXIgdGV4dGFyZWEubXNqLC5jYXBpYmFyYS5jLWN5YW4gLmlucHV0LXNlY3Rpb24ubXNqLWlucHV0LWNvbnRhaW5lciB0ZXh0YXJlYS5tc2p7Ym9yZGVyOjJweCBzb2xpZCAjMDBiY2Q0fS5jYXBpYmFyYS5jLWN5YW4uZGFyay10aGVtZSAuaW5wdXQtc2VjdGlvbi5tc2otaW5wdXQtY29udGFpbmVyIHRleHRhcmVhLm1zajphY3RpdmUsLmNhcGliYXJhLmMtY3lhbi5kYXJrLXRoZW1lIC5pbnB1dC1zZWN0aW9uLm1zai1pbnB1dC1jb250YWluZXIgdGV4dGFyZWEubXNqOmZvY3VzLC5jYXBpYmFyYS5jLWN5YW4gLmlucHV0LXNlY3Rpb24ubXNqLWlucHV0LWNvbnRhaW5lciB0ZXh0YXJlYS5tc2o6YWN0aXZlLC5jYXBpYmFyYS5jLWN5YW4gLmlucHV0LXNlY3Rpb24ubXNqLWlucHV0LWNvbnRhaW5lciB0ZXh0YXJlYS5tc2o6Zm9jdXN7Ym94LXNoYWRvdzowIDRweCA2cHggcmdiYSgwLDE4OCwyMTIsLjIpfS5jYXBpYmFyYS5jLWN5YW4gLmJ0bi1yYWlzZWQsLmNhcGliYXJhLmMtY3lhbi5kYXJrLXRoZW1lIC5idG4tcmFpc2Vke2JvcmRlci1jb2xvcjojMDBiY2Q0O2JhY2tncm91bmQ6cmdiYSgwLDE4OCwyMTIsLjgpfS5jYXBpYmFyYS5jLWN5YW4gLmJ0bi1vdXRsaW5lLC5jYXBpYmFyYS5jLWN5YW4uZGFyay10aGVtZSAuYnRuLW91dGxpbmV7Ym9yZGVyLWNvbG9yOiMwMGJjZDQ7Y29sb3I6IzAwYmNkNH0uY2FwaWJhcmEuYy1jeWFuLmRhcmstdGhlbWUgLnNlbGVjdC1jb250YWluZXIgLnNlbGVjdGVkLWRheSwuY2FwaWJhcmEuYy1jeWFuIC5zZWxlY3QtY29udGFpbmVyIC5zZWxlY3RlZC1kYXl7YmFja2dyb3VuZDpyZ2JhKDAsMTg4LDIxMiwuMyk7Ym94LXNoYWRvdzppbnNldCAwIDAgMTBweCByZ2JhKDAsMTg4LDIxMiwuNSl9LmNhcGliYXJhIC5jLWN5YW4tLWJhY2tncm91bmR7YmFja2dyb3VuZDojMDBiY2Q0IWltcG9ydGFudH0uY2FwaWJhcmEgLmMtY3lhbi1kLS1iYWNrZ3JvdW5ke2JhY2tncm91bmQ6IzAwNzg4OCFpbXBvcnRhbnR9LmNhcGliYXJhIC5jLWN5YW4tbC0tYmFja2dyb3VuZHtiYWNrZ3JvdW5kOiMyMmU2ZmYhaW1wb3J0YW50fS5jYXBpYmFyYSAuYy1jeWFuLS10ZXh0e2NvbG9yOiMwMGJjZDQhaW1wb3J0YW50fS5jYXBpYmFyYSAuYy1jeWFuLWQtLXRleHR7Y29sb3I6IzAwNzg4OCFpbXBvcnRhbnR9LmNhcGliYXJhIC5jLWN5YW4tbC0tdGV4dHtjb2xvcjojMjJlNmZmIWltcG9ydGFudH0uY2FwaWJhcmEgLmRldGFpbC1kYXkgLmxpc3QtZGV0YWlsIC5pdGVtLWRldGFpbC5jLWN5YW57YmFja2dyb3VuZDpyZ2JhKDAsMTg4LDIxMiwuMik7Ym9yZGVyOjFweCBzb2xpZCAjMDBiY2Q0fS5jYXBpYmFyYSAuZGV0YWlsLWRheSAubGlzdC1kZXRhaWwgLml0ZW0tZGV0YWlsLmMtY3lhbiAubGVmdC1pY29ue2JhY2tncm91bmQ6IzAwYmNkNH0uY2FwaWJhcmEgLmRldGFpbC1kYXkgLmxpc3QtZGV0YWlsIC5pdGVtLWRldGFpbC5jLWN5YW4gLmxlZnQtaWNvbi5vdXRsaW5lZHtib3JkZXI6MXB4IHNvbGlkICMwMGJjZDQ7Ym94LXNoYWRvdzppbnNldCAwIDAgMCAxcHggcmdiYSgwLDE4OCwyMTIsLjcpfS5jYXBpYmFyYSAuZGV0YWlsLWRheSAubGlzdC1kZXRhaWwgLml0ZW0tZGV0YWlsLmMtY3lhbiAubmFtZXtjb2xvcjojMDBiY2Q0fS5jYXBpYmFyYSAuZmxvYXQtYm94LWNvbnRhaW5lciAuZmxvYXQtYm94IHNwYW4uZGF0YS5jLWN5YW57YmFja2dyb3VuZDpyZ2JhKDAsMTg4LDIxMiwuOCl9LmNhcGliYXJhIC5mbG9hdC1ib3gtY29udGFpbmVyIC5mbG9hdC1ib3ggc3Bhbi5kYXRhLnNoYXBlLW91dGxpbmVkLmMtY3lhbntib3JkZXItY29sb3I6cmdiYSgwLDE4OCwyMTIsLjkpO2JhY2tncm91bmQ6cmdiYSgwLDE4OCwyMTIsLjEpO2NvbG9yOiMwMGJjZDR9LmNhcGliYXJhIC5mbG9hdC1ib3gtY29udGFpbmVyIC5mbG9hdC1ib3ggc3Bhbi5kYXRhLnNoYXBlLWJhci5jLWN5YW57YmFja2dyb3VuZDojMDBiY2Q0fS5jYXBpYmFyYSAuZmxvYXQtYm94LWNvbnRhaW5lciAuZmxvYXQtYm94IHNwYW4uZGF0YS5zaGFwZS1iYXItb3V0bGluZWQuYy1jeWFue2JhY2tncm91bmQ6cmdiYSgwLDE4OCwyMTIsLjUpfS5jYXBpYmFyYSAuZmxvYXQtYm94LWNvbnRhaW5lciAuZmxvYXQtYm94IC5kb3QuYy1jeWFue2JhY2tncm91bmQ6IzAwYmNkNH0uY2FwaWJhcmEgLmZsb2F0LWJveC1jb250YWluZXIgLmZsb2F0LWJveCAuZG90LmMtY3lhbi5vdXRsaW5lZHtib3JkZXI6MXB4IHNvbGlkICMwMGJjZDQ7Ym94LXNoYWRvdzppbnNldCAwIDAgMCAxcHggcmdiYSgwLDE4OCwyMTIsLjcpfS5jYXBpYmFyYSAuaGVhZGVyLXRvcCAudGFicy1jb250YWluZXIgLnRhYjpub3QoLmRpc2FibGVkKS5jLWN5YW4uYWN0aXZle2JhY2tncm91bmQ6cmdiYSgwLDE4OCwyMTIsLjcpO2JvcmRlci1jb2xvcjpyZ2JhKDAsMTg4LDIxMiwuNyk7Y29sb3I6I2ZmZn0uY2FwaWJhcmEgLmhlYWRlci10b3AgLnRhYnMtY29udGFpbmVyIC50YWI6bm90KC5kaXNhYmxlZCkuYy1jeWFuLmFjdGl2ZTpob3ZlcntiYWNrZ3JvdW5kOnJnYmEoMCwxODgsMjEyLC44KX0uY2FwaWJhcmEgLmhlYWRlci10b3AgLnRhYnMtY29udGFpbmVyIC50YWI6bm90KC5kaXNhYmxlZCkuYy1jeWFuOmhvdmVye2JhY2tncm91bmQ6cmdiYSgwLDE4OCwyMTIsLjIpO2JvcmRlci1jb2xvcjpyZ2JhKDAsMTg4LDIxMiwuOSl9LmNhcGliYXJhIC5pbnB1dC1ib3ggLm1pbmktaW5wdXQtc2VjdGlvbi0taWNvbi5jLWN5YW57YmFja2dyb3VuZDojMDBiY2Q0fS5jYXBpYmFyYS5jLXRlYWw6bm90KC5kYXJrLXRoZW1lKSA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1ie2JhY2tncm91bmQ6IzBmODc3Y30uY2FwaWJhcmEuYy10ZWFsOm5vdCguZGFyay10aGVtZSkgLmhlYWRlci10b3B7YmFja2dyb3VuZDojOGFkOGQxfS5jYXBpYmFyYS5jLXRlYWw6bm90KC5kYXJrLXRoZW1lKSAuY29ybmVye2JhY2tncm91bmQ6IzhhZDhkMTtib3JkZXItY29sb3I6IzAwZmNlNH0uY2FwaWJhcmEuYy10ZWFsOm5vdCguZGFyay10aGVtZSkgLmNvbnRhaW5lci10bCBoZWFkZXJ7YmFja2dyb3VuZDojOGFkOGQxO2JvcmRlci1ib3R0b20tY29sb3I6IzAwZmNlNH0uY2FwaWJhcmEuYy10ZWFsOm5vdCguZGFyay10aGVtZSkgLmNvbnRhaW5lci10bCBoZWFkZXIgLm1lcy5tZXMtcmVkdWNlZDphZnRlcntiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCg5MGRlZyx0cmFuc3BhcmVudCwjNjNmZmYwKSFpbXBvcnRhbnR9LmNhcGliYXJhLmMtdGVhbDpub3QoLmRhcmstdGhlbWUpIG5hdi5yaWdodHtib3JkZXItY29sb3I6IzAwZmNlNH0uY2FwaWJhcmEuYy10ZWFsLmRhcmstdGhlbWUgLmhlYWRlci10b3AsLmNhcGliYXJhLmMtdGVhbC5kYXJrLXRoZW1lIG5hdi5yaWdodHtib3JkZXItY29sb3I6IzAwMzAyY30uY2FwaWJhcmEuYy10ZWFsLmRhcmstdGhlbWUgLmNvbnRhaW5lci10bCBoZWFkZXIsLmNhcGliYXJhLmMtdGVhbC5kYXJrLXRoZW1lIC5jb3JuZXJ7Ym9yZGVyLWJvdHRvbS1jb2xvcjojMDAzMDJjfS5jYXBpYmFyYS5jLXRlYWwuZGFyay10aGVtZSAucHJvZ3Jlc3MtYmFyLC5jYXBpYmFyYS5jLXRlYWwgLnByb2dyZXNzLWJhcntiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwxNTAsMTM2LC4yKSFpbXBvcnRhbnR9LmNhcGliYXJhLmMtdGVhbC5kYXJrLXRoZW1lIC5wcm9ncmVzcy1iYXI6YWZ0ZXIsLmNhcGliYXJhLmMtdGVhbC5kYXJrLXRoZW1lIC5wcm9ncmVzcy1iYXI6YmVmb3JlLC5jYXBpYmFyYS5jLXRlYWwgLnByb2dyZXNzLWJhcjphZnRlciwuY2FwaWJhcmEuYy10ZWFsIC5wcm9ncmVzcy1iYXI6YmVmb3Jle2JhY2tncm91bmQtY29sb3I6IzAwOTY4OCFpbXBvcnRhbnR9LmNhcGliYXJhLmMtdGVhbC5kYXJrLXRoZW1lIHNlbGVjdC50YWJzLXNlbGVjdCwuY2FwaWJhcmEuYy10ZWFsIHNlbGVjdC50YWJzLXNlbGVjdHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwxNTAsMTM2LC43KSFpbXBvcnRhbnQ7Ym9yZGVyLWNvbG9yOiMwMDk2ODghaW1wb3J0YW50fS5jYXBpYmFyYS5jLXRlYWwuZGFyay10aGVtZSAudGltZSwuY2FwaWJhcmEuYy10ZWFsIC50aW1le2JvcmRlci1jb2xvcjpyZ2JhKDAsMTUwLDEzNiwuNil9LmNhcGliYXJhLmMtdGVhbC5kYXJrLXRoZW1lIC50aW1lIC5zeW1ib2wsLmNhcGliYXJhLmMtdGVhbCAudGltZSAuc3ltYm9se2NvbG9yOiMwMDk2ODh9LmNhcGliYXJhLmMtdGVhbC5kYXJrLXRoZW1lIC50aW1lIGlucHV0OmFjdGl2ZSwuY2FwaWJhcmEuYy10ZWFsLmRhcmstdGhlbWUgLnRpbWUgaW5wdXQ6Zm9jdXMsLmNhcGliYXJhLmMtdGVhbCAudGltZSBpbnB1dDphY3RpdmUsLmNhcGliYXJhLmMtdGVhbCAudGltZSBpbnB1dDpmb2N1c3tib3JkZXItY29sb3I6IzAwOTY4ODtib3gtc2hhZG93OjAgNHB4IDZweCByZ2JhKDAsMTUwLDEzNiwuMil9LmNhcGliYXJhLmMtdGVhbC5kYXJrLXRoZW1lIC5pbnB1dC1ib3gsLmNhcGliYXJhLmMtdGVhbC5kYXJrLXRoZW1lIC5pbnB1dC1zZWN0aW9uIGlucHV0Lm5hdi1pbnB1dCwuY2FwaWJhcmEuYy10ZWFsIC5pbnB1dC1ib3gsLmNhcGliYXJhLmMtdGVhbCAuaW5wdXQtc2VjdGlvbiBpbnB1dC5uYXYtaW5wdXR7Ym9yZGVyLWNvbG9yOnJnYmEoMCwxNTAsMTM2LC42KX0uY2FwaWJhcmEuYy10ZWFsLmRhcmstdGhlbWUgLmlucHV0LXNlY3Rpb24gaW5wdXQubmF2LWlucHV0OmFjdGl2ZSwuY2FwaWJhcmEuYy10ZWFsLmRhcmstdGhlbWUgLmlucHV0LXNlY3Rpb24gaW5wdXQubmF2LWlucHV0OmZvY3VzLC5jYXBpYmFyYS5jLXRlYWwgLmlucHV0LXNlY3Rpb24gaW5wdXQubmF2LWlucHV0OmFjdGl2ZSwuY2FwaWJhcmEuYy10ZWFsIC5pbnB1dC1zZWN0aW9uIGlucHV0Lm5hdi1pbnB1dDpmb2N1c3tib3JkZXItY29sb3I6IzAwOTY4ODtib3gtc2hhZG93OjAgNHB4IDZweCByZ2JhKDAsMTUwLDEzNiwuMil9LmNhcGliYXJhLmMtdGVhbC5kYXJrLXRoZW1lIC5pbnB1dC1zZWN0aW9uLm1zai1pbnB1dC1jb250YWluZXIgdGV4dGFyZWEubXNqLC5jYXBpYmFyYS5jLXRlYWwgLmlucHV0LXNlY3Rpb24ubXNqLWlucHV0LWNvbnRhaW5lciB0ZXh0YXJlYS5tc2p7Ym9yZGVyOjJweCBzb2xpZCAjMDA5Njg4fS5jYXBpYmFyYS5jLXRlYWwuZGFyay10aGVtZSAuaW5wdXQtc2VjdGlvbi5tc2otaW5wdXQtY29udGFpbmVyIHRleHRhcmVhLm1zajphY3RpdmUsLmNhcGliYXJhLmMtdGVhbC5kYXJrLXRoZW1lIC5pbnB1dC1zZWN0aW9uLm1zai1pbnB1dC1jb250YWluZXIgdGV4dGFyZWEubXNqOmZvY3VzLC5jYXBpYmFyYS5jLXRlYWwgLmlucHV0LXNlY3Rpb24ubXNqLWlucHV0LWNvbnRhaW5lciB0ZXh0YXJlYS5tc2o6YWN0aXZlLC5jYXBpYmFyYS5jLXRlYWwgLmlucHV0LXNlY3Rpb24ubXNqLWlucHV0LWNvbnRhaW5lciB0ZXh0YXJlYS5tc2o6Zm9jdXN7Ym94LXNoYWRvdzowIDRweCA2cHggcmdiYSgwLDE1MCwxMzYsLjIpfS5jYXBpYmFyYS5jLXRlYWwgLmJ0bi1yYWlzZWQsLmNhcGliYXJhLmMtdGVhbC5kYXJrLXRoZW1lIC5idG4tcmFpc2Vke2JvcmRlci1jb2xvcjojMDA5Njg4O2JhY2tncm91bmQ6cmdiYSgwLDE1MCwxMzYsLjgpfS5jYXBpYmFyYS5jLXRlYWwgLmJ0bi1vdXRsaW5lLC5jYXBpYmFyYS5jLXRlYWwuZGFyay10aGVtZSAuYnRuLW91dGxpbmV7Ym9yZGVyLWNvbG9yOiMwMDk2ODg7Y29sb3I6IzAwOTY4OH0uY2FwaWJhcmEuYy10ZWFsLmRhcmstdGhlbWUgLnNlbGVjdC1jb250YWluZXIgLnNlbGVjdGVkLWRheSwuY2FwaWJhcmEuYy10ZWFsIC5zZWxlY3QtY29udGFpbmVyIC5zZWxlY3RlZC1kYXl7YmFja2dyb3VuZDpyZ2JhKDAsMTUwLDEzNiwuMyk7Ym94LXNoYWRvdzppbnNldCAwIDAgMTBweCByZ2JhKDAsMTUwLDEzNiwuNSl9LmNhcGliYXJhIC5jLXRlYWwtLWJhY2tncm91bmR7YmFja2dyb3VuZDojMDA5Njg4IWltcG9ydGFudH0uY2FwaWJhcmEgLmMtdGVhbC1kLS1iYWNrZ3JvdW5ke2JhY2tncm91bmQ6IzAwNGE0MyFpbXBvcnRhbnR9LmNhcGliYXJhIC5jLXRlYWwtbC0tYmFja2dyb3VuZHtiYWNrZ3JvdW5kOiMwMGUzY2QhaW1wb3J0YW50fS5jYXBpYmFyYSAuYy10ZWFsLS10ZXh0e2NvbG9yOiMwMDk2ODghaW1wb3J0YW50fS5jYXBpYmFyYSAuYy10ZWFsLWQtLXRleHR7Y29sb3I6IzAwNGE0MyFpbXBvcnRhbnR9LmNhcGliYXJhIC5jLXRlYWwtbC0tdGV4dHtjb2xvcjojMDBlM2NkIWltcG9ydGFudH0uY2FwaWJhcmEgLmRldGFpbC1kYXkgLmxpc3QtZGV0YWlsIC5pdGVtLWRldGFpbC5jLXRlYWx7YmFja2dyb3VuZDpyZ2JhKDAsMTUwLDEzNiwuMik7Ym9yZGVyOjFweCBzb2xpZCAjMDA5Njg4fS5jYXBpYmFyYSAuZGV0YWlsLWRheSAubGlzdC1kZXRhaWwgLml0ZW0tZGV0YWlsLmMtdGVhbCAubGVmdC1pY29ue2JhY2tncm91bmQ6IzAwOTY4OH0uY2FwaWJhcmEgLmRldGFpbC1kYXkgLmxpc3QtZGV0YWlsIC5pdGVtLWRldGFpbC5jLXRlYWwgLmxlZnQtaWNvbi5vdXRsaW5lZHtib3JkZXI6MXB4IHNvbGlkICMwMDk2ODg7Ym94LXNoYWRvdzppbnNldCAwIDAgMCAxcHggcmdiYSgwLDE1MCwxMzYsLjcpfS5jYXBpYmFyYSAuZGV0YWlsLWRheSAubGlzdC1kZXRhaWwgLml0ZW0tZGV0YWlsLmMtdGVhbCAubmFtZXtjb2xvcjojMDA5Njg4fS5jYXBpYmFyYSAuZmxvYXQtYm94LWNvbnRhaW5lciAuZmxvYXQtYm94IHNwYW4uZGF0YS5jLXRlYWx7YmFja2dyb3VuZDpyZ2JhKDAsMTUwLDEzNiwuOCl9LmNhcGliYXJhIC5mbG9hdC1ib3gtY29udGFpbmVyIC5mbG9hdC1ib3ggc3Bhbi5kYXRhLnNoYXBlLW91dGxpbmVkLmMtdGVhbHtib3JkZXItY29sb3I6cmdiYSgwLDE1MCwxMzYsLjkpO2JhY2tncm91bmQ6cmdiYSgwLDE1MCwxMzYsLjEpO2NvbG9yOiMwMDk2ODh9LmNhcGliYXJhIC5mbG9hdC1ib3gtY29udGFpbmVyIC5mbG9hdC1ib3ggc3Bhbi5kYXRhLnNoYXBlLWJhci5jLXRlYWx7YmFja2dyb3VuZDojMDA5Njg4fS5jYXBpYmFyYSAuZmxvYXQtYm94LWNvbnRhaW5lciAuZmxvYXQtYm94IHNwYW4uZGF0YS5zaGFwZS1iYXItb3V0bGluZWQuYy10ZWFse2JhY2tncm91bmQ6cmdiYSgwLDE1MCwxMzYsLjUpfS5jYXBpYmFyYSAuZmxvYXQtYm94LWNvbnRhaW5lciAuZmxvYXQtYm94IC5kb3QuYy10ZWFse2JhY2tncm91bmQ6IzAwOTY4OH0uY2FwaWJhcmEgLmZsb2F0LWJveC1jb250YWluZXIgLmZsb2F0LWJveCAuZG90LmMtdGVhbC5vdXRsaW5lZHtib3JkZXI6MXB4IHNvbGlkICMwMDk2ODg7Ym94LXNoYWRvdzppbnNldCAwIDAgMCAxcHggcmdiYSgwLDE1MCwxMzYsLjcpfS5jYXBpYmFyYSAuaGVhZGVyLXRvcCAudGFicy1jb250YWluZXIgLnRhYjpub3QoLmRpc2FibGVkKS5jLXRlYWwuYWN0aXZle2JhY2tncm91bmQ6cmdiYSgwLDE1MCwxMzYsLjcpO2JvcmRlci1jb2xvcjpyZ2JhKDAsMTUwLDEzNiwuNyk7Y29sb3I6I2ZmZn0uY2FwaWJhcmEgLmhlYWRlci10b3AgLnRhYnMtY29udGFpbmVyIC50YWI6bm90KC5kaXNhYmxlZCkuYy10ZWFsLmFjdGl2ZTpob3ZlcntiYWNrZ3JvdW5kOnJnYmEoMCwxNTAsMTM2LC44KX0uY2FwaWJhcmEgLmhlYWRlci10b3AgLnRhYnMtY29udGFpbmVyIC50YWI6bm90KC5kaXNhYmxlZCkuYy10ZWFsOmhvdmVye2JhY2tncm91bmQ6cmdiYSgwLDE1MCwxMzYsLjIpO2JvcmRlci1jb2xvcjpyZ2JhKDAsMTUwLDEzNiwuOSl9LmNhcGliYXJhIC5pbnB1dC1ib3ggLm1pbmktaW5wdXQtc2VjdGlvbi0taWNvbi5jLXRlYWx7YmFja2dyb3VuZDojMDA5Njg4fS5jYXBpYmFyYS5jLWdyZWVuOm5vdCguZGFyay10aGVtZSkgOjotd2Via2l0LXNjcm9sbGJhci10aHVtYntiYWNrZ3JvdW5kOiM2NTk2Njd9LmNhcGliYXJhLmMtZ3JlZW46bm90KC5kYXJrLXRoZW1lKSAuaGVhZGVyLXRvcHtiYWNrZ3JvdW5kOiNlNGU0ZTR9LmNhcGliYXJhLmMtZ3JlZW46bm90KC5kYXJrLXRoZW1lKSAuY29ybmVye2JhY2tncm91bmQ6I2U0ZTRlNDtib3JkZXItY29sb3I6IzkyY2Y5NH0uY2FwaWJhcmEuYy1ncmVlbjpub3QoLmRhcmstdGhlbWUpIC5jb250YWluZXItdGwgaGVhZGVye2JhY2tncm91bmQ6I2U0ZTRlNDtib3JkZXItYm90dG9tLWNvbG9yOiM5MmNmOTR9LmNhcGliYXJhLmMtZ3JlZW46bm90KC5kYXJrLXRoZW1lKSAuY29udGFpbmVyLXRsIGhlYWRlciAubWVzLm1lcy1yZWR1Y2VkOmFmdGVye2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDkwZGVnLHRyYW5zcGFyZW50LCNkOWVlZGEpIWltcG9ydGFudH0uY2FwaWJhcmEuYy1ncmVlbjpub3QoLmRhcmstdGhlbWUpIG5hdi5yaWdodHtib3JkZXItY29sb3I6IzkyY2Y5NH0uY2FwaWJhcmEuYy1ncmVlbi5kYXJrLXRoZW1lIC5oZWFkZXItdG9wLC5jYXBpYmFyYS5jLWdyZWVuLmRhcmstdGhlbWUgbmF2LnJpZ2h0e2JvcmRlci1jb2xvcjojMmQ2ODJmfS5jYXBpYmFyYS5jLWdyZWVuLmRhcmstdGhlbWUgLmNvbnRhaW5lci10bCBoZWFkZXIsLmNhcGliYXJhLmMtZ3JlZW4uZGFyay10aGVtZSAuY29ybmVye2JvcmRlci1ib3R0b20tY29sb3I6IzJkNjgyZn0uY2FwaWJhcmEuYy1ncmVlbi5kYXJrLXRoZW1lIC5wcm9ncmVzcy1iYXIsLmNhcGliYXJhLmMtZ3JlZW4gLnByb2dyZXNzLWJhcntiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoNzYsMTc1LDgwLC4yKSFpbXBvcnRhbnR9LmNhcGliYXJhLmMtZ3JlZW4uZGFyay10aGVtZSAucHJvZ3Jlc3MtYmFyOmFmdGVyLC5jYXBpYmFyYS5jLWdyZWVuLmRhcmstdGhlbWUgLnByb2dyZXNzLWJhcjpiZWZvcmUsLmNhcGliYXJhLmMtZ3JlZW4gLnByb2dyZXNzLWJhcjphZnRlciwuY2FwaWJhcmEuYy1ncmVlbiAucHJvZ3Jlc3MtYmFyOmJlZm9yZXtiYWNrZ3JvdW5kLWNvbG9yOiM0Y2FmNTAhaW1wb3J0YW50fS5jYXBpYmFyYS5jLWdyZWVuLmRhcmstdGhlbWUgc2VsZWN0LnRhYnMtc2VsZWN0LC5jYXBpYmFyYS5jLWdyZWVuIHNlbGVjdC50YWJzLXNlbGVjdHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoNzYsMTc1LDgwLC43KSFpbXBvcnRhbnQ7Ym9yZGVyLWNvbG9yOiM0Y2FmNTAhaW1wb3J0YW50fS5jYXBpYmFyYS5jLWdyZWVuLmRhcmstdGhlbWUgLnRpbWUsLmNhcGliYXJhLmMtZ3JlZW4gLnRpbWV7Ym9yZGVyLWNvbG9yOnJnYmEoNzYsMTc1LDgwLC42KX0uY2FwaWJhcmEuYy1ncmVlbi5kYXJrLXRoZW1lIC50aW1lIC5zeW1ib2wsLmNhcGliYXJhLmMtZ3JlZW4gLnRpbWUgLnN5bWJvbHtjb2xvcjojNGNhZjUwfS5jYXBpYmFyYS5jLWdyZWVuLmRhcmstdGhlbWUgLnRpbWUgaW5wdXQ6YWN0aXZlLC5jYXBpYmFyYS5jLWdyZWVuLmRhcmstdGhlbWUgLnRpbWUgaW5wdXQ6Zm9jdXMsLmNhcGliYXJhLmMtZ3JlZW4gLnRpbWUgaW5wdXQ6YWN0aXZlLC5jYXBpYmFyYS5jLWdyZWVuIC50aW1lIGlucHV0OmZvY3Vze2JvcmRlci1jb2xvcjojNGNhZjUwO2JveC1zaGFkb3c6MCA0cHggNnB4IHJnYmEoNzYsMTc1LDgwLC4yKX0uY2FwaWJhcmEuYy1ncmVlbi5kYXJrLXRoZW1lIC5pbnB1dC1ib3gsLmNhcGliYXJhLmMtZ3JlZW4uZGFyay10aGVtZSAuaW5wdXQtc2VjdGlvbiBpbnB1dC5uYXYtaW5wdXQsLmNhcGliYXJhLmMtZ3JlZW4gLmlucHV0LWJveCwuY2FwaWJhcmEuYy1ncmVlbiAuaW5wdXQtc2VjdGlvbiBpbnB1dC5uYXYtaW5wdXR7Ym9yZGVyLWNvbG9yOnJnYmEoNzYsMTc1LDgwLC42KX0uY2FwaWJhcmEuYy1ncmVlbi5kYXJrLXRoZW1lIC5pbnB1dC1zZWN0aW9uIGlucHV0Lm5hdi1pbnB1dDphY3RpdmUsLmNhcGliYXJhLmMtZ3JlZW4uZGFyay10aGVtZSAuaW5wdXQtc2VjdGlvbiBpbnB1dC5uYXYtaW5wdXQ6Zm9jdXMsLmNhcGliYXJhLmMtZ3JlZW4gLmlucHV0LXNlY3Rpb24gaW5wdXQubmF2LWlucHV0OmFjdGl2ZSwuY2FwaWJhcmEuYy1ncmVlbiAuaW5wdXQtc2VjdGlvbiBpbnB1dC5uYXYtaW5wdXQ6Zm9jdXN7Ym9yZGVyLWNvbG9yOiM0Y2FmNTA7Ym94LXNoYWRvdzowIDRweCA2cHggcmdiYSg3NiwxNzUsODAsLjIpfS5jYXBpYmFyYS5jLWdyZWVuLmRhcmstdGhlbWUgLmlucHV0LXNlY3Rpb24ubXNqLWlucHV0LWNvbnRhaW5lciB0ZXh0YXJlYS5tc2osLmNhcGliYXJhLmMtZ3JlZW4gLmlucHV0LXNlY3Rpb24ubXNqLWlucHV0LWNvbnRhaW5lciB0ZXh0YXJlYS5tc2p7Ym9yZGVyOjJweCBzb2xpZCAjNGNhZjUwfS5jYXBpYmFyYS5jLWdyZWVuLmRhcmstdGhlbWUgLmlucHV0LXNlY3Rpb24ubXNqLWlucHV0LWNvbnRhaW5lciB0ZXh0YXJlYS5tc2o6YWN0aXZlLC5jYXBpYmFyYS5jLWdyZWVuLmRhcmstdGhlbWUgLmlucHV0LXNlY3Rpb24ubXNqLWlucHV0LWNvbnRhaW5lciB0ZXh0YXJlYS5tc2o6Zm9jdXMsLmNhcGliYXJhLmMtZ3JlZW4gLmlucHV0LXNlY3Rpb24ubXNqLWlucHV0LWNvbnRhaW5lciB0ZXh0YXJlYS5tc2o6YWN0aXZlLC5jYXBpYmFyYS5jLWdyZWVuIC5pbnB1dC1zZWN0aW9uLm1zai1pbnB1dC1jb250YWluZXIgdGV4dGFyZWEubXNqOmZvY3Vze2JveC1zaGFkb3c6MCA0cHggNnB4IHJnYmEoNzYsMTc1LDgwLC4yKX0uY2FwaWJhcmEuYy1ncmVlbiAuYnRuLXJhaXNlZCwuY2FwaWJhcmEuYy1ncmVlbi5kYXJrLXRoZW1lIC5idG4tcmFpc2Vke2JvcmRlci1jb2xvcjojNGNhZjUwO2JhY2tncm91bmQ6cmdiYSg3NiwxNzUsODAsLjgpfS5jYXBpYmFyYS5jLWdyZWVuIC5idG4tb3V0bGluZSwuY2FwaWJhcmEuYy1ncmVlbi5kYXJrLXRoZW1lIC5idG4tb3V0bGluZXtib3JkZXItY29sb3I6IzRjYWY1MDtjb2xvcjojNGNhZjUwfS5jYXBpYmFyYS5jLWdyZWVuLmRhcmstdGhlbWUgLnNlbGVjdC1jb250YWluZXIgLnNlbGVjdGVkLWRheSwuY2FwaWJhcmEuYy1ncmVlbiAuc2VsZWN0LWNvbnRhaW5lciAuc2VsZWN0ZWQtZGF5e2JhY2tncm91bmQ6cmdiYSg3NiwxNzUsODAsLjMpO2JveC1zaGFkb3c6aW5zZXQgMCAwIDEwcHggcmdiYSg3NiwxNzUsODAsLjUpfS5jYXBpYmFyYSAuYy1ncmVlbi0tYmFja2dyb3VuZHtiYWNrZ3JvdW5kOiM0Y2FmNTAhaW1wb3J0YW50fS5jYXBpYmFyYSAuYy1ncmVlbi1kLS1iYWNrZ3JvdW5ke2JhY2tncm91bmQ6IzM1N2EzOCFpbXBvcnRhbnR9LmNhcGliYXJhIC5jLWdyZWVuLWwtLWJhY2tncm91bmR7YmFja2dyb3VuZDojODBjODgzIWltcG9ydGFudH0uY2FwaWJhcmEgLmMtZ3JlZW4tLXRleHR7Y29sb3I6IzRjYWY1MCFpbXBvcnRhbnR9LmNhcGliYXJhIC5jLWdyZWVuLWQtLXRleHR7Y29sb3I6IzM1N2EzOCFpbXBvcnRhbnR9LmNhcGliYXJhIC5jLWdyZWVuLWwtLXRleHR7Y29sb3I6IzgwYzg4MyFpbXBvcnRhbnR9LmNhcGliYXJhIC5kZXRhaWwtZGF5IC5saXN0LWRldGFpbCAuaXRlbS1kZXRhaWwuYy1ncmVlbntiYWNrZ3JvdW5kOnJnYmEoNzYsMTc1LDgwLC4yKTtib3JkZXI6MXB4IHNvbGlkICM0Y2FmNTB9LmNhcGliYXJhIC5kZXRhaWwtZGF5IC5saXN0LWRldGFpbCAuaXRlbS1kZXRhaWwuYy1ncmVlbiAubGVmdC1pY29ue2JhY2tncm91bmQ6IzRjYWY1MH0uY2FwaWJhcmEgLmRldGFpbC1kYXkgLmxpc3QtZGV0YWlsIC5pdGVtLWRldGFpbC5jLWdyZWVuIC5sZWZ0LWljb24ub3V0bGluZWR7Ym9yZGVyOjFweCBzb2xpZCAjNGNhZjUwO2JveC1zaGFkb3c6aW5zZXQgMCAwIDAgMXB4IHJnYmEoNzYsMTc1LDgwLC43KX0uY2FwaWJhcmEgLmRldGFpbC1kYXkgLmxpc3QtZGV0YWlsIC5pdGVtLWRldGFpbC5jLWdyZWVuIC5uYW1le2NvbG9yOiM0Y2FmNTB9LmNhcGliYXJhIC5mbG9hdC1ib3gtY29udGFpbmVyIC5mbG9hdC1ib3ggc3Bhbi5kYXRhLmMtZ3JlZW57YmFja2dyb3VuZDpyZ2JhKDc2LDE3NSw4MCwuOCl9LmNhcGliYXJhIC5mbG9hdC1ib3gtY29udGFpbmVyIC5mbG9hdC1ib3ggc3Bhbi5kYXRhLnNoYXBlLW91dGxpbmVkLmMtZ3JlZW57Ym9yZGVyLWNvbG9yOnJnYmEoNzYsMTc1LDgwLC45KTtiYWNrZ3JvdW5kOnJnYmEoNzYsMTc1LDgwLC4xKTtjb2xvcjojNGNhZjUwfS5jYXBpYmFyYSAuZmxvYXQtYm94LWNvbnRhaW5lciAuZmxvYXQtYm94IHNwYW4uZGF0YS5zaGFwZS1iYXIuYy1ncmVlbntiYWNrZ3JvdW5kOiM0Y2FmNTB9LmNhcGliYXJhIC5mbG9hdC1ib3gtY29udGFpbmVyIC5mbG9hdC1ib3ggc3Bhbi5kYXRhLnNoYXBlLWJhci1vdXRsaW5lZC5jLWdyZWVue2JhY2tncm91bmQ6cmdiYSg3NiwxNzUsODAsLjUpfS5jYXBpYmFyYSAuZmxvYXQtYm94LWNvbnRhaW5lciAuZmxvYXQtYm94IC5kb3QuYy1ncmVlbntiYWNrZ3JvdW5kOiM0Y2FmNTB9LmNhcGliYXJhIC5mbG9hdC1ib3gtY29udGFpbmVyIC5mbG9hdC1ib3ggLmRvdC5jLWdyZWVuLm91dGxpbmVke2JvcmRlcjoxcHggc29saWQgIzRjYWY1MDtib3gtc2hhZG93Omluc2V0IDAgMCAwIDFweCByZ2JhKDc2LDE3NSw4MCwuNyl9LmNhcGliYXJhIC5oZWFkZXItdG9wIC50YWJzLWNvbnRhaW5lciAudGFiOm5vdCguZGlzYWJsZWQpLmMtZ3JlZW4uYWN0aXZle2JhY2tncm91bmQ6cmdiYSg3NiwxNzUsODAsLjcpO2JvcmRlci1jb2xvcjpyZ2JhKDc2LDE3NSw4MCwuNyk7Y29sb3I6I2ZmZn0uY2FwaWJhcmEgLmhlYWRlci10b3AgLnRhYnMtY29udGFpbmVyIC50YWI6bm90KC5kaXNhYmxlZCkuYy1ncmVlbi5hY3RpdmU6aG92ZXJ7YmFja2dyb3VuZDpyZ2JhKDc2LDE3NSw4MCwuOCl9LmNhcGliYXJhIC5oZWFkZXItdG9wIC50YWJzLWNvbnRhaW5lciAudGFiOm5vdCguZGlzYWJsZWQpLmMtZ3JlZW46aG92ZXJ7YmFja2dyb3VuZDpyZ2JhKDc2LDE3NSw4MCwuMik7Ym9yZGVyLWNvbG9yOnJnYmEoNzYsMTc1LDgwLC45KX0uY2FwaWJhcmEgLmlucHV0LWJveCAubWluaS1pbnB1dC1zZWN0aW9uLS1pY29uLmMtZ3JlZW57YmFja2dyb3VuZDojNGNhZjUwfS5jYXBpYmFyYS5jLWxpZ2h0LWdyZWVuOm5vdCguZGFyay10aGVtZSkgOjotd2Via2l0LXNjcm9sbGJhci10aHVtYntiYWNrZ3JvdW5kOiM4OWFiNjJ9LmNhcGliYXJhLmMtbGlnaHQtZ3JlZW46bm90KC5kYXJrLXRoZW1lKSAuaGVhZGVyLXRvcHtiYWNrZ3JvdW5kOiNlZGVkZWN9LmNhcGliYXJhLmMtbGlnaHQtZ3JlZW46bm90KC5kYXJrLXRoZW1lKSAuY29ybmVye2JhY2tncm91bmQ6I2VkZWRlYztib3JkZXItY29sb3I6I2JjZGM5N30uY2FwaWJhcmEuYy1saWdodC1ncmVlbjpub3QoLmRhcmstdGhlbWUpIC5jb250YWluZXItdGwgaGVhZGVye2JhY2tncm91bmQ6I2VkZWRlYztib3JkZXItYm90dG9tLWNvbG9yOiNiY2RjOTd9LmNhcGliYXJhLmMtbGlnaHQtZ3JlZW46bm90KC5kYXJrLXRoZW1lKSAuY29udGFpbmVyLXRsIGhlYWRlciAubWVzLm1lcy1yZWR1Y2VkOmFmdGVye2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDkwZGVnLHRyYW5zcGFyZW50LCNlZGY2ZTMpIWltcG9ydGFudH0uY2FwaWJhcmEuYy1saWdodC1ncmVlbjpub3QoLmRhcmstdGhlbWUpIG5hdi5yaWdodHtib3JkZXItY29sb3I6I2JjZGM5N30uY2FwaWJhcmEuYy1saWdodC1ncmVlbi5kYXJrLXRoZW1lIC5oZWFkZXItdG9wLC5jYXBpYmFyYS5jLWxpZ2h0LWdyZWVuLmRhcmstdGhlbWUgbmF2LnJpZ2h0e2JvcmRlci1jb2xvcjojNTc3ZDJhfS5jYXBpYmFyYS5jLWxpZ2h0LWdyZWVuLmRhcmstdGhlbWUgLmNvbnRhaW5lci10bCBoZWFkZXIsLmNhcGliYXJhLmMtbGlnaHQtZ3JlZW4uZGFyay10aGVtZSAuY29ybmVye2JvcmRlci1ib3R0b20tY29sb3I6IzU3N2QyYX0uY2FwaWJhcmEuYy1saWdodC1ncmVlbi5kYXJrLXRoZW1lIC5wcm9ncmVzcy1iYXIsLmNhcGliYXJhLmMtbGlnaHQtZ3JlZW4gLnByb2dyZXNzLWJhcntiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMTM5LDE5NSw3NCwuMikhaW1wb3J0YW50fS5jYXBpYmFyYS5jLWxpZ2h0LWdyZWVuLmRhcmstdGhlbWUgLnByb2dyZXNzLWJhcjphZnRlciwuY2FwaWJhcmEuYy1saWdodC1ncmVlbi5kYXJrLXRoZW1lIC5wcm9ncmVzcy1iYXI6YmVmb3JlLC5jYXBpYmFyYS5jLWxpZ2h0LWdyZWVuIC5wcm9ncmVzcy1iYXI6YWZ0ZXIsLmNhcGliYXJhLmMtbGlnaHQtZ3JlZW4gLnByb2dyZXNzLWJhcjpiZWZvcmV7YmFja2dyb3VuZC1jb2xvcjojOGJjMzRhIWltcG9ydGFudH0uY2FwaWJhcmEuYy1saWdodC1ncmVlbi5kYXJrLXRoZW1lIHNlbGVjdC50YWJzLXNlbGVjdCwuY2FwaWJhcmEuYy1saWdodC1ncmVlbiBzZWxlY3QudGFicy1zZWxlY3R7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDEzOSwxOTUsNzQsLjcpIWltcG9ydGFudDtib3JkZXItY29sb3I6IzhiYzM0YSFpbXBvcnRhbnR9LmNhcGliYXJhLmMtbGlnaHQtZ3JlZW4uZGFyay10aGVtZSAudGltZSwuY2FwaWJhcmEuYy1saWdodC1ncmVlbiAudGltZXtib3JkZXItY29sb3I6cmdiYSgxMzksMTk1LDc0LC42KX0uY2FwaWJhcmEuYy1saWdodC1ncmVlbi5kYXJrLXRoZW1lIC50aW1lIC5zeW1ib2wsLmNhcGliYXJhLmMtbGlnaHQtZ3JlZW4gLnRpbWUgLnN5bWJvbHtjb2xvcjojOGJjMzRhfS5jYXBpYmFyYS5jLWxpZ2h0LWdyZWVuLmRhcmstdGhlbWUgLnRpbWUgaW5wdXQ6YWN0aXZlLC5jYXBpYmFyYS5jLWxpZ2h0LWdyZWVuLmRhcmstdGhlbWUgLnRpbWUgaW5wdXQ6Zm9jdXMsLmNhcGliYXJhLmMtbGlnaHQtZ3JlZW4gLnRpbWUgaW5wdXQ6YWN0aXZlLC5jYXBpYmFyYS5jLWxpZ2h0LWdyZWVuIC50aW1lIGlucHV0OmZvY3Vze2JvcmRlci1jb2xvcjojOGJjMzRhO2JveC1zaGFkb3c6MCA0cHggNnB4IHJnYmEoMTM5LDE5NSw3NCwuMil9LmNhcGliYXJhLmMtbGlnaHQtZ3JlZW4uZGFyay10aGVtZSAuaW5wdXQtYm94LC5jYXBpYmFyYS5jLWxpZ2h0LWdyZWVuLmRhcmstdGhlbWUgLmlucHV0LXNlY3Rpb24gaW5wdXQubmF2LWlucHV0LC5jYXBpYmFyYS5jLWxpZ2h0LWdyZWVuIC5pbnB1dC1ib3gsLmNhcGliYXJhLmMtbGlnaHQtZ3JlZW4gLmlucHV0LXNlY3Rpb24gaW5wdXQubmF2LWlucHV0e2JvcmRlci1jb2xvcjpyZ2JhKDEzOSwxOTUsNzQsLjYpfS5jYXBpYmFyYS5jLWxpZ2h0LWdyZWVuLmRhcmstdGhlbWUgLmlucHV0LXNlY3Rpb24gaW5wdXQubmF2LWlucHV0OmFjdGl2ZSwuY2FwaWJhcmEuYy1saWdodC1ncmVlbi5kYXJrLXRoZW1lIC5pbnB1dC1zZWN0aW9uIGlucHV0Lm5hdi1pbnB1dDpmb2N1cywuY2FwaWJhcmEuYy1saWdodC1ncmVlbiAuaW5wdXQtc2VjdGlvbiBpbnB1dC5uYXYtaW5wdXQ6YWN0aXZlLC5jYXBpYmFyYS5jLWxpZ2h0LWdyZWVuIC5pbnB1dC1zZWN0aW9uIGlucHV0Lm5hdi1pbnB1dDpmb2N1c3tib3JkZXItY29sb3I6IzhiYzM0YTtib3gtc2hhZG93OjAgNHB4IDZweCByZ2JhKDEzOSwxOTUsNzQsLjIpfS5jYXBpYmFyYS5jLWxpZ2h0LWdyZWVuLmRhcmstdGhlbWUgLmlucHV0LXNlY3Rpb24ubXNqLWlucHV0LWNvbnRhaW5lciB0ZXh0YXJlYS5tc2osLmNhcGliYXJhLmMtbGlnaHQtZ3JlZW4gLmlucHV0LXNlY3Rpb24ubXNqLWlucHV0LWNvbnRhaW5lciB0ZXh0YXJlYS5tc2p7Ym9yZGVyOjJweCBzb2xpZCAjOGJjMzRhfS5jYXBpYmFyYS5jLWxpZ2h0LWdyZWVuLmRhcmstdGhlbWUgLmlucHV0LXNlY3Rpb24ubXNqLWlucHV0LWNvbnRhaW5lciB0ZXh0YXJlYS5tc2o6YWN0aXZlLC5jYXBpYmFyYS5jLWxpZ2h0LWdyZWVuLmRhcmstdGhlbWUgLmlucHV0LXNlY3Rpb24ubXNqLWlucHV0LWNvbnRhaW5lciB0ZXh0YXJlYS5tc2o6Zm9jdXMsLmNhcGliYXJhLmMtbGlnaHQtZ3JlZW4gLmlucHV0LXNlY3Rpb24ubXNqLWlucHV0LWNvbnRhaW5lciB0ZXh0YXJlYS5tc2o6YWN0aXZlLC5jYXBpYmFyYS5jLWxpZ2h0LWdyZWVuIC5pbnB1dC1zZWN0aW9uLm1zai1pbnB1dC1jb250YWluZXIgdGV4dGFyZWEubXNqOmZvY3Vze2JveC1zaGFkb3c6MCA0cHggNnB4IHJnYmEoMTM5LDE5NSw3NCwuMil9LmNhcGliYXJhLmMtbGlnaHQtZ3JlZW4gLmJ0bi1yYWlzZWQsLmNhcGliYXJhLmMtbGlnaHQtZ3JlZW4uZGFyay10aGVtZSAuYnRuLXJhaXNlZHtib3JkZXItY29sb3I6IzhiYzM0YTtiYWNrZ3JvdW5kOnJnYmEoMTM5LDE5NSw3NCwuOCl9LmNhcGliYXJhLmMtbGlnaHQtZ3JlZW4gLmJ0bi1vdXRsaW5lLC5jYXBpYmFyYS5jLWxpZ2h0LWdyZWVuLmRhcmstdGhlbWUgLmJ0bi1vdXRsaW5le2JvcmRlci1jb2xvcjojOGJjMzRhO2NvbG9yOiM4YmMzNGF9LmNhcGliYXJhLmMtbGlnaHQtZ3JlZW4uZGFyay10aGVtZSAuc2VsZWN0LWNvbnRhaW5lciAuc2VsZWN0ZWQtZGF5LC5jYXBpYmFyYS5jLWxpZ2h0LWdyZWVuIC5zZWxlY3QtY29udGFpbmVyIC5zZWxlY3RlZC1kYXl7YmFja2dyb3VuZDpyZ2JhKDEzOSwxOTUsNzQsLjMpO2JveC1zaGFkb3c6aW5zZXQgMCAwIDEwcHggcmdiYSgxMzksMTk1LDc0LC41KX0uY2FwaWJhcmEgLmMtbGlnaHQtZ3JlZW4tLWJhY2tncm91bmR7YmFja2dyb3VuZDojOGJjMzRhIWltcG9ydGFudH0uY2FwaWJhcmEgLmMtbGlnaHQtZ3JlZW4tZC0tYmFja2dyb3VuZHtiYWNrZ3JvdW5kOiM2NDkxMzAhaW1wb3J0YW50fS5jYXBpYmFyYSAuYy1saWdodC1ncmVlbi1sLS1iYWNrZ3JvdW5ke2JhY2tncm91bmQ6I2IwZDY4MyFpbXBvcnRhbnR9LmNhcGliYXJhIC5jLWxpZ2h0LWdyZWVuLS10ZXh0e2NvbG9yOiM4YmMzNGEhaW1wb3J0YW50fS5jYXBpYmFyYSAuYy1saWdodC1ncmVlbi1kLS10ZXh0e2NvbG9yOiM2NDkxMzAhaW1wb3J0YW50fS5jYXBpYmFyYSAuYy1saWdodC1ncmVlbi1sLS10ZXh0e2NvbG9yOiNiMGQ2ODMhaW1wb3J0YW50fS5jYXBpYmFyYSAuZGV0YWlsLWRheSAubGlzdC1kZXRhaWwgLml0ZW0tZGV0YWlsLmMtbGlnaHQtZ3JlZW57YmFja2dyb3VuZDpyZ2JhKDEzOSwxOTUsNzQsLjIpO2JvcmRlcjoxcHggc29saWQgIzhiYzM0YX0uY2FwaWJhcmEgLmRldGFpbC1kYXkgLmxpc3QtZGV0YWlsIC5pdGVtLWRldGFpbC5jLWxpZ2h0LWdyZWVuIC5sZWZ0LWljb257YmFja2dyb3VuZDojOGJjMzRhfS5jYXBpYmFyYSAuZGV0YWlsLWRheSAubGlzdC1kZXRhaWwgLml0ZW0tZGV0YWlsLmMtbGlnaHQtZ3JlZW4gLmxlZnQtaWNvbi5vdXRsaW5lZHtib3JkZXI6MXB4IHNvbGlkICM4YmMzNGE7Ym94LXNoYWRvdzppbnNldCAwIDAgMCAxcHggcmdiYSgxMzksMTk1LDc0LC43KX0uY2FwaWJhcmEgLmRldGFpbC1kYXkgLmxpc3QtZGV0YWlsIC5pdGVtLWRldGFpbC5jLWxpZ2h0LWdyZWVuIC5uYW1le2NvbG9yOiM4YmMzNGF9LmNhcGliYXJhIC5mbG9hdC1ib3gtY29udGFpbmVyIC5mbG9hdC1ib3ggc3Bhbi5kYXRhLmMtbGlnaHQtZ3JlZW57YmFja2dyb3VuZDpyZ2JhKDEzOSwxOTUsNzQsLjgpfS5jYXBpYmFyYSAuZmxvYXQtYm94LWNvbnRhaW5lciAuZmxvYXQtYm94IHNwYW4uZGF0YS5zaGFwZS1vdXRsaW5lZC5jLWxpZ2h0LWdyZWVue2JvcmRlci1jb2xvcjpyZ2JhKDEzOSwxOTUsNzQsLjkpO2JhY2tncm91bmQ6cmdiYSgxMzksMTk1LDc0LC4xKTtjb2xvcjojOGJjMzRhfS5jYXBpYmFyYSAuZmxvYXQtYm94LWNvbnRhaW5lciAuZmxvYXQtYm94IHNwYW4uZGF0YS5zaGFwZS1iYXIuYy1saWdodC1ncmVlbntiYWNrZ3JvdW5kOiM4YmMzNGF9LmNhcGliYXJhIC5mbG9hdC1ib3gtY29udGFpbmVyIC5mbG9hdC1ib3ggc3Bhbi5kYXRhLnNoYXBlLWJhci1vdXRsaW5lZC5jLWxpZ2h0LWdyZWVue2JhY2tncm91bmQ6cmdiYSgxMzksMTk1LDc0LC41KX0uY2FwaWJhcmEgLmZsb2F0LWJveC1jb250YWluZXIgLmZsb2F0LWJveCAuZG90LmMtbGlnaHQtZ3JlZW57YmFja2dyb3VuZDojOGJjMzRhfS5jYXBpYmFyYSAuZmxvYXQtYm94LWNvbnRhaW5lciAuZmxvYXQtYm94IC5kb3QuYy1saWdodC1ncmVlbi5vdXRsaW5lZHtib3JkZXI6MXB4IHNvbGlkICM4YmMzNGE7Ym94LXNoYWRvdzppbnNldCAwIDAgMCAxcHggcmdiYSgxMzksMTk1LDc0LC43KX0uY2FwaWJhcmEgLmhlYWRlci10b3AgLnRhYnMtY29udGFpbmVyIC50YWI6bm90KC5kaXNhYmxlZCkuYy1saWdodC1ncmVlbi5hY3RpdmV7YmFja2dyb3VuZDpyZ2JhKDEzOSwxOTUsNzQsLjcpO2JvcmRlci1jb2xvcjpyZ2JhKDEzOSwxOTUsNzQsLjcpO2NvbG9yOiNmZmZ9LmNhcGliYXJhIC5oZWFkZXItdG9wIC50YWJzLWNvbnRhaW5lciAudGFiOm5vdCguZGlzYWJsZWQpLmMtbGlnaHQtZ3JlZW4uYWN0aXZlOmhvdmVye2JhY2tncm91bmQ6cmdiYSgxMzksMTk1LDc0LC44KX0uY2FwaWJhcmEgLmhlYWRlci10b3AgLnRhYnMtY29udGFpbmVyIC50YWI6bm90KC5kaXNhYmxlZCkuYy1saWdodC1ncmVlbjpob3ZlcntiYWNrZ3JvdW5kOnJnYmEoMTM5LDE5NSw3NCwuMik7Ym9yZGVyLWNvbG9yOnJnYmEoMTM5LDE5NSw3NCwuOSl9LmNhcGliYXJhIC5pbnB1dC1ib3ggLm1pbmktaW5wdXQtc2VjdGlvbi0taWNvbi5jLWxpZ2h0LWdyZWVue2JhY2tncm91bmQ6IzhiYzM0YX0uY2FwaWJhcmEuYy1saW1lOm5vdCguZGFyay10aGVtZSkgOjotd2Via2l0LXNjcm9sbGJhci10aHVtYntiYWNrZ3JvdW5kOiNiYWM1NTB9LmNhcGliYXJhLmMtbGltZTpub3QoLmRhcmstdGhlbWUpIC5oZWFkZXItdG9we2JhY2tncm91bmQ6I2YzZjNlZX0uY2FwaWJhcmEuYy1saW1lOm5vdCguZGFyay10aGVtZSkgLmNvcm5lcntiYWNrZ3JvdW5kOiNmM2YzZWU7Ym9yZGVyLWNvbG9yOiNlM2ViOTB9LmNhcGliYXJhLmMtbGltZTpub3QoLmRhcmstdGhlbWUpIC5jb250YWluZXItdGwgaGVhZGVye2JhY2tncm91bmQ6I2YzZjNlZTtib3JkZXItYm90dG9tLWNvbG9yOiNlM2ViOTB9LmNhcGliYXJhLmMtbGltZTpub3QoLmRhcmstdGhlbWUpIC5jb250YWluZXItdGwgaGVhZGVyIC5tZXMubWVzLXJlZHVjZWQ6YWZ0ZXJ7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoOTBkZWcsdHJhbnNwYXJlbnQsI2Y5ZmJlNikhaW1wb3J0YW50fS5jYXBpYmFyYS5jLWxpbWU6bm90KC5kYXJrLXRoZW1lKSBuYXYucmlnaHR7Ym9yZGVyLWNvbG9yOiNlM2ViOTB9LmNhcGliYXJhLmMtbGltZS5kYXJrLXRoZW1lIC5oZWFkZXItdG9wLC5jYXBpYmFyYS5jLWxpbWUuZGFyay10aGVtZSBuYXYucmlnaHR7Ym9yZGVyLWNvbG9yOiM4OTk1MWF9LmNhcGliYXJhLmMtbGltZS5kYXJrLXRoZW1lIC5jb250YWluZXItdGwgaGVhZGVyLC5jYXBpYmFyYS5jLWxpbWUuZGFyay10aGVtZSAuY29ybmVye2JvcmRlci1ib3R0b20tY29sb3I6Izg5OTUxYX0uY2FwaWJhcmEuYy1saW1lLmRhcmstdGhlbWUgLnByb2dyZXNzLWJhciwuY2FwaWJhcmEuYy1saW1lIC5wcm9ncmVzcy1iYXJ7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDIwNSwyMjAsNTcsLjIpIWltcG9ydGFudH0uY2FwaWJhcmEuYy1saW1lLmRhcmstdGhlbWUgLnByb2dyZXNzLWJhcjphZnRlciwuY2FwaWJhcmEuYy1saW1lLmRhcmstdGhlbWUgLnByb2dyZXNzLWJhcjpiZWZvcmUsLmNhcGliYXJhLmMtbGltZSAucHJvZ3Jlc3MtYmFyOmFmdGVyLC5jYXBpYmFyYS5jLWxpbWUgLnByb2dyZXNzLWJhcjpiZWZvcmV7YmFja2dyb3VuZC1jb2xvcjojY2RkYzM5IWltcG9ydGFudH0uY2FwaWJhcmEuYy1saW1lLmRhcmstdGhlbWUgc2VsZWN0LnRhYnMtc2VsZWN0LC5jYXBpYmFyYS5jLWxpbWUgc2VsZWN0LnRhYnMtc2VsZWN0e2JhY2tncm91bmQtY29sb3I6cmdiYSgyMDUsMjIwLDU3LC43KSFpbXBvcnRhbnQ7Ym9yZGVyLWNvbG9yOiNjZGRjMzkhaW1wb3J0YW50fS5jYXBpYmFyYS5jLWxpbWUuZGFyay10aGVtZSAudGltZSwuY2FwaWJhcmEuYy1saW1lIC50aW1le2JvcmRlci1jb2xvcjpyZ2JhKDIwNSwyMjAsNTcsLjYpfS5jYXBpYmFyYS5jLWxpbWUuZGFyay10aGVtZSAudGltZSAuc3ltYm9sLC5jYXBpYmFyYS5jLWxpbWUgLnRpbWUgLnN5bWJvbHtjb2xvcjojY2RkYzM5fS5jYXBpYmFyYS5jLWxpbWUuZGFyay10aGVtZSAudGltZSBpbnB1dDphY3RpdmUsLmNhcGliYXJhLmMtbGltZS5kYXJrLXRoZW1lIC50aW1lIGlucHV0OmZvY3VzLC5jYXBpYmFyYS5jLWxpbWUgLnRpbWUgaW5wdXQ6YWN0aXZlLC5jYXBpYmFyYS5jLWxpbWUgLnRpbWUgaW5wdXQ6Zm9jdXN7Ym9yZGVyLWNvbG9yOiNjZGRjMzk7Ym94LXNoYWRvdzowIDRweCA2cHggcmdiYSgyMDUsMjIwLDU3LC4yKX0uY2FwaWJhcmEuYy1saW1lLmRhcmstdGhlbWUgLmlucHV0LWJveCwuY2FwaWJhcmEuYy1saW1lLmRhcmstdGhlbWUgLmlucHV0LXNlY3Rpb24gaW5wdXQubmF2LWlucHV0LC5jYXBpYmFyYS5jLWxpbWUgLmlucHV0LWJveCwuY2FwaWJhcmEuYy1saW1lIC5pbnB1dC1zZWN0aW9uIGlucHV0Lm5hdi1pbnB1dHtib3JkZXItY29sb3I6cmdiYSgyMDUsMjIwLDU3LC42KX0uY2FwaWJhcmEuYy1saW1lLmRhcmstdGhlbWUgLmlucHV0LXNlY3Rpb24gaW5wdXQubmF2LWlucHV0OmFjdGl2ZSwuY2FwaWJhcmEuYy1saW1lLmRhcmstdGhlbWUgLmlucHV0LXNlY3Rpb24gaW5wdXQubmF2LWlucHV0OmZvY3VzLC5jYXBpYmFyYS5jLWxpbWUgLmlucHV0LXNlY3Rpb24gaW5wdXQubmF2LWlucHV0OmFjdGl2ZSwuY2FwaWJhcmEuYy1saW1lIC5pbnB1dC1zZWN0aW9uIGlucHV0Lm5hdi1pbnB1dDpmb2N1c3tib3JkZXItY29sb3I6I2NkZGMzOTtib3gtc2hhZG93OjAgNHB4IDZweCByZ2JhKDIwNSwyMjAsNTcsLjIpfS5jYXBpYmFyYS5jLWxpbWUuZGFyay10aGVtZSAuaW5wdXQtc2VjdGlvbi5tc2otaW5wdXQtY29udGFpbmVyIHRleHRhcmVhLm1zaiwuY2FwaWJhcmEuYy1saW1lIC5pbnB1dC1zZWN0aW9uLm1zai1pbnB1dC1jb250YWluZXIgdGV4dGFyZWEubXNqe2JvcmRlcjoycHggc29saWQgI2NkZGMzOX0uY2FwaWJhcmEuYy1saW1lLmRhcmstdGhlbWUgLmlucHV0LXNlY3Rpb24ubXNqLWlucHV0LWNvbnRhaW5lciB0ZXh0YXJlYS5tc2o6YWN0aXZlLC5jYXBpYmFyYS5jLWxpbWUuZGFyay10aGVtZSAuaW5wdXQtc2VjdGlvbi5tc2otaW5wdXQtY29udGFpbmVyIHRleHRhcmVhLm1zajpmb2N1cywuY2FwaWJhcmEuYy1saW1lIC5pbnB1dC1zZWN0aW9uLm1zai1pbnB1dC1jb250YWluZXIgdGV4dGFyZWEubXNqOmFjdGl2ZSwuY2FwaWJhcmEuYy1saW1lIC5pbnB1dC1zZWN0aW9uLm1zai1pbnB1dC1jb250YWluZXIgdGV4dGFyZWEubXNqOmZvY3Vze2JveC1zaGFkb3c6MCA0cHggNnB4IHJnYmEoMjA1LDIyMCw1NywuMil9LmNhcGliYXJhLmMtbGltZSAuYnRuLXJhaXNlZCwuY2FwaWJhcmEuYy1saW1lLmRhcmstdGhlbWUgLmJ0bi1yYWlzZWR7Ym9yZGVyLWNvbG9yOiNjZGRjMzk7YmFja2dyb3VuZDpyZ2JhKDIwNSwyMjAsNTcsLjgpfS5jYXBpYmFyYS5jLWxpbWUgLmJ0bi1vdXRsaW5lLC5jYXBpYmFyYS5jLWxpbWUuZGFyay10aGVtZSAuYnRuLW91dGxpbmV7Ym9yZGVyLWNvbG9yOiNjZGRjMzk7Y29sb3I6I2NkZGMzOX0uY2FwaWJhcmEuYy1saW1lLmRhcmstdGhlbWUgLnNlbGVjdC1jb250YWluZXIgLnNlbGVjdGVkLWRheSwuY2FwaWJhcmEuYy1saW1lIC5zZWxlY3QtY29udGFpbmVyIC5zZWxlY3RlZC1kYXl7YmFja2dyb3VuZDpyZ2JhKDIwNSwyMjAsNTcsLjMpO2JveC1zaGFkb3c6aW5zZXQgMCAwIDEwcHggcmdiYSgyMDUsMjIwLDU3LC41KX0uY2FwaWJhcmEgLmMtbGltZS0tYmFja2dyb3VuZHtiYWNrZ3JvdW5kOiNjZGRjMzkhaW1wb3J0YW50fS5jYXBpYmFyYSAuYy1saW1lLWQtLWJhY2tncm91bmR7YmFja2dyb3VuZDojOWRhYTFlIWltcG9ydGFudH0uY2FwaWJhcmEgLmMtbGltZS1sLS1iYWNrZ3JvdW5ke2JhY2tncm91bmQ6I2RkZTc3YSFpbXBvcnRhbnR9LmNhcGliYXJhIC5jLWxpbWUtLXRleHR7Y29sb3I6I2NkZGMzOSFpbXBvcnRhbnR9LmNhcGliYXJhIC5jLWxpbWUtZC0tdGV4dHtjb2xvcjojOWRhYTFlIWltcG9ydGFudH0uY2FwaWJhcmEgLmMtbGltZS1sLS10ZXh0e2NvbG9yOiNkZGU3N2EhaW1wb3J0YW50fS5jYXBpYmFyYSAuZGV0YWlsLWRheSAubGlzdC1kZXRhaWwgLml0ZW0tZGV0YWlsLmMtbGltZXtiYWNrZ3JvdW5kOnJnYmEoMjA1LDIyMCw1NywuMik7Ym9yZGVyOjFweCBzb2xpZCAjY2RkYzM5fS5jYXBpYmFyYSAuZGV0YWlsLWRheSAubGlzdC1kZXRhaWwgLml0ZW0tZGV0YWlsLmMtbGltZSAubGVmdC1pY29ue2JhY2tncm91bmQ6I2NkZGMzOX0uY2FwaWJhcmEgLmRldGFpbC1kYXkgLmxpc3QtZGV0YWlsIC5pdGVtLWRldGFpbC5jLWxpbWUgLmxlZnQtaWNvbi5vdXRsaW5lZHtib3JkZXI6MXB4IHNvbGlkICNjZGRjMzk7Ym94LXNoYWRvdzppbnNldCAwIDAgMCAxcHggcmdiYSgyMDUsMjIwLDU3LC43KX0uY2FwaWJhcmEgLmRldGFpbC1kYXkgLmxpc3QtZGV0YWlsIC5pdGVtLWRldGFpbC5jLWxpbWUgLm5hbWV7Y29sb3I6I2NkZGMzOX0uY2FwaWJhcmEgLmZsb2F0LWJveC1jb250YWluZXIgLmZsb2F0LWJveCBzcGFuLmRhdGEuYy1saW1le2JhY2tncm91bmQ6cmdiYSgyMDUsMjIwLDU3LC44KX0uY2FwaWJhcmEgLmZsb2F0LWJveC1jb250YWluZXIgLmZsb2F0LWJveCBzcGFuLmRhdGEuc2hhcGUtb3V0bGluZWQuYy1saW1le2JvcmRlci1jb2xvcjpyZ2JhKDIwNSwyMjAsNTcsLjkpO2JhY2tncm91bmQ6cmdiYSgyMDUsMjIwLDU3LC4xKTtjb2xvcjojY2RkYzM5fS5jYXBpYmFyYSAuZmxvYXQtYm94LWNvbnRhaW5lciAuZmxvYXQtYm94IHNwYW4uZGF0YS5zaGFwZS1iYXIuYy1saW1le2JhY2tncm91bmQ6I2NkZGMzOX0uY2FwaWJhcmEgLmZsb2F0LWJveC1jb250YWluZXIgLmZsb2F0LWJveCBzcGFuLmRhdGEuc2hhcGUtYmFyLW91dGxpbmVkLmMtbGltZXtiYWNrZ3JvdW5kOnJnYmEoMjA1LDIyMCw1NywuNSl9LmNhcGliYXJhIC5mbG9hdC1ib3gtY29udGFpbmVyIC5mbG9hdC1ib3ggLmRvdC5jLWxpbWV7YmFja2dyb3VuZDojY2RkYzM5fS5jYXBpYmFyYSAuZmxvYXQtYm94LWNvbnRhaW5lciAuZmxvYXQtYm94IC5kb3QuYy1saW1lLm91dGxpbmVke2JvcmRlcjoxcHggc29saWQgI2NkZGMzOTtib3gtc2hhZG93Omluc2V0IDAgMCAwIDFweCByZ2JhKDIwNSwyMjAsNTcsLjcpfS5jYXBpYmFyYSAuaGVhZGVyLXRvcCAudGFicy1jb250YWluZXIgLnRhYjpub3QoLmRpc2FibGVkKS5jLWxpbWUuYWN0aXZle2JhY2tncm91bmQ6cmdiYSgyMDUsMjIwLDU3LC43KTtib3JkZXItY29sb3I6cmdiYSgyMDUsMjIwLDU3LC43KTtjb2xvcjojZmZmfS5jYXBpYmFyYSAuaGVhZGVyLXRvcCAudGFicy1jb250YWluZXIgLnRhYjpub3QoLmRpc2FibGVkKS5jLWxpbWUuYWN0aXZlOmhvdmVye2JhY2tncm91bmQ6cmdiYSgyMDUsMjIwLDU3LC44KX0uY2FwaWJhcmEgLmhlYWRlci10b3AgLnRhYnMtY29udGFpbmVyIC50YWI6bm90KC5kaXNhYmxlZCkuYy1saW1lOmhvdmVye2JhY2tncm91bmQ6cmdiYSgyMDUsMjIwLDU3LC4yKTtib3JkZXItY29sb3I6cmdiYSgyMDUsMjIwLDU3LC45KX0uY2FwaWJhcmEgLmlucHV0LWJveCAubWluaS1pbnB1dC1zZWN0aW9uLS1pY29uLmMtbGltZXtiYWNrZ3JvdW5kOiNjZGRjMzl9LmNhcGliYXJhLmMteWVsbG93Om5vdCguZGFyay10aGVtZSkgOjotd2Via2l0LXNjcm9sbGJhci10aHVtYntiYWNrZ3JvdW5kOiNlYmRiNGZ9LmNhcGliYXJhLmMteWVsbG93Om5vdCguZGFyay10aGVtZSkgLmhlYWRlci10b3B7YmFja2dyb3VuZDojZmZmfS5jYXBpYmFyYS5jLXllbGxvdzpub3QoLmRhcmstdGhlbWUpIC5jb3JuZXJ7YmFja2dyb3VuZDojZmZmO2JvcmRlci1jb2xvcjojZmZmNWExfS5jYXBpYmFyYS5jLXllbGxvdzpub3QoLmRhcmstdGhlbWUpIC5jb250YWluZXItdGwgaGVhZGVye2JhY2tncm91bmQ6I2ZmZjtib3JkZXItYm90dG9tLWNvbG9yOiNmZmY1YTF9LmNhcGliYXJhLmMteWVsbG93Om5vdCguZGFyay10aGVtZSkgLmNvbnRhaW5lci10bCBoZWFkZXIgLm1lcy5tZXMtcmVkdWNlZDphZnRlcntiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCg5MGRlZyx0cmFuc3BhcmVudCwjZmZmKSFpbXBvcnRhbnR9LmNhcGliYXJhLmMteWVsbG93Om5vdCguZGFyay10aGVtZSkgbmF2LnJpZ2h0e2JvcmRlci1jb2xvcjojZmZmNWExfS5jYXBpYmFyYS5jLXllbGxvdy5kYXJrLXRoZW1lIC5oZWFkZXItdG9wLC5jYXBpYmFyYS5jLXllbGxvdy5kYXJrLXRoZW1lIG5hdi5yaWdodHtib3JkZXItY29sb3I6I2Q0YmUwMH0uY2FwaWJhcmEuYy15ZWxsb3cuZGFyay10aGVtZSAuY29udGFpbmVyLXRsIGhlYWRlciwuY2FwaWJhcmEuYy15ZWxsb3cuZGFyay10aGVtZSAuY29ybmVye2JvcmRlci1ib3R0b20tY29sb3I6I2Q0YmUwMH0uY2FwaWJhcmEuYy15ZWxsb3cuZGFyay10aGVtZSAucHJvZ3Jlc3MtYmFyLC5jYXBpYmFyYS5jLXllbGxvdyAucHJvZ3Jlc3MtYmFye2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjM1LDU5LC4yKSFpbXBvcnRhbnR9LmNhcGliYXJhLmMteWVsbG93LmRhcmstdGhlbWUgLnByb2dyZXNzLWJhcjphZnRlciwuY2FwaWJhcmEuYy15ZWxsb3cuZGFyay10aGVtZSAucHJvZ3Jlc3MtYmFyOmJlZm9yZSwuY2FwaWJhcmEuYy15ZWxsb3cgLnByb2dyZXNzLWJhcjphZnRlciwuY2FwaWJhcmEuYy15ZWxsb3cgLnByb2dyZXNzLWJhcjpiZWZvcmV7YmFja2dyb3VuZC1jb2xvcjojZmZlYjNiIWltcG9ydGFudH0uY2FwaWJhcmEuYy15ZWxsb3cuZGFyay10aGVtZSBzZWxlY3QudGFicy1zZWxlY3QsLmNhcGliYXJhLmMteWVsbG93IHNlbGVjdC50YWJzLXNlbGVjdHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDIzNSw1OSwuNykhaW1wb3J0YW50O2JvcmRlci1jb2xvcjojZmZlYjNiIWltcG9ydGFudH0uY2FwaWJhcmEuYy15ZWxsb3cuZGFyay10aGVtZSAudGltZSwuY2FwaWJhcmEuYy15ZWxsb3cgLnRpbWV7Ym9yZGVyLWNvbG9yOnJnYmEoMjU1LDIzNSw1OSwuNil9LmNhcGliYXJhLmMteWVsbG93LmRhcmstdGhlbWUgLnRpbWUgLnN5bWJvbCwuY2FwaWJhcmEuYy15ZWxsb3cgLnRpbWUgLnN5bWJvbHtjb2xvcjojZmZlYjNifS5jYXBpYmFyYS5jLXllbGxvdy5kYXJrLXRoZW1lIC50aW1lIGlucHV0OmFjdGl2ZSwuY2FwaWJhcmEuYy15ZWxsb3cuZGFyay10aGVtZSAudGltZSBpbnB1dDpmb2N1cywuY2FwaWJhcmEuYy15ZWxsb3cgLnRpbWUgaW5wdXQ6YWN0aXZlLC5jYXBpYmFyYS5jLXllbGxvdyAudGltZSBpbnB1dDpmb2N1c3tib3JkZXItY29sb3I6I2ZmZWIzYjtib3gtc2hhZG93OjAgNHB4IDZweCByZ2JhKDI1NSwyMzUsNTksLjIpfS5jYXBpYmFyYS5jLXllbGxvdy5kYXJrLXRoZW1lIC5pbnB1dC1ib3gsLmNhcGliYXJhLmMteWVsbG93LmRhcmstdGhlbWUgLmlucHV0LXNlY3Rpb24gaW5wdXQubmF2LWlucHV0LC5jYXBpYmFyYS5jLXllbGxvdyAuaW5wdXQtYm94LC5jYXBpYmFyYS5jLXllbGxvdyAuaW5wdXQtc2VjdGlvbiBpbnB1dC5uYXYtaW5wdXR7Ym9yZGVyLWNvbG9yOnJnYmEoMjU1LDIzNSw1OSwuNil9LmNhcGliYXJhLmMteWVsbG93LmRhcmstdGhlbWUgLmlucHV0LXNlY3Rpb24gaW5wdXQubmF2LWlucHV0OmFjdGl2ZSwuY2FwaWJhcmEuYy15ZWxsb3cuZGFyay10aGVtZSAuaW5wdXQtc2VjdGlvbiBpbnB1dC5uYXYtaW5wdXQ6Zm9jdXMsLmNhcGliYXJhLmMteWVsbG93IC5pbnB1dC1zZWN0aW9uIGlucHV0Lm5hdi1pbnB1dDphY3RpdmUsLmNhcGliYXJhLmMteWVsbG93IC5pbnB1dC1zZWN0aW9uIGlucHV0Lm5hdi1pbnB1dDpmb2N1c3tib3JkZXItY29sb3I6I2ZmZWIzYjtib3gtc2hhZG93OjAgNHB4IDZweCByZ2JhKDI1NSwyMzUsNTksLjIpfS5jYXBpYmFyYS5jLXllbGxvdy5kYXJrLXRoZW1lIC5pbnB1dC1zZWN0aW9uLm1zai1pbnB1dC1jb250YWluZXIgdGV4dGFyZWEubXNqLC5jYXBpYmFyYS5jLXllbGxvdyAuaW5wdXQtc2VjdGlvbi5tc2otaW5wdXQtY29udGFpbmVyIHRleHRhcmVhLm1zantib3JkZXI6MnB4IHNvbGlkICNmZmViM2J9LmNhcGliYXJhLmMteWVsbG93LmRhcmstdGhlbWUgLmlucHV0LXNlY3Rpb24ubXNqLWlucHV0LWNvbnRhaW5lciB0ZXh0YXJlYS5tc2o6YWN0aXZlLC5jYXBpYmFyYS5jLXllbGxvdy5kYXJrLXRoZW1lIC5pbnB1dC1zZWN0aW9uLm1zai1pbnB1dC1jb250YWluZXIgdGV4dGFyZWEubXNqOmZvY3VzLC5jYXBpYmFyYS5jLXllbGxvdyAuaW5wdXQtc2VjdGlvbi5tc2otaW5wdXQtY29udGFpbmVyIHRleHRhcmVhLm1zajphY3RpdmUsLmNhcGliYXJhLmMteWVsbG93IC5pbnB1dC1zZWN0aW9uLm1zai1pbnB1dC1jb250YWluZXIgdGV4dGFyZWEubXNqOmZvY3Vze2JveC1zaGFkb3c6MCA0cHggNnB4IHJnYmEoMjU1LDIzNSw1OSwuMil9LmNhcGliYXJhLmMteWVsbG93IC5idG4tcmFpc2VkLC5jYXBpYmFyYS5jLXllbGxvdy5kYXJrLXRoZW1lIC5idG4tcmFpc2Vke2JvcmRlci1jb2xvcjojZmZlYjNiO2JhY2tncm91bmQ6cmdiYSgyNTUsMjM1LDU5LC44KX0uY2FwaWJhcmEuYy15ZWxsb3cgLmJ0bi1vdXRsaW5lLC5jYXBpYmFyYS5jLXllbGxvdy5kYXJrLXRoZW1lIC5idG4tb3V0bGluZXtib3JkZXItY29sb3I6I2ZmZWIzYjtjb2xvcjojZmZlYjNifS5jYXBpYmFyYS5jLXllbGxvdy5kYXJrLXRoZW1lIC5zZWxlY3QtY29udGFpbmVyIC5zZWxlY3RlZC1kYXksLmNhcGliYXJhLmMteWVsbG93IC5zZWxlY3QtY29udGFpbmVyIC5zZWxlY3RlZC1kYXl7YmFja2dyb3VuZDpyZ2JhKDI1NSwyMzUsNTksLjMpO2JveC1zaGFkb3c6aW5zZXQgMCAwIDEwcHggcmdiYSgyNTUsMjM1LDU5LC41KX0uY2FwaWJhcmEgLmMteWVsbG93LS1iYWNrZ3JvdW5ke2JhY2tncm91bmQ6I2ZmZWIzYiFpbXBvcnRhbnR9LmNhcGliYXJhIC5jLXllbGxvdy1kLS1iYWNrZ3JvdW5ke2JhY2tncm91bmQ6I2VlZDUwMCFpbXBvcnRhbnR9LmNhcGliYXJhIC5jLXllbGxvdy1sLS1iYWNrZ3JvdW5ke2JhY2tncm91bmQ6I2ZmZjM4OCFpbXBvcnRhbnR9LmNhcGliYXJhIC5jLXllbGxvdy0tdGV4dHtjb2xvcjojZmZlYjNiIWltcG9ydGFudH0uY2FwaWJhcmEgLmMteWVsbG93LWQtLXRleHR7Y29sb3I6I2VlZDUwMCFpbXBvcnRhbnR9LmNhcGliYXJhIC5jLXllbGxvdy1sLS10ZXh0e2NvbG9yOiNmZmYzODghaW1wb3J0YW50fS5jYXBpYmFyYSAuZGV0YWlsLWRheSAubGlzdC1kZXRhaWwgLml0ZW0tZGV0YWlsLmMteWVsbG93e2JhY2tncm91bmQ6cmdiYSgyNTUsMjM1LDU5LC4yKTtib3JkZXI6MXB4IHNvbGlkICNmZmViM2J9LmNhcGliYXJhIC5kZXRhaWwtZGF5IC5saXN0LWRldGFpbCAuaXRlbS1kZXRhaWwuYy15ZWxsb3cgLmxlZnQtaWNvbntiYWNrZ3JvdW5kOiNmZmViM2J9LmNhcGliYXJhIC5kZXRhaWwtZGF5IC5saXN0LWRldGFpbCAuaXRlbS1kZXRhaWwuYy15ZWxsb3cgLmxlZnQtaWNvbi5vdXRsaW5lZHtib3JkZXI6MXB4IHNvbGlkICNmZmViM2I7Ym94LXNoYWRvdzppbnNldCAwIDAgMCAxcHggcmdiYSgyNTUsMjM1LDU5LC43KX0uY2FwaWJhcmEgLmRldGFpbC1kYXkgLmxpc3QtZGV0YWlsIC5pdGVtLWRldGFpbC5jLXllbGxvdyAubmFtZXtjb2xvcjojZmZlYjNifS5jYXBpYmFyYSAuZmxvYXQtYm94LWNvbnRhaW5lciAuZmxvYXQtYm94IHNwYW4uZGF0YS5jLXllbGxvd3tiYWNrZ3JvdW5kOnJnYmEoMjU1LDIzNSw1OSwuOCl9LmNhcGliYXJhIC5mbG9hdC1ib3gtY29udGFpbmVyIC5mbG9hdC1ib3ggc3Bhbi5kYXRhLnNoYXBlLW91dGxpbmVkLmMteWVsbG93e2JvcmRlci1jb2xvcjpyZ2JhKDI1NSwyMzUsNTksLjkpO2JhY2tncm91bmQ6cmdiYSgyNTUsMjM1LDU5LC4xKTtjb2xvcjojZmZlYjNifS5jYXBpYmFyYSAuZmxvYXQtYm94LWNvbnRhaW5lciAuZmxvYXQtYm94IHNwYW4uZGF0YS5zaGFwZS1iYXIuYy15ZWxsb3d7YmFja2dyb3VuZDojZmZlYjNifS5jYXBpYmFyYSAuZmxvYXQtYm94LWNvbnRhaW5lciAuZmxvYXQtYm94IHNwYW4uZGF0YS5zaGFwZS1iYXItb3V0bGluZWQuYy15ZWxsb3d7YmFja2dyb3VuZDpyZ2JhKDI1NSwyMzUsNTksLjUpfS5jYXBpYmFyYSAuZmxvYXQtYm94LWNvbnRhaW5lciAuZmxvYXQtYm94IC5kb3QuYy15ZWxsb3d7YmFja2dyb3VuZDojZmZlYjNifS5jYXBpYmFyYSAuZmxvYXQtYm94LWNvbnRhaW5lciAuZmxvYXQtYm94IC5kb3QuYy15ZWxsb3cub3V0bGluZWR7Ym9yZGVyOjFweCBzb2xpZCAjZmZlYjNiO2JveC1zaGFkb3c6aW5zZXQgMCAwIDAgMXB4IHJnYmEoMjU1LDIzNSw1OSwuNyl9LmNhcGliYXJhIC5oZWFkZXItdG9wIC50YWJzLWNvbnRhaW5lciAudGFiOm5vdCguZGlzYWJsZWQpLmMteWVsbG93LmFjdGl2ZXtiYWNrZ3JvdW5kOnJnYmEoMjU1LDIzNSw1OSwuNyk7Ym9yZGVyLWNvbG9yOnJnYmEoMjU1LDIzNSw1OSwuNyk7Y29sb3I6I2ZmZn0uY2FwaWJhcmEgLmhlYWRlci10b3AgLnRhYnMtY29udGFpbmVyIC50YWI6bm90KC5kaXNhYmxlZCkuYy15ZWxsb3cuYWN0aXZlOmhvdmVye2JhY2tncm91bmQ6cmdiYSgyNTUsMjM1LDU5LC44KX0uY2FwaWJhcmEgLmhlYWRlci10b3AgLnRhYnMtY29udGFpbmVyIC50YWI6bm90KC5kaXNhYmxlZCkuYy15ZWxsb3c6aG92ZXJ7YmFja2dyb3VuZDpyZ2JhKDI1NSwyMzUsNTksLjIpO2JvcmRlci1jb2xvcjpyZ2JhKDI1NSwyMzUsNTksLjkpfS5jYXBpYmFyYSAuaW5wdXQtYm94IC5taW5pLWlucHV0LXNlY3Rpb24tLWljb24uYy15ZWxsb3d7YmFja2dyb3VuZDojZmZlYjNifS5jYXBpYmFyYS5jLWFtYmVyOm5vdCguZGFyay10aGVtZSkgOjotd2Via2l0LXNjcm9sbGJhci10aHVtYntiYWNrZ3JvdW5kOiNlNmI1MjB9LmNhcGliYXJhLmMtYW1iZXI6bm90KC5kYXJrLXRoZW1lKSAuaGVhZGVyLXRvcHtiYWNrZ3JvdW5kOiNmNGVmZGV9LmNhcGliYXJhLmMtYW1iZXI6bm90KC5kYXJrLXRoZW1lKSAuY29ybmVye2JhY2tncm91bmQ6I2Y0ZWZkZTtib3JkZXItY29sb3I6I2ZmZGI2ZH0uY2FwaWJhcmEuYy1hbWJlcjpub3QoLmRhcmstdGhlbWUpIC5jb250YWluZXItdGwgaGVhZGVye2JhY2tncm91bmQ6I2Y0ZWZkZTtib3JkZXItYm90dG9tLWNvbG9yOiNmZmRiNmR9LmNhcGliYXJhLmMtYW1iZXI6bm90KC5kYXJrLXRoZW1lKSAuY29udGFpbmVyLXRsIGhlYWRlciAubWVzLm1lcy1yZWR1Y2VkOmFmdGVye2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDkwZGVnLHRyYW5zcGFyZW50LCNmZmY0ZDMpIWltcG9ydGFudH0uY2FwaWJhcmEuYy1hbWJlcjpub3QoLmRhcmstdGhlbWUpIG5hdi5yaWdodHtib3JkZXItY29sb3I6I2ZmZGI2ZH0uY2FwaWJhcmEuYy1hbWJlci5kYXJrLXRoZW1lIC5oZWFkZXItdG9wLC5jYXBpYmFyYS5jLWFtYmVyLmRhcmstdGhlbWUgbmF2LnJpZ2h0e2JvcmRlci1jb2xvcjojYTA3ODAwfS5jYXBpYmFyYS5jLWFtYmVyLmRhcmstdGhlbWUgLmNvbnRhaW5lci10bCBoZWFkZXIsLmNhcGliYXJhLmMtYW1iZXIuZGFyay10aGVtZSAuY29ybmVye2JvcmRlci1ib3R0b20tY29sb3I6I2EwNzgwMH0uY2FwaWJhcmEuYy1hbWJlci5kYXJrLXRoZW1lIC5wcm9ncmVzcy1iYXIsLmNhcGliYXJhLmMtYW1iZXIgLnByb2dyZXNzLWJhcntiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDE5Myw3LC4yKSFpbXBvcnRhbnR9LmNhcGliYXJhLmMtYW1iZXIuZGFyay10aGVtZSAucHJvZ3Jlc3MtYmFyOmFmdGVyLC5jYXBpYmFyYS5jLWFtYmVyLmRhcmstdGhlbWUgLnByb2dyZXNzLWJhcjpiZWZvcmUsLmNhcGliYXJhLmMtYW1iZXIgLnByb2dyZXNzLWJhcjphZnRlciwuY2FwaWJhcmEuYy1hbWJlciAucHJvZ3Jlc3MtYmFyOmJlZm9yZXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmMxMDchaW1wb3J0YW50fS5jYXBpYmFyYS5jLWFtYmVyLmRhcmstdGhlbWUgc2VsZWN0LnRhYnMtc2VsZWN0LC5jYXBpYmFyYS5jLWFtYmVyIHNlbGVjdC50YWJzLXNlbGVjdHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDE5Myw3LC43KSFpbXBvcnRhbnQ7Ym9yZGVyLWNvbG9yOiNmZmMxMDchaW1wb3J0YW50fS5jYXBpYmFyYS5jLWFtYmVyLmRhcmstdGhlbWUgLnRpbWUsLmNhcGliYXJhLmMtYW1iZXIgLnRpbWV7Ym9yZGVyLWNvbG9yOnJnYmEoMjU1LDE5Myw3LC42KX0uY2FwaWJhcmEuYy1hbWJlci5kYXJrLXRoZW1lIC50aW1lIC5zeW1ib2wsLmNhcGliYXJhLmMtYW1iZXIgLnRpbWUgLnN5bWJvbHtjb2xvcjojZmZjMTA3fS5jYXBpYmFyYS5jLWFtYmVyLmRhcmstdGhlbWUgLnRpbWUgaW5wdXQ6YWN0aXZlLC5jYXBpYmFyYS5jLWFtYmVyLmRhcmstdGhlbWUgLnRpbWUgaW5wdXQ6Zm9jdXMsLmNhcGliYXJhLmMtYW1iZXIgLnRpbWUgaW5wdXQ6YWN0aXZlLC5jYXBpYmFyYS5jLWFtYmVyIC50aW1lIGlucHV0OmZvY3Vze2JvcmRlci1jb2xvcjojZmZjMTA3O2JveC1zaGFkb3c6MCA0cHggNnB4IHJnYmEoMjU1LDE5Myw3LC4yKX0uY2FwaWJhcmEuYy1hbWJlci5kYXJrLXRoZW1lIC5pbnB1dC1ib3gsLmNhcGliYXJhLmMtYW1iZXIuZGFyay10aGVtZSAuaW5wdXQtc2VjdGlvbiBpbnB1dC5uYXYtaW5wdXQsLmNhcGliYXJhLmMtYW1iZXIgLmlucHV0LWJveCwuY2FwaWJhcmEuYy1hbWJlciAuaW5wdXQtc2VjdGlvbiBpbnB1dC5uYXYtaW5wdXR7Ym9yZGVyLWNvbG9yOnJnYmEoMjU1LDE5Myw3LC42KX0uY2FwaWJhcmEuYy1hbWJlci5kYXJrLXRoZW1lIC5pbnB1dC1zZWN0aW9uIGlucHV0Lm5hdi1pbnB1dDphY3RpdmUsLmNhcGliYXJhLmMtYW1iZXIuZGFyay10aGVtZSAuaW5wdXQtc2VjdGlvbiBpbnB1dC5uYXYtaW5wdXQ6Zm9jdXMsLmNhcGliYXJhLmMtYW1iZXIgLmlucHV0LXNlY3Rpb24gaW5wdXQubmF2LWlucHV0OmFjdGl2ZSwuY2FwaWJhcmEuYy1hbWJlciAuaW5wdXQtc2VjdGlvbiBpbnB1dC5uYXYtaW5wdXQ6Zm9jdXN7Ym9yZGVyLWNvbG9yOiNmZmMxMDc7Ym94LXNoYWRvdzowIDRweCA2cHggcmdiYSgyNTUsMTkzLDcsLjIpfS5jYXBpYmFyYS5jLWFtYmVyLmRhcmstdGhlbWUgLmlucHV0LXNlY3Rpb24ubXNqLWlucHV0LWNvbnRhaW5lciB0ZXh0YXJlYS5tc2osLmNhcGliYXJhLmMtYW1iZXIgLmlucHV0LXNlY3Rpb24ubXNqLWlucHV0LWNvbnRhaW5lciB0ZXh0YXJlYS5tc2p7Ym9yZGVyOjJweCBzb2xpZCAjZmZjMTA3fS5jYXBpYmFyYS5jLWFtYmVyLmRhcmstdGhlbWUgLmlucHV0LXNlY3Rpb24ubXNqLWlucHV0LWNvbnRhaW5lciB0ZXh0YXJlYS5tc2o6YWN0aXZlLC5jYXBpYmFyYS5jLWFtYmVyLmRhcmstdGhlbWUgLmlucHV0LXNlY3Rpb24ubXNqLWlucHV0LWNvbnRhaW5lciB0ZXh0YXJlYS5tc2o6Zm9jdXMsLmNhcGliYXJhLmMtYW1iZXIgLmlucHV0LXNlY3Rpb24ubXNqLWlucHV0LWNvbnRhaW5lciB0ZXh0YXJlYS5tc2o6YWN0aXZlLC5jYXBpYmFyYS5jLWFtYmVyIC5pbnB1dC1zZWN0aW9uLm1zai1pbnB1dC1jb250YWluZXIgdGV4dGFyZWEubXNqOmZvY3Vze2JveC1zaGFkb3c6MCA0cHggNnB4IHJnYmEoMjU1LDE5Myw3LC4yKX0uY2FwaWJhcmEuYy1hbWJlciAuYnRuLXJhaXNlZCwuY2FwaWJhcmEuYy1hbWJlci5kYXJrLXRoZW1lIC5idG4tcmFpc2Vke2JvcmRlci1jb2xvcjojZmZjMTA3O2JhY2tncm91bmQ6cmdiYSgyNTUsMTkzLDcsLjgpfS5jYXBpYmFyYS5jLWFtYmVyIC5idG4tb3V0bGluZSwuY2FwaWJhcmEuYy1hbWJlci5kYXJrLXRoZW1lIC5idG4tb3V0bGluZXtib3JkZXItY29sb3I6I2ZmYzEwNztjb2xvcjojZmZjMTA3fS5jYXBpYmFyYS5jLWFtYmVyLmRhcmstdGhlbWUgLnNlbGVjdC1jb250YWluZXIgLnNlbGVjdGVkLWRheSwuY2FwaWJhcmEuYy1hbWJlciAuc2VsZWN0LWNvbnRhaW5lciAuc2VsZWN0ZWQtZGF5e2JhY2tncm91bmQ6cmdiYSgyNTUsMTkzLDcsLjMpO2JveC1zaGFkb3c6aW5zZXQgMCAwIDEwcHggcmdiYSgyNTUsMTkzLDcsLjUpfS5jYXBpYmFyYSAuYy1hbWJlci0tYmFja2dyb3VuZHtiYWNrZ3JvdW5kOiNmZmMxMDchaW1wb3J0YW50fS5jYXBpYmFyYSAuYy1hbWJlci1kLS1iYWNrZ3JvdW5ke2JhY2tncm91bmQ6I2JhOGIwMCFpbXBvcnRhbnR9LmNhcGliYXJhIC5jLWFtYmVyLWwtLWJhY2tncm91bmR7YmFja2dyb3VuZDojZmZkNDU0IWltcG9ydGFudH0uY2FwaWJhcmEgLmMtYW1iZXItLXRleHR7Y29sb3I6I2ZmYzEwNyFpbXBvcnRhbnR9LmNhcGliYXJhIC5jLWFtYmVyLWQtLXRleHR7Y29sb3I6I2JhOGIwMCFpbXBvcnRhbnR9LmNhcGliYXJhIC5jLWFtYmVyLWwtLXRleHR7Y29sb3I6I2ZmZDQ1NCFpbXBvcnRhbnR9LmNhcGliYXJhIC5kZXRhaWwtZGF5IC5saXN0LWRldGFpbCAuaXRlbS1kZXRhaWwuYy1hbWJlcntiYWNrZ3JvdW5kOnJnYmEoMjU1LDE5Myw3LC4yKTtib3JkZXI6MXB4IHNvbGlkICNmZmMxMDd9LmNhcGliYXJhIC5kZXRhaWwtZGF5IC5saXN0LWRldGFpbCAuaXRlbS1kZXRhaWwuYy1hbWJlciAubGVmdC1pY29ue2JhY2tncm91bmQ6I2ZmYzEwN30uY2FwaWJhcmEgLmRldGFpbC1kYXkgLmxpc3QtZGV0YWlsIC5pdGVtLWRldGFpbC5jLWFtYmVyIC5sZWZ0LWljb24ub3V0bGluZWR7Ym9yZGVyOjFweCBzb2xpZCAjZmZjMTA3O2JveC1zaGFkb3c6aW5zZXQgMCAwIDAgMXB4IHJnYmEoMjU1LDE5Myw3LC43KX0uY2FwaWJhcmEgLmRldGFpbC1kYXkgLmxpc3QtZGV0YWlsIC5pdGVtLWRldGFpbC5jLWFtYmVyIC5uYW1le2NvbG9yOiNmZmMxMDd9LmNhcGliYXJhIC5mbG9hdC1ib3gtY29udGFpbmVyIC5mbG9hdC1ib3ggc3Bhbi5kYXRhLmMtYW1iZXJ7YmFja2dyb3VuZDpyZ2JhKDI1NSwxOTMsNywuOCl9LmNhcGliYXJhIC5mbG9hdC1ib3gtY29udGFpbmVyIC5mbG9hdC1ib3ggc3Bhbi5kYXRhLnNoYXBlLW91dGxpbmVkLmMtYW1iZXJ7Ym9yZGVyLWNvbG9yOnJnYmEoMjU1LDE5Myw3LC45KTtiYWNrZ3JvdW5kOnJnYmEoMjU1LDE5Myw3LC4xKTtjb2xvcjojZmZjMTA3fS5jYXBpYmFyYSAuZmxvYXQtYm94LWNvbnRhaW5lciAuZmxvYXQtYm94IHNwYW4uZGF0YS5zaGFwZS1iYXIuYy1hbWJlcntiYWNrZ3JvdW5kOiNmZmMxMDd9LmNhcGliYXJhIC5mbG9hdC1ib3gtY29udGFpbmVyIC5mbG9hdC1ib3ggc3Bhbi5kYXRhLnNoYXBlLWJhci1vdXRsaW5lZC5jLWFtYmVye2JhY2tncm91bmQ6cmdiYSgyNTUsMTkzLDcsLjUpfS5jYXBpYmFyYSAuZmxvYXQtYm94LWNvbnRhaW5lciAuZmxvYXQtYm94IC5kb3QuYy1hbWJlcntiYWNrZ3JvdW5kOiNmZmMxMDd9LmNhcGliYXJhIC5mbG9hdC1ib3gtY29udGFpbmVyIC5mbG9hdC1ib3ggLmRvdC5jLWFtYmVyLm91dGxpbmVke2JvcmRlcjoxcHggc29saWQgI2ZmYzEwNztib3gtc2hhZG93Omluc2V0IDAgMCAwIDFweCByZ2JhKDI1NSwxOTMsNywuNyl9LmNhcGliYXJhIC5oZWFkZXItdG9wIC50YWJzLWNvbnRhaW5lciAudGFiOm5vdCguZGlzYWJsZWQpLmMtYW1iZXIuYWN0aXZle2JhY2tncm91bmQ6cmdiYSgyNTUsMTkzLDcsLjcpO2JvcmRlci1jb2xvcjpyZ2JhKDI1NSwxOTMsNywuNyk7Y29sb3I6I2ZmZn0uY2FwaWJhcmEgLmhlYWRlci10b3AgLnRhYnMtY29udGFpbmVyIC50YWI6bm90KC5kaXNhYmxlZCkuYy1hbWJlci5hY3RpdmU6aG92ZXJ7YmFja2dyb3VuZDpyZ2JhKDI1NSwxOTMsNywuOCl9LmNhcGliYXJhIC5oZWFkZXItdG9wIC50YWJzLWNvbnRhaW5lciAudGFiOm5vdCguZGlzYWJsZWQpLmMtYW1iZXI6aG92ZXJ7YmFja2dyb3VuZDpyZ2JhKDI1NSwxOTMsNywuMik7Ym9yZGVyLWNvbG9yOnJnYmEoMjU1LDE5Myw3LC45KX0uY2FwaWJhcmEgLmlucHV0LWJveCAubWluaS1pbnB1dC1zZWN0aW9uLS1pY29uLmMtYW1iZXJ7YmFja2dyb3VuZDojZmZjMTA3fS5jYXBpYmFyYS5jLW9yYW5nZTpub3QoLmRhcmstdGhlbWUpIDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWJ7YmFja2dyb3VuZDojZTY5MzFhfS5jYXBpYmFyYS5jLW9yYW5nZTpub3QoLmRhcmstdGhlbWUpIC5oZWFkZXItdG9we2JhY2tncm91bmQ6I2YyZThkOX0uY2FwaWJhcmEuYy1vcmFuZ2U6bm90KC5kYXJrLXRoZW1lKSAuY29ybmVye2JhY2tncm91bmQ6I2YyZThkOTtib3JkZXItY29sb3I6I2ZmYzE2Nn0uY2FwaWJhcmEuYy1vcmFuZ2U6bm90KC5kYXJrLXRoZW1lKSAuY29udGFpbmVyLXRsIGhlYWRlcntiYWNrZ3JvdW5kOiNmMmU4ZDk7Ym9yZGVyLWJvdHRvbS1jb2xvcjojZmZjMTY2fS5jYXBpYmFyYS5jLW9yYW5nZTpub3QoLmRhcmstdGhlbWUpIC5jb250YWluZXItdGwgaGVhZGVyIC5tZXMubWVzLXJlZHVjZWQ6YWZ0ZXJ7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoOTBkZWcsdHJhbnNwYXJlbnQsI2ZmZWFjYykhaW1wb3J0YW50fS5jYXBpYmFyYS5jLW9yYW5nZTpub3QoLmRhcmstdGhlbWUpIG5hdi5yaWdodHtib3JkZXItY29sb3I6I2ZmYzE2Nn0uY2FwaWJhcmEuYy1vcmFuZ2UuZGFyay10aGVtZSAuaGVhZGVyLXRvcCwuY2FwaWJhcmEuYy1vcmFuZ2UuZGFyay10aGVtZSBuYXYucmlnaHR7Ym9yZGVyLWNvbG9yOiM5OTViMDB9LmNhcGliYXJhLmMtb3JhbmdlLmRhcmstdGhlbWUgLmNvbnRhaW5lci10bCBoZWFkZXIsLmNhcGliYXJhLmMtb3JhbmdlLmRhcmstdGhlbWUgLmNvcm5lcntib3JkZXItYm90dG9tLWNvbG9yOiM5OTViMDB9LmNhcGliYXJhLmMtb3JhbmdlLmRhcmstdGhlbWUgLnByb2dyZXNzLWJhciwuY2FwaWJhcmEuYy1vcmFuZ2UgLnByb2dyZXNzLWJhcntiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDE1MiwwLC4yKSFpbXBvcnRhbnR9LmNhcGliYXJhLmMtb3JhbmdlLmRhcmstdGhlbWUgLnByb2dyZXNzLWJhcjphZnRlciwuY2FwaWJhcmEuYy1vcmFuZ2UuZGFyay10aGVtZSAucHJvZ3Jlc3MtYmFyOmJlZm9yZSwuY2FwaWJhcmEuYy1vcmFuZ2UgLnByb2dyZXNzLWJhcjphZnRlciwuY2FwaWJhcmEuYy1vcmFuZ2UgLnByb2dyZXNzLWJhcjpiZWZvcmV7YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwIWltcG9ydGFudH0uY2FwaWJhcmEuYy1vcmFuZ2UuZGFyay10aGVtZSBzZWxlY3QudGFicy1zZWxlY3QsLmNhcGliYXJhLmMtb3JhbmdlIHNlbGVjdC50YWJzLXNlbGVjdHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDE1MiwwLC43KSFpbXBvcnRhbnQ7Ym9yZGVyLWNvbG9yOiNmZjk4MDAhaW1wb3J0YW50fS5jYXBpYmFyYS5jLW9yYW5nZS5kYXJrLXRoZW1lIC50aW1lLC5jYXBpYmFyYS5jLW9yYW5nZSAudGltZXtib3JkZXItY29sb3I6cmdiYSgyNTUsMTUyLDAsLjYpfS5jYXBpYmFyYS5jLW9yYW5nZS5kYXJrLXRoZW1lIC50aW1lIC5zeW1ib2wsLmNhcGliYXJhLmMtb3JhbmdlIC50aW1lIC5zeW1ib2x7Y29sb3I6I2ZmOTgwMH0uY2FwaWJhcmEuYy1vcmFuZ2UuZGFyay10aGVtZSAudGltZSBpbnB1dDphY3RpdmUsLmNhcGliYXJhLmMtb3JhbmdlLmRhcmstdGhlbWUgLnRpbWUgaW5wdXQ6Zm9jdXMsLmNhcGliYXJhLmMtb3JhbmdlIC50aW1lIGlucHV0OmFjdGl2ZSwuY2FwaWJhcmEuYy1vcmFuZ2UgLnRpbWUgaW5wdXQ6Zm9jdXN7Ym9yZGVyLWNvbG9yOiNmZjk4MDA7Ym94LXNoYWRvdzowIDRweCA2cHggcmdiYSgyNTUsMTUyLDAsLjIpfS5jYXBpYmFyYS5jLW9yYW5nZS5kYXJrLXRoZW1lIC5pbnB1dC1ib3gsLmNhcGliYXJhLmMtb3JhbmdlLmRhcmstdGhlbWUgLmlucHV0LXNlY3Rpb24gaW5wdXQubmF2LWlucHV0LC5jYXBpYmFyYS5jLW9yYW5nZSAuaW5wdXQtYm94LC5jYXBpYmFyYS5jLW9yYW5nZSAuaW5wdXQtc2VjdGlvbiBpbnB1dC5uYXYtaW5wdXR7Ym9yZGVyLWNvbG9yOnJnYmEoMjU1LDE1MiwwLC42KX0uY2FwaWJhcmEuYy1vcmFuZ2UuZGFyay10aGVtZSAuaW5wdXQtc2VjdGlvbiBpbnB1dC5uYXYtaW5wdXQ6YWN0aXZlLC5jYXBpYmFyYS5jLW9yYW5nZS5kYXJrLXRoZW1lIC5pbnB1dC1zZWN0aW9uIGlucHV0Lm5hdi1pbnB1dDpmb2N1cywuY2FwaWJhcmEuYy1vcmFuZ2UgLmlucHV0LXNlY3Rpb24gaW5wdXQubmF2LWlucHV0OmFjdGl2ZSwuY2FwaWJhcmEuYy1vcmFuZ2UgLmlucHV0LXNlY3Rpb24gaW5wdXQubmF2LWlucHV0OmZvY3Vze2JvcmRlci1jb2xvcjojZmY5ODAwO2JveC1zaGFkb3c6MCA0cHggNnB4IHJnYmEoMjU1LDE1MiwwLC4yKX0uY2FwaWJhcmEuYy1vcmFuZ2UuZGFyay10aGVtZSAuaW5wdXQtc2VjdGlvbi5tc2otaW5wdXQtY29udGFpbmVyIHRleHRhcmVhLm1zaiwuY2FwaWJhcmEuYy1vcmFuZ2UgLmlucHV0LXNlY3Rpb24ubXNqLWlucHV0LWNvbnRhaW5lciB0ZXh0YXJlYS5tc2p7Ym9yZGVyOjJweCBzb2xpZCAjZmY5ODAwfS5jYXBpYmFyYS5jLW9yYW5nZS5kYXJrLXRoZW1lIC5pbnB1dC1zZWN0aW9uLm1zai1pbnB1dC1jb250YWluZXIgdGV4dGFyZWEubXNqOmFjdGl2ZSwuY2FwaWJhcmEuYy1vcmFuZ2UuZGFyay10aGVtZSAuaW5wdXQtc2VjdGlvbi5tc2otaW5wdXQtY29udGFpbmVyIHRleHRhcmVhLm1zajpmb2N1cywuY2FwaWJhcmEuYy1vcmFuZ2UgLmlucHV0LXNlY3Rpb24ubXNqLWlucHV0LWNvbnRhaW5lciB0ZXh0YXJlYS5tc2o6YWN0aXZlLC5jYXBpYmFyYS5jLW9yYW5nZSAuaW5wdXQtc2VjdGlvbi5tc2otaW5wdXQtY29udGFpbmVyIHRleHRhcmVhLm1zajpmb2N1c3tib3gtc2hhZG93OjAgNHB4IDZweCByZ2JhKDI1NSwxNTIsMCwuMil9LmNhcGliYXJhLmMtb3JhbmdlIC5idG4tcmFpc2VkLC5jYXBpYmFyYS5jLW9yYW5nZS5kYXJrLXRoZW1lIC5idG4tcmFpc2Vke2JvcmRlci1jb2xvcjojZmY5ODAwO2JhY2tncm91bmQ6cmdiYSgyNTUsMTUyLDAsLjgpfS5jYXBpYmFyYS5jLW9yYW5nZSAuYnRuLW91dGxpbmUsLmNhcGliYXJhLmMtb3JhbmdlLmRhcmstdGhlbWUgLmJ0bi1vdXRsaW5le2JvcmRlci1jb2xvcjojZmY5ODAwO2NvbG9yOiNmZjk4MDB9LmNhcGliYXJhLmMtb3JhbmdlLmRhcmstdGhlbWUgLnNlbGVjdC1jb250YWluZXIgLnNlbGVjdGVkLWRheSwuY2FwaWJhcmEuYy1vcmFuZ2UgLnNlbGVjdC1jb250YWluZXIgLnNlbGVjdGVkLWRheXtiYWNrZ3JvdW5kOnJnYmEoMjU1LDE1MiwwLC4zKTtib3gtc2hhZG93Omluc2V0IDAgMCAxMHB4IHJnYmEoMjU1LDE1MiwwLC41KX0uY2FwaWJhcmEgLmMtb3JhbmdlLS1iYWNrZ3JvdW5ke2JhY2tncm91bmQ6I2ZmOTgwMCFpbXBvcnRhbnR9LmNhcGliYXJhIC5jLW9yYW5nZS1kLS1iYWNrZ3JvdW5ke2JhY2tncm91bmQ6I2IzNmEwMCFpbXBvcnRhbnR9LmNhcGliYXJhIC5jLW9yYW5nZS1sLS1iYWNrZ3JvdW5ke2JhY2tncm91bmQ6I2ZmYjc0ZCFpbXBvcnRhbnR9LmNhcGliYXJhIC5jLW9yYW5nZS0tdGV4dHtjb2xvcjojZmY5ODAwIWltcG9ydGFudH0uY2FwaWJhcmEgLmMtb3JhbmdlLWQtLXRleHR7Y29sb3I6I2IzNmEwMCFpbXBvcnRhbnR9LmNhcGliYXJhIC5jLW9yYW5nZS1sLS10ZXh0e2NvbG9yOiNmZmI3NGQhaW1wb3J0YW50fS5jYXBpYmFyYSAuZGV0YWlsLWRheSAubGlzdC1kZXRhaWwgLml0ZW0tZGV0YWlsLmMtb3Jhbmdle2JhY2tncm91bmQ6cmdiYSgyNTUsMTUyLDAsLjIpO2JvcmRlcjoxcHggc29saWQgI2ZmOTgwMH0uY2FwaWJhcmEgLmRldGFpbC1kYXkgLmxpc3QtZGV0YWlsIC5pdGVtLWRldGFpbC5jLW9yYW5nZSAubGVmdC1pY29ue2JhY2tncm91bmQ6I2ZmOTgwMH0uY2FwaWJhcmEgLmRldGFpbC1kYXkgLmxpc3QtZGV0YWlsIC5pdGVtLWRldGFpbC5jLW9yYW5nZSAubGVmdC1pY29uLm91dGxpbmVke2JvcmRlcjoxcHggc29saWQgI2ZmOTgwMDtib3gtc2hhZG93Omluc2V0IDAgMCAwIDFweCByZ2JhKDI1NSwxNTIsMCwuNyl9LmNhcGliYXJhIC5kZXRhaWwtZGF5IC5saXN0LWRldGFpbCAuaXRlbS1kZXRhaWwuYy1vcmFuZ2UgLm5hbWV7Y29sb3I6I2ZmOTgwMH0uY2FwaWJhcmEgLmZsb2F0LWJveC1jb250YWluZXIgLmZsb2F0LWJveCBzcGFuLmRhdGEuYy1vcmFuZ2V7YmFja2dyb3VuZDpyZ2JhKDI1NSwxNTIsMCwuOCl9LmNhcGliYXJhIC5mbG9hdC1ib3gtY29udGFpbmVyIC5mbG9hdC1ib3ggc3Bhbi5kYXRhLnNoYXBlLW91dGxpbmVkLmMtb3Jhbmdle2JvcmRlci1jb2xvcjpyZ2JhKDI1NSwxNTIsMCwuOSk7YmFja2dyb3VuZDpyZ2JhKDI1NSwxNTIsMCwuMSk7Y29sb3I6I2ZmOTgwMH0uY2FwaWJhcmEgLmZsb2F0LWJveC1jb250YWluZXIgLmZsb2F0LWJveCBzcGFuLmRhdGEuc2hhcGUtYmFyLmMtb3Jhbmdle2JhY2tncm91bmQ6I2ZmOTgwMH0uY2FwaWJhcmEgLmZsb2F0LWJveC1jb250YWluZXIgLmZsb2F0LWJveCBzcGFuLmRhdGEuc2hhcGUtYmFyLW91dGxpbmVkLmMtb3Jhbmdle2JhY2tncm91bmQ6cmdiYSgyNTUsMTUyLDAsLjUpfS5jYXBpYmFyYSAuZmxvYXQtYm94LWNvbnRhaW5lciAuZmxvYXQtYm94IC5kb3QuYy1vcmFuZ2V7YmFja2dyb3VuZDojZmY5ODAwfS5jYXBpYmFyYSAuZmxvYXQtYm94LWNvbnRhaW5lciAuZmxvYXQtYm94IC5kb3QuYy1vcmFuZ2Uub3V0bGluZWR7Ym9yZGVyOjFweCBzb2xpZCAjZmY5ODAwO2JveC1zaGFkb3c6aW5zZXQgMCAwIDAgMXB4IHJnYmEoMjU1LDE1MiwwLC43KX0uY2FwaWJhcmEgLmhlYWRlci10b3AgLnRhYnMtY29udGFpbmVyIC50YWI6bm90KC5kaXNhYmxlZCkuYy1vcmFuZ2UuYWN0aXZle2JhY2tncm91bmQ6cmdiYSgyNTUsMTUyLDAsLjcpO2JvcmRlci1jb2xvcjpyZ2JhKDI1NSwxNTIsMCwuNyk7Y29sb3I6I2ZmZn0uY2FwaWJhcmEgLmhlYWRlci10b3AgLnRhYnMtY29udGFpbmVyIC50YWI6bm90KC5kaXNhYmxlZCkuYy1vcmFuZ2UuYWN0aXZlOmhvdmVye2JhY2tncm91bmQ6cmdiYSgyNTUsMTUyLDAsLjgpfS5jYXBpYmFyYSAuaGVhZGVyLXRvcCAudGFicy1jb250YWluZXIgLnRhYjpub3QoLmRpc2FibGVkKS5jLW9yYW5nZTpob3ZlcntiYWNrZ3JvdW5kOnJnYmEoMjU1LDE1MiwwLC4yKTtib3JkZXItY29sb3I6cmdiYSgyNTUsMTUyLDAsLjkpfS5jYXBpYmFyYSAuaW5wdXQtYm94IC5taW5pLWlucHV0LXNlY3Rpb24tLWljb24uYy1vcmFuZ2V7YmFja2dyb3VuZDojZmY5ODAwfS5jYXBpYmFyYS5jLWRlZXAtb3JhbmdlOm5vdCguZGFyay10aGVtZSkgOjotd2Via2l0LXNjcm9sbGJhci10aHVtYntiYWNrZ3JvdW5kOiNjZDU3MzN9LmNhcGliYXJhLmMtZGVlcC1vcmFuZ2U6bm90KC5kYXJrLXRoZW1lKSAuaGVhZGVyLXRvcHtiYWNrZ3JvdW5kOiNlZGUxZGV9LmNhcGliYXJhLmMtZGVlcC1vcmFuZ2U6bm90KC5kYXJrLXRoZW1lKSAuY29ybmVye2JhY2tncm91bmQ6I2VkZTFkZTtib3JkZXItY29sb3I6I2YwOTI3NX0uY2FwaWJhcmEuYy1kZWVwLW9yYW5nZTpub3QoLmRhcmstdGhlbWUpIC5jb250YWluZXItdGwgaGVhZGVye2JhY2tncm91bmQ6I2VkZTFkZTtib3JkZXItYm90dG9tLWNvbG9yOiNmMDkyNzV9LmNhcGliYXJhLmMtZGVlcC1vcmFuZ2U6bm90KC5kYXJrLXRoZW1lKSAuY29udGFpbmVyLXRsIGhlYWRlciAubWVzLm1lcy1yZWR1Y2VkOmFmdGVye2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDkwZGVnLHRyYW5zcGFyZW50LCNmYWRiZDEpIWltcG9ydGFudH0uY2FwaWJhcmEuYy1kZWVwLW9yYW5nZTpub3QoLmRhcmstdGhlbWUpIG5hdi5yaWdodHtib3JkZXItY29sb3I6I2YwOTI3NX0uY2FwaWJhcmEuYy1kZWVwLW9yYW5nZS5kYXJrLXRoZW1lIC5oZWFkZXItdG9wLC5jYXBpYmFyYS5jLWRlZXAtb3JhbmdlLmRhcmstdGhlbWUgbmF2LnJpZ2h0e2JvcmRlci1jb2xvcjojOGEyYzBmfS5jYXBpYmFyYS5jLWRlZXAtb3JhbmdlLmRhcmstdGhlbWUgLmNvbnRhaW5lci10bCBoZWFkZXIsLmNhcGliYXJhLmMtZGVlcC1vcmFuZ2UuZGFyay10aGVtZSAuY29ybmVye2JvcmRlci1ib3R0b20tY29sb3I6IzhhMmMwZn0uY2FwaWJhcmEuYy1kZWVwLW9yYW5nZS5kYXJrLXRoZW1lIC5wcm9ncmVzcy1iYXIsLmNhcGliYXJhLmMtZGVlcC1vcmFuZ2UgLnByb2dyZXNzLWJhcntiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjMwLDc0LDI1LC4yKSFpbXBvcnRhbnR9LmNhcGliYXJhLmMtZGVlcC1vcmFuZ2UuZGFyay10aGVtZSAucHJvZ3Jlc3MtYmFyOmFmdGVyLC5jYXBpYmFyYS5jLWRlZXAtb3JhbmdlLmRhcmstdGhlbWUgLnByb2dyZXNzLWJhcjpiZWZvcmUsLmNhcGliYXJhLmMtZGVlcC1vcmFuZ2UgLnByb2dyZXNzLWJhcjphZnRlciwuY2FwaWJhcmEuYy1kZWVwLW9yYW5nZSAucHJvZ3Jlc3MtYmFyOmJlZm9yZXtiYWNrZ3JvdW5kLWNvbG9yOiNlNjRhMTkhaW1wb3J0YW50fS5jYXBpYmFyYS5jLWRlZXAtb3JhbmdlLmRhcmstdGhlbWUgc2VsZWN0LnRhYnMtc2VsZWN0LC5jYXBpYmFyYS5jLWRlZXAtb3JhbmdlIHNlbGVjdC50YWJzLXNlbGVjdHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjMwLDc0LDI1LC43KSFpbXBvcnRhbnQ7Ym9yZGVyLWNvbG9yOiNlNjRhMTkhaW1wb3J0YW50fS5jYXBpYmFyYS5jLWRlZXAtb3JhbmdlLmRhcmstdGhlbWUgLnRpbWUsLmNhcGliYXJhLmMtZGVlcC1vcmFuZ2UgLnRpbWV7Ym9yZGVyLWNvbG9yOnJnYmEoMjMwLDc0LDI1LC42KX0uY2FwaWJhcmEuYy1kZWVwLW9yYW5nZS5kYXJrLXRoZW1lIC50aW1lIC5zeW1ib2wsLmNhcGliYXJhLmMtZGVlcC1vcmFuZ2UgLnRpbWUgLnN5bWJvbHtjb2xvcjojZTY0YTE5fS5jYXBpYmFyYS5jLWRlZXAtb3JhbmdlLmRhcmstdGhlbWUgLnRpbWUgaW5wdXQ6YWN0aXZlLC5jYXBpYmFyYS5jLWRlZXAtb3JhbmdlLmRhcmstdGhlbWUgLnRpbWUgaW5wdXQ6Zm9jdXMsLmNhcGliYXJhLmMtZGVlcC1vcmFuZ2UgLnRpbWUgaW5wdXQ6YWN0aXZlLC5jYXBpYmFyYS5jLWRlZXAtb3JhbmdlIC50aW1lIGlucHV0OmZvY3Vze2JvcmRlci1jb2xvcjojZTY0YTE5O2JveC1zaGFkb3c6MCA0cHggNnB4IHJnYmEoMjMwLDc0LDI1LC4yKX0uY2FwaWJhcmEuYy1kZWVwLW9yYW5nZS5kYXJrLXRoZW1lIC5pbnB1dC1ib3gsLmNhcGliYXJhLmMtZGVlcC1vcmFuZ2UuZGFyay10aGVtZSAuaW5wdXQtc2VjdGlvbiBpbnB1dC5uYXYtaW5wdXQsLmNhcGliYXJhLmMtZGVlcC1vcmFuZ2UgLmlucHV0LWJveCwuY2FwaWJhcmEuYy1kZWVwLW9yYW5nZSAuaW5wdXQtc2VjdGlvbiBpbnB1dC5uYXYtaW5wdXR7Ym9yZGVyLWNvbG9yOnJnYmEoMjMwLDc0LDI1LC42KX0uY2FwaWJhcmEuYy1kZWVwLW9yYW5nZS5kYXJrLXRoZW1lIC5pbnB1dC1zZWN0aW9uIGlucHV0Lm5hdi1pbnB1dDphY3RpdmUsLmNhcGliYXJhLmMtZGVlcC1vcmFuZ2UuZGFyay10aGVtZSAuaW5wdXQtc2VjdGlvbiBpbnB1dC5uYXYtaW5wdXQ6Zm9jdXMsLmNhcGliYXJhLmMtZGVlcC1vcmFuZ2UgLmlucHV0LXNlY3Rpb24gaW5wdXQubmF2LWlucHV0OmFjdGl2ZSwuY2FwaWJhcmEuYy1kZWVwLW9yYW5nZSAuaW5wdXQtc2VjdGlvbiBpbnB1dC5uYXYtaW5wdXQ6Zm9jdXN7Ym9yZGVyLWNvbG9yOiNlNjRhMTk7Ym94LXNoYWRvdzowIDRweCA2cHggcmdiYSgyMzAsNzQsMjUsLjIpfS5jYXBpYmFyYS5jLWRlZXAtb3JhbmdlLmRhcmstdGhlbWUgLmlucHV0LXNlY3Rpb24ubXNqLWlucHV0LWNvbnRhaW5lciB0ZXh0YXJlYS5tc2osLmNhcGliYXJhLmMtZGVlcC1vcmFuZ2UgLmlucHV0LXNlY3Rpb24ubXNqLWlucHV0LWNvbnRhaW5lciB0ZXh0YXJlYS5tc2p7Ym9yZGVyOjJweCBzb2xpZCAjZTY0YTE5fS5jYXBpYmFyYS5jLWRlZXAtb3JhbmdlLmRhcmstdGhlbWUgLmlucHV0LXNlY3Rpb24ubXNqLWlucHV0LWNvbnRhaW5lciB0ZXh0YXJlYS5tc2o6YWN0aXZlLC5jYXBpYmFyYS5jLWRlZXAtb3JhbmdlLmRhcmstdGhlbWUgLmlucHV0LXNlY3Rpb24ubXNqLWlucHV0LWNvbnRhaW5lciB0ZXh0YXJlYS5tc2o6Zm9jdXMsLmNhcGliYXJhLmMtZGVlcC1vcmFuZ2UgLmlucHV0LXNlY3Rpb24ubXNqLWlucHV0LWNvbnRhaW5lciB0ZXh0YXJlYS5tc2o6YWN0aXZlLC5jYXBpYmFyYS5jLWRlZXAtb3JhbmdlIC5pbnB1dC1zZWN0aW9uLm1zai1pbnB1dC1jb250YWluZXIgdGV4dGFyZWEubXNqOmZvY3Vze2JveC1zaGFkb3c6MCA0cHggNnB4IHJnYmEoMjMwLDc0LDI1LC4yKX0uY2FwaWJhcmEuYy1kZWVwLW9yYW5nZSAuYnRuLXJhaXNlZCwuY2FwaWJhcmEuYy1kZWVwLW9yYW5nZS5kYXJrLXRoZW1lIC5idG4tcmFpc2Vke2JvcmRlci1jb2xvcjojZTY0YTE5O2JhY2tncm91bmQ6cmdiYSgyMzAsNzQsMjUsLjgpfS5jYXBpYmFyYS5jLWRlZXAtb3JhbmdlIC5idG4tb3V0bGluZSwuY2FwaWJhcmEuYy1kZWVwLW9yYW5nZS5kYXJrLXRoZW1lIC5idG4tb3V0bGluZXtib3JkZXItY29sb3I6I2U2NGExOTtjb2xvcjojZTY0YTE5fS5jYXBpYmFyYS5jLWRlZXAtb3JhbmdlLmRhcmstdGhlbWUgLnNlbGVjdC1jb250YWluZXIgLnNlbGVjdGVkLWRheSwuY2FwaWJhcmEuYy1kZWVwLW9yYW5nZSAuc2VsZWN0LWNvbnRhaW5lciAuc2VsZWN0ZWQtZGF5e2JhY2tncm91bmQ6cmdiYSgyMzAsNzQsMjUsLjMpO2JveC1zaGFkb3c6aW5zZXQgMCAwIDEwcHggcmdiYSgyMzAsNzQsMjUsLjUpfS5jYXBpYmFyYSAuYy1kZWVwLW9yYW5nZS0tYmFja2dyb3VuZHtiYWNrZ3JvdW5kOiNlNjRhMTkhaW1wb3J0YW50fS5jYXBpYmFyYSAuYy1kZWVwLW9yYW5nZS1kLS1iYWNrZ3JvdW5ke2JhY2tncm91bmQ6I2ExMzQxMiFpbXBvcnRhbnR9LmNhcGliYXJhIC5jLWRlZXAtb3JhbmdlLWwtLWJhY2tncm91bmR7YmFja2dyb3VuZDojZWU4MDVlIWltcG9ydGFudH0uY2FwaWJhcmEgLmMtZGVlcC1vcmFuZ2UtLXRleHR7Y29sb3I6I2U2NGExOSFpbXBvcnRhbnR9LmNhcGliYXJhIC5jLWRlZXAtb3JhbmdlLWQtLXRleHR7Y29sb3I6I2ExMzQxMiFpbXBvcnRhbnR9LmNhcGliYXJhIC5jLWRlZXAtb3JhbmdlLWwtLXRleHR7Y29sb3I6I2VlODA1ZSFpbXBvcnRhbnR9LmNhcGliYXJhIC5kZXRhaWwtZGF5IC5saXN0LWRldGFpbCAuaXRlbS1kZXRhaWwuYy1kZWVwLW9yYW5nZXtiYWNrZ3JvdW5kOnJnYmEoMjMwLDc0LDI1LC4yKTtib3JkZXI6MXB4IHNvbGlkICNlNjRhMTl9LmNhcGliYXJhIC5kZXRhaWwtZGF5IC5saXN0LWRldGFpbCAuaXRlbS1kZXRhaWwuYy1kZWVwLW9yYW5nZSAubGVmdC1pY29ue2JhY2tncm91bmQ6I2U2NGExOX0uY2FwaWJhcmEgLmRldGFpbC1kYXkgLmxpc3QtZGV0YWlsIC5pdGVtLWRldGFpbC5jLWRlZXAtb3JhbmdlIC5sZWZ0LWljb24ub3V0bGluZWR7Ym9yZGVyOjFweCBzb2xpZCAjZTY0YTE5O2JveC1zaGFkb3c6aW5zZXQgMCAwIDAgMXB4IHJnYmEoMjMwLDc0LDI1LC43KX0uY2FwaWJhcmEgLmRldGFpbC1kYXkgLmxpc3QtZGV0YWlsIC5pdGVtLWRldGFpbC5jLWRlZXAtb3JhbmdlIC5uYW1le2NvbG9yOiNlNjRhMTl9LmNhcGliYXJhIC5mbG9hdC1ib3gtY29udGFpbmVyIC5mbG9hdC1ib3ggc3Bhbi5kYXRhLmMtZGVlcC1vcmFuZ2V7YmFja2dyb3VuZDpyZ2JhKDIzMCw3NCwyNSwuOCl9LmNhcGliYXJhIC5mbG9hdC1ib3gtY29udGFpbmVyIC5mbG9hdC1ib3ggc3Bhbi5kYXRhLnNoYXBlLW91dGxpbmVkLmMtZGVlcC1vcmFuZ2V7Ym9yZGVyLWNvbG9yOnJnYmEoMjMwLDc0LDI1LC45KTtiYWNrZ3JvdW5kOnJnYmEoMjMwLDc0LDI1LC4xKTtjb2xvcjojZTY0YTE5fS5jYXBpYmFyYSAuZmxvYXQtYm94LWNvbnRhaW5lciAuZmxvYXQtYm94IHNwYW4uZGF0YS5zaGFwZS1iYXIuYy1kZWVwLW9yYW5nZXtiYWNrZ3JvdW5kOiNlNjRhMTl9LmNhcGliYXJhIC5mbG9hdC1ib3gtY29udGFpbmVyIC5mbG9hdC1ib3ggc3Bhbi5kYXRhLnNoYXBlLWJhci1vdXRsaW5lZC5jLWRlZXAtb3Jhbmdle2JhY2tncm91bmQ6cmdiYSgyMzAsNzQsMjUsLjUpfS5jYXBpYmFyYSAuZmxvYXQtYm94LWNvbnRhaW5lciAuZmxvYXQtYm94IC5kb3QuYy1kZWVwLW9yYW5nZXtiYWNrZ3JvdW5kOiNlNjRhMTl9LmNhcGliYXJhIC5mbG9hdC1ib3gtY29udGFpbmVyIC5mbG9hdC1ib3ggLmRvdC5jLWRlZXAtb3JhbmdlLm91dGxpbmVke2JvcmRlcjoxcHggc29saWQgI2U2NGExOTtib3gtc2hhZG93Omluc2V0IDAgMCAwIDFweCByZ2JhKDIzMCw3NCwyNSwuNyl9LmNhcGliYXJhIC5oZWFkZXItdG9wIC50YWJzLWNvbnRhaW5lciAudGFiOm5vdCguZGlzYWJsZWQpLmMtZGVlcC1vcmFuZ2UuYWN0aXZle2JhY2tncm91bmQ6cmdiYSgyMzAsNzQsMjUsLjcpO2JvcmRlci1jb2xvcjpyZ2JhKDIzMCw3NCwyNSwuNyk7Y29sb3I6I2ZmZn0uY2FwaWJhcmEgLmhlYWRlci10b3AgLnRhYnMtY29udGFpbmVyIC50YWI6bm90KC5kaXNhYmxlZCkuYy1kZWVwLW9yYW5nZS5hY3RpdmU6aG92ZXJ7YmFja2dyb3VuZDpyZ2JhKDIzMCw3NCwyNSwuOCl9LmNhcGliYXJhIC5oZWFkZXItdG9wIC50YWJzLWNvbnRhaW5lciAudGFiOm5vdCguZGlzYWJsZWQpLmMtZGVlcC1vcmFuZ2U6aG92ZXJ7YmFja2dyb3VuZDpyZ2JhKDIzMCw3NCwyNSwuMik7Ym9yZGVyLWNvbG9yOnJnYmEoMjMwLDc0LDI1LC45KX0uY2FwaWJhcmEgLmlucHV0LWJveCAubWluaS1pbnB1dC1zZWN0aW9uLS1pY29uLmMtZGVlcC1vcmFuZ2V7YmFja2dyb3VuZDojZTY0YTE5fS5jYXBpYmFyYS5jLWJyb3duOm5vdCguZGFyay10aGVtZSkgOjotd2Via2l0LXNjcm9sbGJhci10aHVtYntiYWNrZ3JvdW5kOiM2NjVlNWJ9LmNhcGliYXJhLmMtYnJvd246bm90KC5kYXJrLXRoZW1lKSAuaGVhZGVyLXRvcHtiYWNrZ3JvdW5kOiNjN2M3Yzd9LmNhcGliYXJhLmMtYnJvd246bm90KC5kYXJrLXRoZW1lKSAuY29ybmVye2JhY2tncm91bmQ6I2M3YzdjNztib3JkZXItY29sb3I6I2FmODc3OH0uY2FwaWJhcmEuYy1icm93bjpub3QoLmRhcmstdGhlbWUpIC5jb250YWluZXItdGwgaGVhZGVye2JhY2tncm91bmQ6I2M3YzdjNztib3JkZXItYm90dG9tLWNvbG9yOiNhZjg3Nzh9LmNhcGliYXJhLmMtYnJvd246bm90KC5kYXJrLXRoZW1lKSAuY29udGFpbmVyLXRsIGhlYWRlciAubWVzLm1lcy1yZWR1Y2VkOmFmdGVye2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDkwZGVnLHRyYW5zcGFyZW50LCNkNWMwYjgpIWltcG9ydGFudH0uY2FwaWJhcmEuYy1icm93bjpub3QoLmRhcmstdGhlbWUpIG5hdi5yaWdodHtib3JkZXItY29sb3I6I2FmODc3OH0uY2FwaWJhcmEuYy1icm93bi5kYXJrLXRoZW1lIC5oZWFkZXItdG9wLC5jYXBpYmFyYS5jLWJyb3duLmRhcmstdGhlbWUgbmF2LnJpZ2h0e2JvcmRlci1jb2xvcjojMzkyODIyfS5jYXBpYmFyYS5jLWJyb3duLmRhcmstdGhlbWUgLmNvbnRhaW5lci10bCBoZWFkZXIsLmNhcGliYXJhLmMtYnJvd24uZGFyay10aGVtZSAuY29ybmVye2JvcmRlci1ib3R0b20tY29sb3I6IzM5MjgyMn0uY2FwaWJhcmEuYy1icm93bi5kYXJrLXRoZW1lIC5wcm9ncmVzcy1iYXIsLmNhcGliYXJhLmMtYnJvd24gLnByb2dyZXNzLWJhcntiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMTIxLDg1LDcyLC4yKSFpbXBvcnRhbnR9LmNhcGliYXJhLmMtYnJvd24uZGFyay10aGVtZSAucHJvZ3Jlc3MtYmFyOmFmdGVyLC5jYXBpYmFyYS5jLWJyb3duLmRhcmstdGhlbWUgLnByb2dyZXNzLWJhcjpiZWZvcmUsLmNhcGliYXJhLmMtYnJvd24gLnByb2dyZXNzLWJhcjphZnRlciwuY2FwaWJhcmEuYy1icm93biAucHJvZ3Jlc3MtYmFyOmJlZm9yZXtiYWNrZ3JvdW5kLWNvbG9yOiM3OTU1NDghaW1wb3J0YW50fS5jYXBpYmFyYS5jLWJyb3duLmRhcmstdGhlbWUgc2VsZWN0LnRhYnMtc2VsZWN0LC5jYXBpYmFyYS5jLWJyb3duIHNlbGVjdC50YWJzLXNlbGVjdHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMTIxLDg1LDcyLC43KSFpbXBvcnRhbnQ7Ym9yZGVyLWNvbG9yOiM3OTU1NDghaW1wb3J0YW50fS5jYXBpYmFyYS5jLWJyb3duLmRhcmstdGhlbWUgLnRpbWUsLmNhcGliYXJhLmMtYnJvd24gLnRpbWV7Ym9yZGVyLWNvbG9yOnJnYmEoMTIxLDg1LDcyLC42KX0uY2FwaWJhcmEuYy1icm93bi5kYXJrLXRoZW1lIC50aW1lIC5zeW1ib2wsLmNhcGliYXJhLmMtYnJvd24gLnRpbWUgLnN5bWJvbHtjb2xvcjojNzk1NTQ4fS5jYXBpYmFyYS5jLWJyb3duLmRhcmstdGhlbWUgLnRpbWUgaW5wdXQ6YWN0aXZlLC5jYXBpYmFyYS5jLWJyb3duLmRhcmstdGhlbWUgLnRpbWUgaW5wdXQ6Zm9jdXMsLmNhcGliYXJhLmMtYnJvd24gLnRpbWUgaW5wdXQ6YWN0aXZlLC5jYXBpYmFyYS5jLWJyb3duIC50aW1lIGlucHV0OmZvY3Vze2JvcmRlci1jb2xvcjojNzk1NTQ4O2JveC1zaGFkb3c6MCA0cHggNnB4IHJnYmEoMTIxLDg1LDcyLC4yKX0uY2FwaWJhcmEuYy1icm93bi5kYXJrLXRoZW1lIC5pbnB1dC1ib3gsLmNhcGliYXJhLmMtYnJvd24uZGFyay10aGVtZSAuaW5wdXQtc2VjdGlvbiBpbnB1dC5uYXYtaW5wdXQsLmNhcGliYXJhLmMtYnJvd24gLmlucHV0LWJveCwuY2FwaWJhcmEuYy1icm93biAuaW5wdXQtc2VjdGlvbiBpbnB1dC5uYXYtaW5wdXR7Ym9yZGVyLWNvbG9yOnJnYmEoMTIxLDg1LDcyLC42KX0uY2FwaWJhcmEuYy1icm93bi5kYXJrLXRoZW1lIC5pbnB1dC1zZWN0aW9uIGlucHV0Lm5hdi1pbnB1dDphY3RpdmUsLmNhcGliYXJhLmMtYnJvd24uZGFyay10aGVtZSAuaW5wdXQtc2VjdGlvbiBpbnB1dC5uYXYtaW5wdXQ6Zm9jdXMsLmNhcGliYXJhLmMtYnJvd24gLmlucHV0LXNlY3Rpb24gaW5wdXQubmF2LWlucHV0OmFjdGl2ZSwuY2FwaWJhcmEuYy1icm93biAuaW5wdXQtc2VjdGlvbiBpbnB1dC5uYXYtaW5wdXQ6Zm9jdXN7Ym9yZGVyLWNvbG9yOiM3OTU1NDg7Ym94LXNoYWRvdzowIDRweCA2cHggcmdiYSgxMjEsODUsNzIsLjIpfS5jYXBpYmFyYS5jLWJyb3duLmRhcmstdGhlbWUgLmlucHV0LXNlY3Rpb24ubXNqLWlucHV0LWNvbnRhaW5lciB0ZXh0YXJlYS5tc2osLmNhcGliYXJhLmMtYnJvd24gLmlucHV0LXNlY3Rpb24ubXNqLWlucHV0LWNvbnRhaW5lciB0ZXh0YXJlYS5tc2p7Ym9yZGVyOjJweCBzb2xpZCAjNzk1NTQ4fS5jYXBpYmFyYS5jLWJyb3duLmRhcmstdGhlbWUgLmlucHV0LXNlY3Rpb24ubXNqLWlucHV0LWNvbnRhaW5lciB0ZXh0YXJlYS5tc2o6YWN0aXZlLC5jYXBpYmFyYS5jLWJyb3duLmRhcmstdGhlbWUgLmlucHV0LXNlY3Rpb24ubXNqLWlucHV0LWNvbnRhaW5lciB0ZXh0YXJlYS5tc2o6Zm9jdXMsLmNhcGliYXJhLmMtYnJvd24gLmlucHV0LXNlY3Rpb24ubXNqLWlucHV0LWNvbnRhaW5lciB0ZXh0YXJlYS5tc2o6YWN0aXZlLC5jYXBpYmFyYS5jLWJyb3duIC5pbnB1dC1zZWN0aW9uLm1zai1pbnB1dC1jb250YWluZXIgdGV4dGFyZWEubXNqOmZvY3Vze2JveC1zaGFkb3c6MCA0cHggNnB4IHJnYmEoMTIxLDg1LDcyLC4yKX0uY2FwaWJhcmEuYy1icm93biAuYnRuLXJhaXNlZCwuY2FwaWJhcmEuYy1icm93bi5kYXJrLXRoZW1lIC5idG4tcmFpc2Vke2JvcmRlci1jb2xvcjojNzk1NTQ4O2JhY2tncm91bmQ6cmdiYSgxMjEsODUsNzIsLjgpfS5jYXBpYmFyYS5jLWJyb3duIC5idG4tb3V0bGluZSwuY2FwaWJhcmEuYy1icm93bi5kYXJrLXRoZW1lIC5idG4tb3V0bGluZXtib3JkZXItY29sb3I6Izc5NTU0ODtjb2xvcjojNzk1NTQ4fS5jYXBpYmFyYS5jLWJyb3duLmRhcmstdGhlbWUgLnNlbGVjdC1jb250YWluZXIgLnNlbGVjdGVkLWRheSwuY2FwaWJhcmEuYy1icm93biAuc2VsZWN0LWNvbnRhaW5lciAuc2VsZWN0ZWQtZGF5e2JhY2tncm91bmQ6cmdiYSgxMjEsODUsNzIsLjMpO2JveC1zaGFkb3c6aW5zZXQgMCAwIDEwcHggcmdiYSgxMjEsODUsNzIsLjUpfS5jYXBpYmFyYSAuYy1icm93bi0tYmFja2dyb3VuZHtiYWNrZ3JvdW5kOiM3OTU1NDghaW1wb3J0YW50fS5jYXBpYmFyYSAuYy1icm93bi1kLS1iYWNrZ3JvdW5ke2JhY2tncm91bmQ6IzQ5MzMyYiFpbXBvcnRhbnR9LmNhcGliYXJhIC5jLWJyb3duLWwtLWJhY2tncm91bmR7YmFja2dyb3VuZDojYTU3ODY4IWltcG9ydGFudH0uY2FwaWJhcmEgLmMtYnJvd24tLXRleHR7Y29sb3I6Izc5NTU0OCFpbXBvcnRhbnR9LmNhcGliYXJhIC5jLWJyb3duLWQtLXRleHR7Y29sb3I6IzQ5MzMyYiFpbXBvcnRhbnR9LmNhcGliYXJhIC5jLWJyb3duLWwtLXRleHR7Y29sb3I6I2E1Nzg2OCFpbXBvcnRhbnR9LmNhcGliYXJhIC5kZXRhaWwtZGF5IC5saXN0LWRldGFpbCAuaXRlbS1kZXRhaWwuYy1icm93bntiYWNrZ3JvdW5kOnJnYmEoMTIxLDg1LDcyLC4yKTtib3JkZXI6MXB4IHNvbGlkICM3OTU1NDh9LmNhcGliYXJhIC5kZXRhaWwtZGF5IC5saXN0LWRldGFpbCAuaXRlbS1kZXRhaWwuYy1icm93biAubGVmdC1pY29ue2JhY2tncm91bmQ6Izc5NTU0OH0uY2FwaWJhcmEgLmRldGFpbC1kYXkgLmxpc3QtZGV0YWlsIC5pdGVtLWRldGFpbC5jLWJyb3duIC5sZWZ0LWljb24ub3V0bGluZWR7Ym9yZGVyOjFweCBzb2xpZCAjNzk1NTQ4O2JveC1zaGFkb3c6aW5zZXQgMCAwIDAgMXB4IHJnYmEoMTIxLDg1LDcyLC43KX0uY2FwaWJhcmEgLmRldGFpbC1kYXkgLmxpc3QtZGV0YWlsIC5pdGVtLWRldGFpbC5jLWJyb3duIC5uYW1le2NvbG9yOiM3OTU1NDh9LmNhcGliYXJhIC5mbG9hdC1ib3gtY29udGFpbmVyIC5mbG9hdC1ib3ggc3Bhbi5kYXRhLmMtYnJvd257YmFja2dyb3VuZDpyZ2JhKDEyMSw4NSw3MiwuOCl9LmNhcGliYXJhIC5mbG9hdC1ib3gtY29udGFpbmVyIC5mbG9hdC1ib3ggc3Bhbi5kYXRhLnNoYXBlLW91dGxpbmVkLmMtYnJvd257Ym9yZGVyLWNvbG9yOnJnYmEoMTIxLDg1LDcyLC45KTtiYWNrZ3JvdW5kOnJnYmEoMTIxLDg1LDcyLC4xKTtjb2xvcjojNzk1NTQ4fS5jYXBpYmFyYSAuZmxvYXQtYm94LWNvbnRhaW5lciAuZmxvYXQtYm94IHNwYW4uZGF0YS5zaGFwZS1iYXIuYy1icm93bntiYWNrZ3JvdW5kOiM3OTU1NDh9LmNhcGliYXJhIC5mbG9hdC1ib3gtY29udGFpbmVyIC5mbG9hdC1ib3ggc3Bhbi5kYXRhLnNoYXBlLWJhci1vdXRsaW5lZC5jLWJyb3due2JhY2tncm91bmQ6cmdiYSgxMjEsODUsNzIsLjUpfS5jYXBpYmFyYSAuZmxvYXQtYm94LWNvbnRhaW5lciAuZmxvYXQtYm94IC5kb3QuYy1icm93bntiYWNrZ3JvdW5kOiM3OTU1NDh9LmNhcGliYXJhIC5mbG9hdC1ib3gtY29udGFpbmVyIC5mbG9hdC1ib3ggLmRvdC5jLWJyb3duLm91dGxpbmVke2JvcmRlcjoxcHggc29saWQgIzc5NTU0ODtib3gtc2hhZG93Omluc2V0IDAgMCAwIDFweCByZ2JhKDEyMSw4NSw3MiwuNyl9LmNhcGliYXJhIC5oZWFkZXItdG9wIC50YWJzLWNvbnRhaW5lciAudGFiOm5vdCguZGlzYWJsZWQpLmMtYnJvd24uYWN0aXZle2JhY2tncm91bmQ6cmdiYSgxMjEsODUsNzIsLjcpO2JvcmRlci1jb2xvcjpyZ2JhKDEyMSw4NSw3MiwuNyk7Y29sb3I6I2ZmZn0uY2FwaWJhcmEgLmhlYWRlci10b3AgLnRhYnMtY29udGFpbmVyIC50YWI6bm90KC5kaXNhYmxlZCkuYy1icm93bi5hY3RpdmU6aG92ZXJ7YmFja2dyb3VuZDpyZ2JhKDEyMSw4NSw3MiwuOCl9LmNhcGliYXJhIC5oZWFkZXItdG9wIC50YWJzLWNvbnRhaW5lciAudGFiOm5vdCguZGlzYWJsZWQpLmMtYnJvd246aG92ZXJ7YmFja2dyb3VuZDpyZ2JhKDEyMSw4NSw3MiwuMik7Ym9yZGVyLWNvbG9yOnJnYmEoMTIxLDg1LDcyLC45KX0uY2FwaWJhcmEgLmlucHV0LWJveCAubWluaS1pbnB1dC1zZWN0aW9uLS1pY29uLmMtYnJvd257YmFja2dyb3VuZDojNzk1NTQ4fS5jYXBpYmFyYS5jLWJsdWVfZ3JleTpub3QoLmRhcmstdGhlbWUpIDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWJ7YmFja2dyb3VuZDojNzY3Njc2fS5jYXBpYmFyYS5jLWJsdWVfZ3JleTpub3QoLmRhcmstdGhlbWUpIC5oZWFkZXItdG9we2JhY2tncm91bmQ6I2RjZGNkY30uY2FwaWJhcmEuYy1ibHVlX2dyZXk6bm90KC5kYXJrLXRoZW1lKSAuY29ybmVye2JhY2tncm91bmQ6I2RjZGNkYztib3JkZXItY29sb3I6Izk5YWViOH0uY2FwaWJhcmEuYy1ibHVlX2dyZXk6bm90KC5kYXJrLXRoZW1lKSAuY29udGFpbmVyLXRsIGhlYWRlcntiYWNrZ3JvdW5kOiNkY2RjZGM7Ym9yZGVyLWJvdHRvbS1jb2xvcjojOTlhZWI4fS5jYXBpYmFyYS5jLWJsdWVfZ3JleTpub3QoLmRhcmstdGhlbWUpIC5jb250YWluZXItdGwgaGVhZGVyIC5tZXMubWVzLXJlZHVjZWQ6YWZ0ZXJ7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoOTBkZWcsdHJhbnNwYXJlbnQsI2Q1ZGVlMikhaW1wb3J0YW50fS5jYXBpYmFyYS5jLWJsdWVfZ3JleTpub3QoLmRhcmstdGhlbWUpIG5hdi5yaWdodHtib3JkZXItY29sb3I6Izk5YWViOH0uY2FwaWJhcmEuYy1ibHVlX2dyZXkuZGFyay10aGVtZSAuaGVhZGVyLXRvcCwuY2FwaWJhcmEuYy1ibHVlX2dyZXkuZGFyay10aGVtZSBuYXYucmlnaHR7Ym9yZGVyLWNvbG9yOiMzNjQ3NGZ9LmNhcGliYXJhLmMtYmx1ZV9ncmV5LmRhcmstdGhlbWUgLmNvbnRhaW5lci10bCBoZWFkZXIsLmNhcGliYXJhLmMtYmx1ZV9ncmV5LmRhcmstdGhlbWUgLmNvcm5lcntib3JkZXItYm90dG9tLWNvbG9yOiMzNjQ3NGZ9LmNhcGliYXJhLmMtYmx1ZV9ncmV5LmRhcmstdGhlbWUgLnByb2dyZXNzLWJhciwuY2FwaWJhcmEuYy1ibHVlX2dyZXkgLnByb2dyZXNzLWJhcntiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoOTYsMTI1LDEzOSwuMikhaW1wb3J0YW50fS5jYXBpYmFyYS5jLWJsdWVfZ3JleS5kYXJrLXRoZW1lIC5wcm9ncmVzcy1iYXI6YWZ0ZXIsLmNhcGliYXJhLmMtYmx1ZV9ncmV5LmRhcmstdGhlbWUgLnByb2dyZXNzLWJhcjpiZWZvcmUsLmNhcGliYXJhLmMtYmx1ZV9ncmV5IC5wcm9ncmVzcy1iYXI6YWZ0ZXIsLmNhcGliYXJhLmMtYmx1ZV9ncmV5IC5wcm9ncmVzcy1iYXI6YmVmb3Jle2JhY2tncm91bmQtY29sb3I6IzYwN2Q4YiFpbXBvcnRhbnR9LmNhcGliYXJhLmMtYmx1ZV9ncmV5LmRhcmstdGhlbWUgc2VsZWN0LnRhYnMtc2VsZWN0LC5jYXBpYmFyYS5jLWJsdWVfZ3JleSBzZWxlY3QudGFicy1zZWxlY3R7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDk2LDEyNSwxMzksLjcpIWltcG9ydGFudDtib3JkZXItY29sb3I6IzYwN2Q4YiFpbXBvcnRhbnR9LmNhcGliYXJhLmMtYmx1ZV9ncmV5LmRhcmstdGhlbWUgLnRpbWUsLmNhcGliYXJhLmMtYmx1ZV9ncmV5IC50aW1le2JvcmRlci1jb2xvcjpyZ2JhKDk2LDEyNSwxMzksLjYpfS5jYXBpYmFyYS5jLWJsdWVfZ3JleS5kYXJrLXRoZW1lIC50aW1lIC5zeW1ib2wsLmNhcGliYXJhLmMtYmx1ZV9ncmV5IC50aW1lIC5zeW1ib2x7Y29sb3I6IzYwN2Q4Yn0uY2FwaWJhcmEuYy1ibHVlX2dyZXkuZGFyay10aGVtZSAudGltZSBpbnB1dDphY3RpdmUsLmNhcGliYXJhLmMtYmx1ZV9ncmV5LmRhcmstdGhlbWUgLnRpbWUgaW5wdXQ6Zm9jdXMsLmNhcGliYXJhLmMtYmx1ZV9ncmV5IC50aW1lIGlucHV0OmFjdGl2ZSwuY2FwaWJhcmEuYy1ibHVlX2dyZXkgLnRpbWUgaW5wdXQ6Zm9jdXN7Ym9yZGVyLWNvbG9yOiM2MDdkOGI7Ym94LXNoYWRvdzowIDRweCA2cHggcmdiYSg5NiwxMjUsMTM5LC4yKX0uY2FwaWJhcmEuYy1ibHVlX2dyZXkuZGFyay10aGVtZSAuaW5wdXQtYm94LC5jYXBpYmFyYS5jLWJsdWVfZ3JleS5kYXJrLXRoZW1lIC5pbnB1dC1zZWN0aW9uIGlucHV0Lm5hdi1pbnB1dCwuY2FwaWJhcmEuYy1ibHVlX2dyZXkgLmlucHV0LWJveCwuY2FwaWJhcmEuYy1ibHVlX2dyZXkgLmlucHV0LXNlY3Rpb24gaW5wdXQubmF2LWlucHV0e2JvcmRlci1jb2xvcjpyZ2JhKDk2LDEyNSwxMzksLjYpfS5jYXBpYmFyYS5jLWJsdWVfZ3JleS5kYXJrLXRoZW1lIC5pbnB1dC1zZWN0aW9uIGlucHV0Lm5hdi1pbnB1dDphY3RpdmUsLmNhcGliYXJhLmMtYmx1ZV9ncmV5LmRhcmstdGhlbWUgLmlucHV0LXNlY3Rpb24gaW5wdXQubmF2LWlucHV0OmZvY3VzLC5jYXBpYmFyYS5jLWJsdWVfZ3JleSAuaW5wdXQtc2VjdGlvbiBpbnB1dC5uYXYtaW5wdXQ6YWN0aXZlLC5jYXBpYmFyYS5jLWJsdWVfZ3JleSAuaW5wdXQtc2VjdGlvbiBpbnB1dC5uYXYtaW5wdXQ6Zm9jdXN7Ym9yZGVyLWNvbG9yOiM2MDdkOGI7Ym94LXNoYWRvdzowIDRweCA2cHggcmdiYSg5NiwxMjUsMTM5LC4yKX0uY2FwaWJhcmEuYy1ibHVlX2dyZXkuZGFyay10aGVtZSAuaW5wdXQtc2VjdGlvbi5tc2otaW5wdXQtY29udGFpbmVyIHRleHRhcmVhLm1zaiwuY2FwaWJhcmEuYy1ibHVlX2dyZXkgLmlucHV0LXNlY3Rpb24ubXNqLWlucHV0LWNvbnRhaW5lciB0ZXh0YXJlYS5tc2p7Ym9yZGVyOjJweCBzb2xpZCAjNjA3ZDhifS5jYXBpYmFyYS5jLWJsdWVfZ3JleS5kYXJrLXRoZW1lIC5pbnB1dC1zZWN0aW9uLm1zai1pbnB1dC1jb250YWluZXIgdGV4dGFyZWEubXNqOmFjdGl2ZSwuY2FwaWJhcmEuYy1ibHVlX2dyZXkuZGFyay10aGVtZSAuaW5wdXQtc2VjdGlvbi5tc2otaW5wdXQtY29udGFpbmVyIHRleHRhcmVhLm1zajpmb2N1cywuY2FwaWJhcmEuYy1ibHVlX2dyZXkgLmlucHV0LXNlY3Rpb24ubXNqLWlucHV0LWNvbnRhaW5lciB0ZXh0YXJlYS5tc2o6YWN0aXZlLC5jYXBpYmFyYS5jLWJsdWVfZ3JleSAuaW5wdXQtc2VjdGlvbi5tc2otaW5wdXQtY29udGFpbmVyIHRleHRhcmVhLm1zajpmb2N1c3tib3gtc2hhZG93OjAgNHB4IDZweCByZ2JhKDk2LDEyNSwxMzksLjIpfS5jYXBpYmFyYS5jLWJsdWVfZ3JleSAuYnRuLXJhaXNlZCwuY2FwaWJhcmEuYy1ibHVlX2dyZXkuZGFyay10aGVtZSAuYnRuLXJhaXNlZHtib3JkZXItY29sb3I6IzYwN2Q4YjtiYWNrZ3JvdW5kOnJnYmEoOTYsMTI1LDEzOSwuOCl9LmNhcGliYXJhLmMtYmx1ZV9ncmV5IC5idG4tb3V0bGluZSwuY2FwaWJhcmEuYy1ibHVlX2dyZXkuZGFyay10aGVtZSAuYnRuLW91dGxpbmV7Ym9yZGVyLWNvbG9yOiM2MDdkOGI7Y29sb3I6IzYwN2Q4Yn0uY2FwaWJhcmEuYy1ibHVlX2dyZXkuZGFyay10aGVtZSAuc2VsZWN0LWNvbnRhaW5lciAuc2VsZWN0ZWQtZGF5LC5jYXBpYmFyYS5jLWJsdWVfZ3JleSAuc2VsZWN0LWNvbnRhaW5lciAuc2VsZWN0ZWQtZGF5e2JhY2tncm91bmQ6cmdiYSg5NiwxMjUsMTM5LC4zKTtib3gtc2hhZG93Omluc2V0IDAgMCAxMHB4IHJnYmEoOTYsMTI1LDEzOSwuNSl9LmNhcGliYXJhIC5jLWJsdWVfZ3JleS0tYmFja2dyb3VuZHtiYWNrZ3JvdW5kOiM2MDdkOGIhaW1wb3J0YW50fS5jYXBpYmFyYSAuYy1ibHVlX2dyZXktZC0tYmFja2dyb3VuZHtiYWNrZ3JvdW5kOiM0MTU0NWUhaW1wb3J0YW50fS5jYXBpYmFyYSAuYy1ibHVlX2dyZXktbC0tYmFja2dyb3VuZHtiYWNrZ3JvdW5kOiM4YWEyYWUhaW1wb3J0YW50fS5jYXBpYmFyYSAuYy1ibHVlX2dyZXktLXRleHR7Y29sb3I6IzYwN2Q4YiFpbXBvcnRhbnR9LmNhcGliYXJhIC5jLWJsdWVfZ3JleS1kLS10ZXh0e2NvbG9yOiM0MTU0NWUhaW1wb3J0YW50fS5jYXBpYmFyYSAuYy1ibHVlX2dyZXktbC0tdGV4dHtjb2xvcjojOGFhMmFlIWltcG9ydGFudH0uY2FwaWJhcmEgLmRldGFpbC1kYXkgLmxpc3QtZGV0YWlsIC5pdGVtLWRldGFpbC5jLWJsdWVfZ3JleXtiYWNrZ3JvdW5kOnJnYmEoOTYsMTI1LDEzOSwuMik7Ym9yZGVyOjFweCBzb2xpZCAjNjA3ZDhifS5jYXBpYmFyYSAuZGV0YWlsLWRheSAubGlzdC1kZXRhaWwgLml0ZW0tZGV0YWlsLmMtYmx1ZV9ncmV5IC5sZWZ0LWljb257YmFja2dyb3VuZDojNjA3ZDhifS5jYXBpYmFyYSAuZGV0YWlsLWRheSAubGlzdC1kZXRhaWwgLml0ZW0tZGV0YWlsLmMtYmx1ZV9ncmV5IC5sZWZ0LWljb24ub3V0bGluZWR7Ym9yZGVyOjFweCBzb2xpZCAjNjA3ZDhiO2JveC1zaGFkb3c6aW5zZXQgMCAwIDAgMXB4IHJnYmEoOTYsMTI1LDEzOSwuNyl9LmNhcGliYXJhIC5kZXRhaWwtZGF5IC5saXN0LWRldGFpbCAuaXRlbS1kZXRhaWwuYy1ibHVlX2dyZXkgLm5hbWV7Y29sb3I6IzYwN2Q4Yn0uY2FwaWJhcmEgLmZsb2F0LWJveC1jb250YWluZXIgLmZsb2F0LWJveCBzcGFuLmRhdGEuYy1ibHVlX2dyZXl7YmFja2dyb3VuZDpyZ2JhKDk2LDEyNSwxMzksLjgpfS5jYXBpYmFyYSAuZmxvYXQtYm94LWNvbnRhaW5lciAuZmxvYXQtYm94IHNwYW4uZGF0YS5zaGFwZS1vdXRsaW5lZC5jLWJsdWVfZ3JleXtib3JkZXItY29sb3I6cmdiYSg5NiwxMjUsMTM5LC45KTtiYWNrZ3JvdW5kOnJnYmEoOTYsMTI1LDEzOSwuMSk7Y29sb3I6IzYwN2Q4Yn0uY2FwaWJhcmEgLmZsb2F0LWJveC1jb250YWluZXIgLmZsb2F0LWJveCBzcGFuLmRhdGEuc2hhcGUtYmFyLmMtYmx1ZV9ncmV5e2JhY2tncm91bmQ6IzYwN2Q4Yn0uY2FwaWJhcmEgLmZsb2F0LWJveC1jb250YWluZXIgLmZsb2F0LWJveCBzcGFuLmRhdGEuc2hhcGUtYmFyLW91dGxpbmVkLmMtYmx1ZV9ncmV5e2JhY2tncm91bmQ6cmdiYSg5NiwxMjUsMTM5LC41KX0uY2FwaWJhcmEgLmZsb2F0LWJveC1jb250YWluZXIgLmZsb2F0LWJveCAuZG90LmMtYmx1ZV9ncmV5e2JhY2tncm91bmQ6IzYwN2Q4Yn0uY2FwaWJhcmEgLmZsb2F0LWJveC1jb250YWluZXIgLmZsb2F0LWJveCAuZG90LmMtYmx1ZV9ncmV5Lm91dGxpbmVke2JvcmRlcjoxcHggc29saWQgIzYwN2Q4Yjtib3gtc2hhZG93Omluc2V0IDAgMCAwIDFweCByZ2JhKDk2LDEyNSwxMzksLjcpfS5jYXBpYmFyYSAuaGVhZGVyLXRvcCAudGFicy1jb250YWluZXIgLnRhYjpub3QoLmRpc2FibGVkKS5jLWJsdWVfZ3JleS5hY3RpdmV7YmFja2dyb3VuZDpyZ2JhKDk2LDEyNSwxMzksLjcpO2JvcmRlci1jb2xvcjpyZ2JhKDk2LDEyNSwxMzksLjcpO2NvbG9yOiNmZmZ9LmNhcGliYXJhIC5oZWFkZXItdG9wIC50YWJzLWNvbnRhaW5lciAudGFiOm5vdCguZGlzYWJsZWQpLmMtYmx1ZV9ncmV5LmFjdGl2ZTpob3ZlcntiYWNrZ3JvdW5kOnJnYmEoOTYsMTI1LDEzOSwuOCl9LmNhcGliYXJhIC5oZWFkZXItdG9wIC50YWJzLWNvbnRhaW5lciAudGFiOm5vdCguZGlzYWJsZWQpLmMtYmx1ZV9ncmV5OmhvdmVye2JhY2tncm91bmQ6cmdiYSg5NiwxMjUsMTM5LC4yKTtib3JkZXItY29sb3I6cmdiYSg5NiwxMjUsMTM5LC45KX0uY2FwaWJhcmEgLmlucHV0LWJveCAubWluaS1pbnB1dC1zZWN0aW9uLS1pY29uLmMtYmx1ZV9ncmV5e2JhY2tncm91bmQ6IzYwN2Q4Yn0uY2FwaWJhcmEgKiwuY2FwaWJhcmEgOmFmdGVyLC5jYXBpYmFyYSA6YmVmb3Jle2JveC1zaXppbmc6Ym9yZGVyLWJveH0uY2FwaWJhcmEgaW5wdXR7b3V0bGluZTpub25lfS5jYXBpYmFyYSBpbnB1dFt0eXBlPW51bWJlcl17LW1vei1hcHBlYXJhbmNlOnRleHRmaWVsZH0uY2FwaWJhcmEgaW5wdXRbdHlwZT1udW1iZXJdOjotd2Via2l0LWlubmVyLXNwaW4tYnV0dG9uLC5jYXBpYmFyYSBpbnB1dFt0eXBlPW51bWJlcl06Oi13ZWJraXQtb3V0ZXItc3Bpbi1idXR0b257LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7bWFyZ2luOjB9LmNhcGliYXJhIGlucHV0W3R5cGU9bnVtYmVyXTo6LW1vei1wbGFjZWhvbGRlcntvcGFjaXR5OjF9LmNhcGliYXJhIGlucHV0W3R5cGU9bnVtYmVyXTotbXMtaW5wdXQtcGxhY2Vob2xkZXJ7b3BhY2l0eToxfS5jYXBpYmFyYSBpbnB1dFt0eXBlPW51bWJlcl06OnBsYWNlaG9sZGVye29wYWNpdHk6MX0uY2FwaWJhcmEuZGFyay10aGVtZSAuaGlkZS1kYXJrLC5jYXBpYmFyYTpub3QoLmRhcmstdGhlbWUpIC5oaWRlLWxpZ2h0e2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9LmNhcGliYXJhIC50cnVuY2F0ZXt3aWR0aDoxMDAlO2Rpc3BsYXk6aW5saW5lLWJsb2NrO3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpc30uY2FwaWJhcmEgLmhpZGV7ZGlzcGxheTpub25lIWltcG9ydGFudH0uY2FwaWJhcmEgLnRleHQtdGl0bGV7Zm9udC1zaXplOjFlbTtmb250LXdlaWdodDo3MDA7bWFyZ2luOi4zZW19LmNhcGliYXJhIC50ZXh0LXN1YnRpdGxle2ZvbnQtc2l6ZTouODc1ZW07Zm9udC13ZWlnaHQ6NzAwO21hcmdpbjouM2VtfS5jYXBpYmFyYSAuZC1pbmxpbmUtYmxvY2t7ZGlzcGxheTppbmxpbmUtYmxvY2t9LmNhcGliYXJhIC5kLWJsb2Nre2Rpc3BsYXk6YmxvY2t9QG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDo5NjBweCl7LmNhcGliYXJhIC5jLWQtZGVza3RvcC1ub25le2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9LmNhcGliYXJhIC5jLWQtZGVza3RvcC1pbmxpbmUtYmxvY2t7ZGlzcGxheTppbmxpbmUtYmxvY2shaW1wb3J0YW50fS5jYXBpYmFyYSAuYy1kLWRlc2t0b3AtYmxvY2t7ZGlzcGxheTpibG9jayFpbXBvcnRhbnR9LmNhcGliYXJhIC5jLWQtZGVza3RvcC1mbGV4e2Rpc3BsYXk6ZmxleCFpbXBvcnRhbnR9fUBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6OTU5cHgpey5jYXBpYmFyYSAuYy1kLW1vYmlsZS1ub25le2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9LmNhcGliYXJhIC5jLWQtbW9iaWxlLWJsb2Nre2Rpc3BsYXk6YmxvY2shaW1wb3J0YW50fS5jYXBpYmFyYSAuYy1kLW1vYmlsZS1pbmxpbmUtYmxvY2t7ZGlzcGxheTppbmxpbmUtYmxvY2shaW1wb3J0YW50fS5jYXBpYmFyYSAuYy1kLW1vYmlsZS1mbGV4e2Rpc3BsYXk6ZmxleCFpbXBvcnRhbnR9fS5jYXBpYmFyYSA6Oi13ZWJraXQtc2Nyb2xsYmFye3dpZHRoOjEycHg7aGVpZ2h0OjEycHg7b3BhY2l0eTouNX0uY2FwaWJhcmEgOjotd2Via2l0LXNjcm9sbGJhci1jb3JuZXIsLmNhcGliYXJhIDo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2t7YmFja2dyb3VuZDp0cmFuc3BhcmVudH0uY2FwaWJhcmEgOjotd2Via2l0LXNjcm9sbGJhci10aHVtYntib3JkZXItcmFkaXVzOjVweDtiYWNrZ3JvdW5kOmdyZXl9LmNhcGliYXJhLmRhcmstdGhlbWUgOjotd2Via2l0LXNjcm9sbGJhci1jb3JuZXIsLmNhcGliYXJhLmRhcmstdGhlbWUgOjotd2Via2l0LXNjcm9sbGJhci10cmFja3tiYWNrZ3JvdW5kOnRyYW5zcGFyZW50fS5jYXBpYmFyYS5kYXJrLXRoZW1lIDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWJ7YmFja2dyb3VuZDojYmRiZGJkfS5jYXBpYmFyYXtwb3NpdGlvbjpyZWxhdGl2ZTtmb250LWZhbWlseTpSb2JvdG8sc2Fucy1zZXJpZjtoZWlnaHQ6aW5oZXJpdDttYXgtaGVpZ2h0OmluaGVyaXQ7b3ZlcmZsb3c6aGlkZGVuOy13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7LW1zLXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZTtsaW5lLWhlaWdodDpub3JtYWw7Zm9udC1zaXplOnZhcigtLWZvbnQtc2l6ZSk7Y29sb3I6IzM3NDc0ZjtiYWNrZ3JvdW5kOiNmNWY1ZjV9LmNhcGliYXJhLmRhcmstdGhlbWV7Y29sb3I6I2YwZjBmMDtiYWNrZ3JvdW5kOiMyMjI4Mzd9LmNhcGliYXJhIC5jb250YWluZXItdGx7d2lkdGg6MTAwJTtoZWlnaHQ6Y2FsYygxMDAlIC0gdmFyKC0taGVhZGVyLXRvcC1oZWlnaHQpKTttYXgtaGVpZ2h0OmNhbGMoMTAwJSAtIHZhcigtLWhlYWRlci10b3AtaGVpZ2h0KSk7cG9zaXRpb246cmVsYXRpdmU7b3ZlcmZsb3c6c2Nyb2xsO21hcmdpbjowfS5jYXBpYmFyYS5leHRlbmRlZC1yaWdodCAuY29udGFpbmVyLXRse3dpZHRoOmNhbGMoMTAwJSAtIHZhcigtLW5hdi1yaWdodC13aWR0aCkpfS5jYXBpYmFyYSAuY29udGFpbmVyLXRse2JhY2tncm91bmQ6I2Y1ZjVmNX0uY2FwaWJhcmEuZGFyay10aGVtZSAuY29udGFpbmVyLXRse2JhY2tncm91bmQ6IzIyMjgzN30uY2FwaWJhcmEgLmNvbnRhaW5lci10bCAudG9kYXktbGluZXtoZWlnaHQ6MDt3aWR0aDowO3Bvc2l0aW9uOi13ZWJraXQtc3RpY2t5O3Bvc2l0aW9uOnN0aWNreTt0b3A6dmFyKC0taGVhZGVyLWhlaWdodCl9LmNhcGliYXJhIC5jb250YWluZXItdGwgLnRvZGF5LWxpbmUuZGlzYWJsZS1saW5lLC5jYXBpYmFyYSAuY29udGFpbmVyLXRsIC50b2RheS1saW5lLmRpc2FibGUtbGluZTphZnRlcntkaXNwbGF5Om5vbmUhaW1wb3J0YW50fS5jYXBpYmFyYSAuY29udGFpbmVyLXRsIC50b2RheS1saW5lOmFmdGVye21hcmdpbi1sZWZ0OmNhbGModmFyKC0tbmF2LXdpZHRoKSArIHZhcigtLWluaXRpYWwtbmF2LXdpZHRoKSArIHZhcigtLWV4LW5hdi13aWR0aCkgKyB2YXIoLS1idG4tbmF2LXdpZHRoKSArIDFweCk7cG9zaXRpb246YWJzb2x1dGU7ZGlzcGxheTpibG9jaztsZWZ0OjA7dG9wOjA7Y29udGVudDpcXFwiXFxcIjt3aWR0aDoycHg7aGVpZ2h0OmNhbGMoMTAwdmggLSB2YXIoLS1oZWFkZXItaGVpZ2h0KSAtIHZhcigtLWhlYWRlci10b3AtaGVpZ2h0KSk7YmFja2dyb3VuZDpyZ2JhKDE4MywyOCwyOCwuNCl9LmNhcGliYXJhIC5jb250YWluZXItdGwuaGVhZGVyLWV4dGVuZGVkIC5jb250YWluZXItdGwgLnRvZGF5LWxpbmU6YWZ0ZXJ7aGVpZ2h0OmNhbGMoMTAwdmggLSB2YXIoLS1oZWFkZXItaGVpZ2h0KSArIHZhcigtLWV4LWhlYWRlci1oZWlnaHQpICsgdmFyKC0taGVhZGVyLXRvcC1oZWlnaHQpKX0uY2FwaWJhcmEgLmNvcm5lcntwb3NpdGlvbjphYnNvbHV0ZTt0b3A6dmFyKC0taGVhZGVyLXRvcC1oZWlnaHQpO3otaW5kZXg6NDtoZWlnaHQ6dmFyKC0taGVhZGVyLWhlaWdodCk7Ym9yZGVyOnNvbGlkIHJnYmEoMCwwLDAsLjQpO2JvcmRlci13aWR0aDowIDAgMnB4O3BhZGRpbmctbGVmdDo4cHh9LmNhcGliYXJhIC5jb3JuZXI6bm90KC5yaWdodCl7bGVmdDowO2JvcmRlci1yaWdodC13aWR0aDoxcHg7d2lkdGg6Y2FsYyh2YXIoLS1uYXYtd2lkdGgpICsgdmFyKC0taW5pdGlhbC1uYXYtd2lkdGgpICsgdmFyKC0tZXgtbmF2LXdpZHRoKSArIHZhcigtLWJ0bi1uYXYtd2lkdGgpKX0uY2FwaWJhcmEgLmNvcm5lci5yaWdodHtyaWdodDowO3dpZHRoOnZhcigtLW5hdi1yaWdodC13aWR0aCk7ZGlzcGxheTpub25lfS5jYXBpYmFyYSAuY29ybmVyPmRpdjpub3QoW2NsYXNzXSl7d2lkdGg6aW5oZXJpdDtoZWlnaHQ6aW5oZXJpdH0uY2FwaWJhcmEgLmNvcm5lciAuY29ybmVyLXRpdGxle2hlaWdodDppbmhlcml0O2Rpc3BsYXk6YmxvY2s7dGV4dC1hbGlnbjpsZWZ0O3Bvc2l0aW9uOnJlbGF0aXZlfS5jYXBpYmFyYSAuY29ybmVyIC5jb3JuZXItdGl0bGUgc3Bhbi5ib3R0b20tdGV4dHtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjM1cHg7Ym90dG9tOjhweH0uY2FwaWJhcmEgLmNvcm5lciAuaW5pdGlhbC1jb3JuZXJ7cG9zaXRpb246YWJzb2x1dGU7bGVmdDp2YXIoLS1uYXYtd2lkdGgpO3RvcDowO3dpZHRoOnZhcigtLWluaXRpYWwtbmF2LXdpZHRoKTtoZWlnaHQ6dmFyKC0taGVhZGVyLWhlaWdodCk7b3ZlcmZsb3c6aGlkZGVuO2Rpc3BsYXk6YmxvY2t9LmNhcGliYXJhIC5jb3JuZXIgLmluaXRpYWwtY29ybmVyIC5pbml0aWFsLWNvcm5lci10aXRsZXtoZWlnaHQ6aW5oZXJpdDt3aWR0aDppbmhlcml0O2Rpc3BsYXk6aW5saW5lLWJsb2NrO21hcmdpbi1yaWdodDotMXB4O2JveC1zaXppbmc6Ym9yZGVyLWJveDt2ZXJ0aWNhbC1hbGlnbjp0b3A7cG9zaXRpb246cmVsYXRpdmV9LmNhcGliYXJhIC5jb3JuZXIgLmluaXRpYWwtY29ybmVyIC5pbml0aWFsLWNvcm5lci10aXRsZSAuYm90dG9tLWNvbnRhaW5lcntwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjA7Ym90dG9tOjhweDt3aWR0aDoxMDAlO2JveC1zaXppbmc6Ym9yZGVyLWJveDtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyfS5jYXBpYmFyYSAuY29ybmVyIC5pbml0aWFsLWNvcm5lciAuaW5pdGlhbC1jb3JuZXItdGl0bGUgLmJvdHRvbS1jb250YWluZXIgLml0ZW0tY29se2ZsZXg6MCAwIHZhcigtLW5hdi1pdGVtLWNvbC13aWR0aCk7dGV4dC1hbGlnbjpjZW50ZXI7ZGlzcGxheTppbmxpbmUtYmxvY2s7Zm9udC1zaXplOi43NWVtfS5jYXBpYmFyYSAuY29ybmVyIC5leHRlbmQtY29ybmVye3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6Y2FsYyh2YXIoLS1uYXYtd2lkdGgpICsgdmFyKC0taW5pdGlhbC1uYXYtd2lkdGgpKTt0b3A6MDt3aWR0aDp2YXIoLS1leC1uYXYtd2lkdGgpO2hlaWdodDp2YXIoLS1oZWFkZXItaGVpZ2h0KTtvdmVyZmxvdzpoaWRkZW47ZGlzcGxheTpibG9ja30uY2FwaWJhcmEgLmNvcm5lciAuZXh0ZW5kLWNvcm5lciAuZXgtY29ybmVyLXRpdGxle2hlaWdodDppbmhlcml0O3dpZHRoOmluaGVyaXQ7ZGlzcGxheTppbmxpbmUtYmxvY2s7bWFyZ2luLXJpZ2h0Oi0xcHg7Ym94LXNpemluZzpib3JkZXItYm94O3ZlcnRpY2FsLWFsaWduOnRvcDtwb3NpdGlvbjpyZWxhdGl2ZX0uY2FwaWJhcmEgLmNvcm5lciAuZXh0ZW5kLWNvcm5lciAuZXgtY29ybmVyLXRpdGxlIC5ib3R0b20tY29udGFpbmVye3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MDtib3R0b206OHB4O3dpZHRoOjEwMCU7Ym94LXNpemluZzpib3JkZXItYm94O2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXJ9LmNhcGliYXJhIC5jb3JuZXIgLmV4dGVuZC1jb3JuZXIgLmV4LWNvcm5lci10aXRsZSAuYm90dG9tLWNvbnRhaW5lciAuaXRlbS1jb2x7ZmxleDowIDAgdmFyKC0tbmF2LWl0ZW0tY29sLXdpZHRoKTt0ZXh0LWFsaWduOmNlbnRlcjtkaXNwbGF5OmlubGluZS1ibG9jaztmb250LXNpemU6Ljc1ZW19LmNhcGliYXJhIC5jb3JuZXIgLmJ0bi1uYXYtY29ybmVye3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OjA7dG9wOjA7d2lkdGg6dmFyKC0tYnRuLW5hdi13aWR0aCk7aGVpZ2h0OnZhcigtLWhlYWRlci1oZWlnaHQpO3BhZGRpbmctdG9wOnZhcigtLWhlYWRlci1sYWJlbHMtaGVpZ2h0KX0uY2FwaWJhcmEgLmNvcm5lciAuYnRuLW5hdi1jb3JuZXIgLmlucHV0LXRpdGxlc3t0ZXh0LWFsaWduOnJpZ2h0O2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6MDt0b3A6dmFyKC0taGVhZGVyLWxhYmVscy1oZWlnaHQpfS5jYXBpYmFyYSAuY29ybmVyIC5idG4tbmF2LWNvcm5lciAuaW5wdXQtdGl0bGVzIC5pbnB1dC10aXRsZS1jb250YWluZXJ7cG9zaXRpb246cmVsYXRpdmV9LmNhcGliYXJhIC5jb3JuZXIgLmJ0bi1uYXYtY29ybmVyIC5pbnB1dC10aXRsZXMgLmlucHV0LXRpdGxlLWNvbnRhaW5lcjpub3QoLnBlcnNpc3RlbnQpe2Rpc3BsYXk6bm9uZX0uY2FwaWJhcmEgLmNvcm5lciAuYnRuLW5hdi1jb3JuZXIgLmlucHV0LXRpdGxlcyAuaW5wdXQtdGl0bGUtY29udGFpbmVyIHNwYW4uYXZlcmFnZXtmb250LXdlaWdodDo3MDA7bWFyZ2luLXJpZ2h0OjRweH0uY2FwaWJhcmEgLmNvcm5lciAuYnRuLW5hdi1jb3JuZXIgLmlucHV0LXRpdGxlcyAuaW5wdXQtdGl0bGUtY29udGFpbmVyIC5hdmVyYWdlLWJveHtwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDozZW07dG9wOjA7Zm9udC1zaXplOi44NzVlbTtiYWNrZ3JvdW5kOiNmZmY7Ym9yZGVyLXJpZ2h0Om5vbmU7cGFkZGluZzozcHggMTJweCAzcHggOHB4O3otaW5kZXg6Mjtib3JkZXItcmFkaXVzOjVweDtoZWlnaHQ6MThweDtib3gtc2hhZG93OjJweCAwIDVweCAycHggcmdiYSgwLDAsMCwuMik7bGluZS1oZWlnaHQ6MTNweDtjb2xvcjojMDAwIWltcG9ydGFudDttaW4td2lkdGg6NHJlbX0uY2FwaWJhcmEgLmNvcm5lciAuYnRuLW5hdi1jb3JuZXIgLmlucHV0LXRpdGxlcyAuaW5wdXQtdGl0bGUtY29udGFpbmVyIC5hdmVyYWdlLWJveDphZnRlcntjb250ZW50OlxcXCJcXFwiO3RyYW5zZm9ybTpyb3RhdGUoNDVkZWcpO3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0Oi0zcHg7dG9wOjNweDtiYWNrZ3JvdW5kOiNmZmY7d2lkdGg6MTJweDtoZWlnaHQ6MTJweH0uY2FwaWJhcmEgLmNvcm5lciAuYnRuLW5hdi1jb3JuZXIgLmlucHV0LXRpdGxlcyAuaW5wdXQtdGl0bGUtY29udGFpbmVyIC5hdmVyYWdlLWJveCAuc3ltYm9se2ZvbnQtd2VpZ2h0OjcwMH0uY2FwaWJhcmEgLmNvcm5lciAuYnRuLW5hdi1jb3JuZXIgLmlucHV0LXRpdGxlcyAuaW5wdXQtdGl0bGUtY29udGFpbmVyIC5pbnB1dC10aXRsZXtoZWlnaHQ6Y2FsYyh2YXIoLS1oZWFkZXItaW5wdXQtaGVpZ2h0KSArIDJweCk7bGluZS1oZWlnaHQ6Y2FsYyh2YXIoLS1oZWFkZXItaW5wdXQtaGVpZ2h0KSArIDJweCk7cGFkZGluZy1yaWdodDo4cHg7ZGlzcGxheTppbmxpbmUtYmxvY2s7Zm9udC1zaXplOi43NWVtfS5jYXBpYmFyYS5leHRlbmRlZC1yaWdodCAuY29ybmVyLnJpZ2h0e2Rpc3BsYXk6YmxvY2t9LmNhcGliYXJhLmhlYWRlci1leHRlbmRlZCAuY29ybmVyLC5jYXBpYmFyYS5oZWFkZXItZXh0ZW5kZWQgLmNvcm5lciAuYnRuLW5hdi1jb3JuZXIsLmNhcGliYXJhLmhlYWRlci1leHRlbmRlZCAuY29ybmVyIC5leHRlbmQtY29ybmVyLC5jYXBpYmFyYS5oZWFkZXItZXh0ZW5kZWQgLmNvcm5lciAuaW5pdGlhbC1jb3JuZXJ7aGVpZ2h0OmNhbGModmFyKC0taGVhZGVyLWhlaWdodCkgKyB2YXIoLS1leC1oZWFkZXItaGVpZ2h0KSl9LmNhcGliYXJhLmhlYWRlci1leHRlbmRlZCAuY29ybmVyIC5idG4tbmF2LWNvcm5lciAuaW5wdXQtdGl0bGVzIC5pbnB1dC10aXRsZS1jb250YWluZXI6bm90KC5wZXJzaXN0ZW50KXtkaXNwbGF5OnVuc2V0fS5jYXBpYmFyYS5oZWFkZXItZXh0ZW5kZWQgLmNvcm5lciAuYnRuLW5hdi1jb3JuZXIgLmlucHV0LXRpdGxlcyAuaW5wdXQtdGl0bGUtY29udGFpbmVyOm5vdCgucGVyc2lzdGVudCkgLmF2ZXJhZ2UtYm94e3Zpc2liaWxpdHk6dmlzaWJsZX0uY2FwaWJhcmEuaGVhZGVyLWV4dGVuZGVkIC5jb3JuZXIgLmJ0bi1uYXYtY29ybmVyIC5pbnB1dC10aXRsZXMgLmlucHV0LXRpdGxlLWNvbnRhaW5lcjpub3QoLnBlcnNpc3RlbnQpIC5pbnB1dC10aXRsZXt2aXNpYmlsaXR5OnZpc2libGU7aGVpZ2h0OmF1dG99LmNhcGliYXJhIC5jb3JuZXJ7YmFja2dyb3VuZDojZjFmZmZlfS5jYXBpYmFyYS5kYXJrLXRoZW1lIC5jb3JuZXJ7YmFja2dyb3VuZDojMzEzYjUwO2JvcmRlci1jb2xvcjpyZ2JhKDY0LDc4LDEwNSwuNil9LmNhcGliYXJhLmRhcmstdGhlbWUgLmNvcm5lciAuaW5wdXQtdGl0bGVzIC5pbnB1dC10aXRsZS1jb250YWluZXIgLmlucHV0LXRpdGxle2NvbG9yOmhzbGEoMCwwJSwxMDAlLC44KSFpbXBvcnRhbnR9LmNhcGliYXJhIC5oZWFkZXItdG9we3Bvc2l0aW9uOnJlbGF0aXZlO3dpZHRoOjEwMCU7aGVpZ2h0OnZhcigtLWhlYWRlci10b3AtaGVpZ2h0KTtwYWRkaW5nLXJpZ2h0OjhweDtkaXNwbGF5OmZsZXg7ZmxleC1mbG93OnJvdyB3cmFwfS5jYXBpYmFyYSAuaGVhZGVyLXRvcCAuc3BhY2Vye2ZsZXg6MSAwIGF1dG99LmNhcGliYXJhIC5oZWFkZXItdG9wIC50YWJzLWNvbnRhaW5lcntkaXNwbGF5OmZsZXh9LmNhcGliYXJhIC5oZWFkZXItdG9wIC50YWJzLWNvbnRhaW5lcjpub3QoOmVtcHR5KXtwYWRkaW5nOjAgMTZweH0uY2FwaWJhcmEgLmhlYWRlci10b3AgLnRhYnMtY29udGFpbmVyIC50YWJ7Y3Vyc29yOnBvaW50ZXI7cGFkZGluZzozcHggMThweDtmb250LXdlaWdodDo3MDA7Ym9yZGVyOjFweCBzb2xpZCB0cmFuc3BhcmVudDttYXJnaW46OHB4O2JvcmRlci1yYWRpdXM6MzBweDt0cmFuc2l0aW9uOmJhY2tncm91bmQgLjJzIGVhc2V9LmNhcGliYXJhIC5oZWFkZXItdG9wIC50YWJzLWNvbnRhaW5lciAudGFiLmRpc2FibGVke2NvbG9yOmdyZXl9LmNhcGliYXJhIC5oZWFkZXItdG9wIC50YWJzLWNvbnRhaW5lciAudGFiOmhvdmVye2JvcmRlci1jb2xvcjpncmV5fS5jYXBpYmFyYSAuaGVhZGVyLXRvcCAubGVnZW5kcy1jb250YWluZXI6bm90KDplbXB0eSl7cGFkZGluZzouNWVtIDFlbX0uY2FwaWJhcmEgLmhlYWRlci10b3AgLmxlZ2VuZHMtY29udGFpbmVyIC5sZWdlbmR7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOnJvdzttYXJnaW4tcmlnaHQ6MWVtO2N1cnNvcjpwb2ludGVyO3BhZGRpbmc6MCAuNWVtfS5jYXBpYmFyYSAuaGVhZGVyLXRvcCAubGVnZW5kcy1jb250YWluZXIgLmxlZ2VuZDpub3QoLmFjdGl2ZSl7b3BhY2l0eTouNX0uY2FwaWJhcmEgLmhlYWRlci10b3AgLmxlZ2VuZHMtY29udGFpbmVyIC5sZWdlbmQgLmljb24tbGVnZW5ke3dpZHRoOi44MjVlbTtoZWlnaHQ6LjgyNWVtO21hcmdpbjoycHggLjVlbSAycHggMDtiYWNrZ3JvdW5kOmdyZXk7Ym94LXNoYWRvdzowIDFweCAycHggcmdiYSgwLDAsMCwuNCk7ZGlzcGxheTppbmxpbmUtYmxvY2s7Ym9yZGVyLXJhZGl1czoxcHg7Ym9yZGVyOjFweCBzb2xpZCByZ2JhKDAsMCwwLC40KX0uY2FwaWJhcmEgLmhlYWRlci10b3AgLmxlZ2VuZHMtY29udGFpbmVyIC5sZWdlbmQgLmljb24tbGVnZW5kLmNpcmNsZXtib3JkZXItcmFkaXVzOjUwJX0uY2FwaWJhcmEgLmhlYWRlci10b3AgLmxlZ2VuZHMtY29udGFpbmVyIC5sZWdlbmQ6aG92ZXIgc3Bhbnt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lfS5jYXBpYmFyYSAuaGVhZGVyLXRvcHtiYWNrZ3JvdW5kOiNmMWZmZmV9LmNhcGliYXJhIC5oZWFkZXItdG9wIC50YWJzLWNvbnRhaW5lciAudGFie2NvbG9yOiMzMTNiNTB9LmNhcGliYXJhIC5oZWFkZXItdG9wIC50YWJzLWNvbnRhaW5lciAudGFiLmRpc2FibGVke2NvbG9yOnJnYmEoNDksNTksODAsLjUpfS5jYXBpYmFyYS5kYXJrLXRoZW1lIC5oZWFkZXItdG9we2JhY2tncm91bmQ6IzMxM2I1MH0uY2FwaWJhcmEuZGFyay10aGVtZSAuaGVhZGVyLXRvcCAudGFicy1jb250YWluZXIgLnRhYntjb2xvcjpoc2xhKDAsMCUsMTAwJSwuOCl9LmNhcGliYXJhLmRhcmstdGhlbWUgLmhlYWRlci10b3AgLnRhYnMtY29udGFpbmVyIC50YWIuZGlzYWJsZWR7Y29sb3I6aHNsYSgwLDAlLDEwMCUsLjQpfS5jYXBpYmFyYSAuY29ybmVyLWZvb3Rlcntwb3NpdGlvbjotd2Via2l0LXN0aWNreTtwb3NpdGlvbjpzdGlja3k7bGVmdDowO2JvdHRvbTowO3otaW5kZXg6Mzt3aWR0aDpjYWxjKHZhcigtLW5hdi13aWR0aCkgKyB2YXIoLS1pbml0aWFsLW5hdi13aWR0aCkgKyB2YXIoLS1leC1uYXYtd2lkdGgpICsgdmFyKC0tYnRuLW5hdi13aWR0aCkpO2hlaWdodDp2YXIoLS1pdGVtLWhlaWdodCk7bWFyZ2luLWJvdHRvbTpjYWxjKHZhcigtLWl0ZW0taGVpZ2h0KSotMSk7Ym94LXNpemluZzpib3JkZXItYm94fS5jYXBpYmFyYSAuY29ybmVyLWZvb3RlciAuY29ybmVyLXRpdGxle2xpbmUtaGVpZ2h0OjMwcHg7aGVpZ2h0OmluaGVyaXQ7ZGlzcGxheTpibG9jazt0ZXh0LWFsaWduOmxlZnQ7Ym94LXNpemluZzpib3JkZXItYm94O3Bvc2l0aW9uOnJlbGF0aXZlO2ZvbnQtd2VpZ2h0OjcwMDtwYWRkaW5nOjRweCA4cHh9LmNhcGliYXJhIC5jb3JuZXItZm9vdGVye2JhY2tncm91bmQ6Izc4OTA5Yztjb2xvcjojZmZmfS5jYXBpYmFyYS5kYXJrLXRoZW1lIC5jb3JuZXItZm9vdGVye2JhY2tncm91bmQ6IzMxM2I1MDtjb2xvcjojZjBmMGYwfS5jYXBpYmFyYSBuYXYucmlnaHR7cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6MDt0b3A6Y2FsYyh2YXIoLS1oZWFkZXItaGVpZ2h0KSArIHZhcigtLWhlYWRlci10b3AtaGVpZ2h0KSk7aGVpZ2h0OmNhbGMoMTAwJSAtIHZhcigtLWhlYWRlci1oZWlnaHQpIC0gdmFyKC0taGVhZGVyLXRvcC1oZWlnaHQpKTtvdmVyZmxvdy15OnNjcm9sbDtvdmVyZmxvdy14OmhpZGRlbjt6LWluZGV4OjU7ZGlzcGxheTpub25lO2JvcmRlci1sZWZ0OjFweCBzb2xpZCByZWR9LmNhcGliYXJhIG5hdi5yaWdodCwuY2FwaWJhcmEgbmF2LnJpZ2h0IC5jaGlsZC1uYXYtaXRlbSwuY2FwaWJhcmEgbmF2LnJpZ2h0IC5uYXYtaXRlbXt3aWR0aDp2YXIoLS1uYXYtcmlnaHQtd2lkdGgpfS5jYXBpYmFyYSBuYXYucmlnaHQgLm5hdi1pbnB1dC1jb250YWluZXJ7dGV4dC1hbGlnbjpjZW50ZXJ9LmNhcGliYXJhIG5hdi5yaWdodCAubmF2LWlucHV0LWNvbnRhaW5lciAuYnV0dG9uLXNlY3Rpb257cGFkZGluZy1ib3R0b206Ljc1ZW07cGFkZGluZy10b3A6Ljc1ZW07cG9zaXRpb246LXdlYmtpdC1zdGlja3k7cG9zaXRpb246c3RpY2t5O2JvdHRvbTowfS5jYXBpYmFyYSBuYXYubGVmdHttaW4taGVpZ2h0OmNhbGMoMTAwJSAtIHZhcigtLWhlYWRlci1oZWlnaHQpKTtwb3NpdGlvbjotd2Via2l0LXN0aWNreTtwb3NpdGlvbjpzdGlja3k7bGVmdDowO3dpZHRoOmNhbGModmFyKC0tbmF2LXdpZHRoKSArIHZhcigtLWluaXRpYWwtbmF2LXdpZHRoKSArIHZhcigtLWV4LW5hdi13aWR0aCkgKyB2YXIoLS1idG4tbmF2LXdpZHRoKSk7aGVpZ2h0OmF1dG87ei1pbmRleDoyO2JvcmRlci1yaWdodDoxcHggc29saWQgI2IwYmVjNTtvdmVyZmxvdzp2aXNpYmxlO2JveC1zaGFkb3c6MCAycHggNHB4IC0xcHggcmdiYSgwLDAsMCwuMiksMCA0cHggNXB4IDAgcmdiYSgwLDAsMCwuMTQpLDAgMXB4IDEwcHggMCByZ2JhKDAsMCwwLC4xMil9LmNhcGliYXJhIG5hdi5sZWZ0IC5jaGlsZC1uYXYtaXRlbSwuY2FwaWJhcmEgbmF2LmxlZnQgLm5hdi1pdGVte3dpZHRoOnZhcigtLW5hdi13aWR0aCl9LmNhcGliYXJhIG5hdi5sZWZ0IC5kZXRhaWwtbmF2LWl0ZW17bWF4LXdpZHRoOjMwMHB4O3dpZHRoOi13ZWJraXQtbWF4LWNvbnRlbnQ7d2lkdGg6LW1vei1tYXgtY29udGVudDt3aWR0aDptYXgtY29udGVudDttaW4taGVpZ2h0OjcwcHg7cG9zaXRpb246YWJzb2x1dGU7bGVmdDozcmVtO3RvcDowO2JvcmRlcjoxcHggc29saWQgZ3JleTt6LWluZGV4OjI7Ym9yZGVyLXJhZGl1czo1cHg7cGFkZGluZzoxNnB4O3RyYW5zaXRpb246YWxsIC4zcyBlYXNlO2ZsZXgtZmxvdzpjb2x1bW4gbm93cmFwO2JveC1zaGFkb3c6MCA2cHggNnB4IC0zcHggcmdiYSgwLDAsMCwuMiksMCAxMHB4IDE0cHggMXB4IHJnYmEoMCwwLDAsLjE0KSwwIDRweCAxOHB4IDNweCByZ2JhKDAsMCwwLC4xMik7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoY2FsYyguNXJlbSArIHZhcigtLWl0ZW0taGVpZ2h0KSkpfS5jYXBpYmFyYSBuYXYubGVmdCAuZGV0YWlsLW5hdi1pdGVtLnRvLWJvdHRvbXt0cmFuc2Zvcm06dHJhbnNsYXRlWShjYWxjKC0xMDAlIC0gLjVyZW0pKX0uY2FwaWJhcmEgbmF2LmxlZnQgLmRldGFpbC1uYXYtaXRlbSAuaGVhZGVyLWRldGFpbCAudGl0bGV7Zm9udC1zaXplOjEuMTI1ZW07Zm9udC13ZWlnaHQ6NzAwO21hcmdpbi1ib3R0b206OHB4O21heC13aWR0aDpjYWxjKDEwMCUgLSA4MHB4KX0uY2FwaWJhcmEgbmF2LmxlZnQgLmRldGFpbC1uYXYtaXRlbSAuaGVhZGVyLWRldGFpbCAuc3VidGl0bGV7Zm9udC1zaXplOi44NzU7bWFyZ2luLWJvdHRvbTo4cHh9LmNhcGliYXJhIG5hdi5sZWZ0IC5kZXRhaWwtbmF2LWl0ZW0gLmhlYWRlci1kZXRhaWwgLmhlYWRlci1jaGlwe3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OjE2cHg7dG9wOjE2cHg7cGFkZGluZzoycHggOHB4O2JvcmRlcjozcHggc29saWQgZ3JleTtib3JkZXItcmFkaXVzOjVweH0uY2FwaWJhcmEgbmF2LmxlZnQgLmRldGFpbC1uYXYtaXRlbSAuZGV0YWlsLWNvbnRhaW5lcj5kaXZ7bWFyZ2luOjZweCAwfS5jYXBpYmFyYSBuYXYubGVmdCAuaW5pdGlhbC1uYXYtbGlzdHt3aWR0aDp2YXIoLS1pbml0aWFsLW5hdi13aWR0aCk7cG9zaXRpb246YWJzb2x1dGU7bGVmdDp2YXIoLS1uYXYtd2lkdGgpO3RvcDowO292ZXJmbG93OmhpZGRlbjtkaXNwbGF5OmJsb2NrfS5jYXBpYmFyYSBuYXYubGVmdCAuaW5pdGlhbC1uYXYtbGlzdCAuY2hpbGQtaW5pdGlhbC1uYXYtaXRlbSwuY2FwaWJhcmEgbmF2LmxlZnQgLmluaXRpYWwtbmF2LWxpc3QgLmluaXRpYWwtbmF2LWl0ZW17Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2IwYmVjNTtoZWlnaHQ6dmFyKC0taXRlbS1oZWlnaHQpO2JveC1zaXppbmc6Ym9yZGVyLWJveDtkaXNwbGF5OmZsZXg7bGluZS1oZWlnaHQ6MzRweH0uY2FwaWJhcmEgbmF2LmxlZnQgLmluaXRpYWwtbmF2LWxpc3QgLmNoaWxkLWluaXRpYWwtbmF2LWl0ZW0gLml0ZW0tdGl0bGUsLmNhcGliYXJhIG5hdi5sZWZ0IC5pbml0aWFsLW5hdi1saXN0IC5pbml0aWFsLW5hdi1pdGVtIC5pdGVtLXRpdGxle2ZsZXg6MSAwIGF1dG87cGFkZGluZzo0cHggOHB4fS5jYXBpYmFyYSBuYXYubGVmdCAuaW5pdGlhbC1uYXYtbGlzdCAuY2hpbGQtaW5pdGlhbC1uYXYtaXRlbSAuaXRlbS1jb2wsLmNhcGliYXJhIG5hdi5sZWZ0IC5pbml0aWFsLW5hdi1saXN0IC5pbml0aWFsLW5hdi1pdGVtIC5pdGVtLWNvbHtmbGV4OjAgMCB2YXIoLS1uYXYtaXRlbS1jb2wtd2lkdGgpO3RleHQtYWxpZ246Y2VudGVyO3BhZGRpbmc6NHB4IDhweH0uY2FwaWJhcmEgbmF2LmxlZnQgLmluaXRpYWwtbmF2LWxpc3QgLmNoaWxkLWluaXRpYWwtbmF2LWl0ZW0gLml0ZW0tY29sLmhhcy1pbnB1dCwuY2FwaWJhcmEgbmF2LmxlZnQgLmluaXRpYWwtbmF2LWxpc3QgLmluaXRpYWwtbmF2LWl0ZW0gLml0ZW0tY29sLmhhcy1pbnB1dHtwYWRkaW5nOjB9LmNhcGliYXJhIG5hdi5sZWZ0IC5pbml0aWFsLW5hdi1saXN0IC5jaGlsZC1pbml0aWFsLW5hdi1pdGVtIC5pdGVtLWNvbC5oYXMtaW5wdXQ+LmhvdXItaW5wdXQsLmNhcGliYXJhIG5hdi5sZWZ0IC5pbml0aWFsLW5hdi1saXN0IC5pbml0aWFsLW5hdi1pdGVtIC5pdGVtLWNvbC5oYXMtaW5wdXQ+LmhvdXItaW5wdXR7Zm9udC1zaXplOi44NzVlbTt3aWR0aDpjYWxjKDEwMCUgLSA4cHgpO2JvcmRlcjoxcHggc29saWQgZ3JleTtib3JkZXItcmFkaXVzOjNweDtoZWlnaHQ6MjRweH0uY2FwaWJhcmEgbmF2LmxlZnQgLmluaXRpYWwtbmF2LWxpc3QgLmNoaWxkLWluaXRpYWwtbmF2LWl0ZW0gLml0ZW0tY29sLmhhcy1pbnB1dD5pbnB1dCwuY2FwaWJhcmEgbmF2LmxlZnQgLmluaXRpYWwtbmF2LWxpc3QgLmluaXRpYWwtbmF2LWl0ZW0gLml0ZW0tY29sLmhhcy1pbnB1dD5pbnB1dHt0ZXh0LWFsaWduOmNlbnRlcjtmb250LXNpemU6Ljg3NWVtO3dpZHRoOmNhbGMoMTAwJSAtIDhweCk7ZGlzcGxheTpibG9jaztib3JkZXI6MXB4IHNvbGlkIGdyZXk7Ym9yZGVyLXJhZGl1czozcHg7aGVpZ2h0OjI0cHg7bWFyZ2luOjhweCA0cHggNHB4O2JhY2tncm91bmQ6aHNsYSgwLDAlLDEwMCUsLjIpfS5jYXBpYmFyYSBuYXYubGVmdCAuaW5pdGlhbC1uYXYtbGlzdCAuY2hpbGQtaW5pdGlhbC1uYXYtaXRlbSAuaXRlbS1jb2wuaGFzLWlucHV0PmlucHV0OmFjdGl2ZSwuY2FwaWJhcmEgbmF2LmxlZnQgLmluaXRpYWwtbmF2LWxpc3QgLmNoaWxkLWluaXRpYWwtbmF2LWl0ZW0gLml0ZW0tY29sLmhhcy1pbnB1dD5pbnB1dDpmb2N1cywuY2FwaWJhcmEgbmF2LmxlZnQgLmluaXRpYWwtbmF2LWxpc3QgLmluaXRpYWwtbmF2LWl0ZW0gLml0ZW0tY29sLmhhcy1pbnB1dD5pbnB1dDphY3RpdmUsLmNhcGliYXJhIG5hdi5sZWZ0IC5pbml0aWFsLW5hdi1saXN0IC5pbml0aWFsLW5hdi1pdGVtIC5pdGVtLWNvbC5oYXMtaW5wdXQ+aW5wdXQ6Zm9jdXN7YmFja2dyb3VuZDpoc2xhKDAsMCUsMTAwJSwuOCl9LmNhcGliYXJhIG5hdi5sZWZ0IC5leHRlbmQtbmF2LWxpc3R7d2lkdGg6dmFyKC0tZXgtbmF2LXdpZHRoKTtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OmNhbGModmFyKC0tbmF2LXdpZHRoKSArIHZhcigtLWluaXRpYWwtbmF2LXdpZHRoKSk7dG9wOjA7b3ZlcmZsb3c6aGlkZGVuO2Rpc3BsYXk6YmxvY2t9LmNhcGliYXJhIG5hdi5sZWZ0IC5leHRlbmQtbmF2LWxpc3QgLmNoaWxkLWV4LW5hdi1pdGVtLC5jYXBpYmFyYSBuYXYubGVmdCAuZXh0ZW5kLW5hdi1saXN0IC5leC1uYXYtaXRlbXtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjYjBiZWM1O2hlaWdodDp2YXIoLS1pdGVtLWhlaWdodCk7Ym94LXNpemluZzpib3JkZXItYm94O2Rpc3BsYXk6ZmxleDtsaW5lLWhlaWdodDoxLjc1cmVtfS5jYXBpYmFyYSBuYXYubGVmdCAuZXh0ZW5kLW5hdi1saXN0IC5jaGlsZC1leC1uYXYtaXRlbSAuaXRlbS10aXRsZSwuY2FwaWJhcmEgbmF2LmxlZnQgLmV4dGVuZC1uYXYtbGlzdCAuZXgtbmF2LWl0ZW0gLml0ZW0tdGl0bGV7ZmxleDoxIDAgYXV0bztwYWRkaW5nOjRweCA4cHh9LmNhcGliYXJhIG5hdi5sZWZ0IC5leHRlbmQtbmF2LWxpc3QgLmNoaWxkLWV4LW5hdi1pdGVtIC5pdGVtLWNvbCwuY2FwaWJhcmEgbmF2LmxlZnQgLmV4dGVuZC1uYXYtbGlzdCAuZXgtbmF2LWl0ZW0gLml0ZW0tY29se2ZsZXg6MCAwIHZhcigtLW5hdi1pdGVtLWNvbC13aWR0aCk7dGV4dC1hbGlnbjpjZW50ZXI7cGFkZGluZzo0cHggOHB4fS5jYXBpYmFyYSBuYXYubGVmdCAuZXh0ZW5kLW5hdi1saXN0IC5jaGlsZC1leC1uYXYtaXRlbSAuaXRlbS1jb2wuaGFzLWlucHV0LC5jYXBpYmFyYSBuYXYubGVmdCAuZXh0ZW5kLW5hdi1saXN0IC5leC1uYXYtaXRlbSAuaXRlbS1jb2wuaGFzLWlucHV0e3BhZGRpbmc6MH0uY2FwaWJhcmEgbmF2LmxlZnQgLmV4dGVuZC1uYXYtbGlzdCAuY2hpbGQtZXgtbmF2LWl0ZW0gLml0ZW0tY29sLmhhcy1pbnB1dD5pbnB1dCwuY2FwaWJhcmEgbmF2LmxlZnQgLmV4dGVuZC1uYXYtbGlzdCAuZXgtbmF2LWl0ZW0gLml0ZW0tY29sLmhhcy1pbnB1dD5pbnB1dHt0ZXh0LWFsaWduOmNlbnRlcjtmb250LXNpemU6Ljg3NWVtO3dpZHRoOmNhbGMoMTAwJSAtIDhweCk7ZGlzcGxheTpibG9jaztib3JkZXI6MXB4IHNvbGlkIGdyZXk7Ym9yZGVyLXJhZGl1czozcHg7aGVpZ2h0OjI0cHg7bWFyZ2luOjhweCA0cHggNHB4O2JhY2tncm91bmQ6aHNsYSgwLDAlLDEwMCUsLjIpfS5jYXBpYmFyYSBuYXYubGVmdCAuZXh0ZW5kLW5hdi1saXN0IC5jaGlsZC1leC1uYXYtaXRlbSAuaXRlbS1jb2wuaGFzLWlucHV0PmlucHV0OmFjdGl2ZSwuY2FwaWJhcmEgbmF2LmxlZnQgLmV4dGVuZC1uYXYtbGlzdCAuY2hpbGQtZXgtbmF2LWl0ZW0gLml0ZW0tY29sLmhhcy1pbnB1dD5pbnB1dDpmb2N1cywuY2FwaWJhcmEgbmF2LmxlZnQgLmV4dGVuZC1uYXYtbGlzdCAuZXgtbmF2LWl0ZW0gLml0ZW0tY29sLmhhcy1pbnB1dD5pbnB1dDphY3RpdmUsLmNhcGliYXJhIG5hdi5sZWZ0IC5leHRlbmQtbmF2LWxpc3QgLmV4LW5hdi1pdGVtIC5pdGVtLWNvbC5oYXMtaW5wdXQ+aW5wdXQ6Zm9jdXN7YmFja2dyb3VuZDpoc2xhKDAsMCUsMTAwJSwuOCl9LmNhcGliYXJhIG5hdi5sZWZ0IC5idG4tbmF2LWxpc3R7bGVmdDpjYWxjKHZhcigtLW5hdi13aWR0aCkgKyB2YXIoLS1pbml0aWFsLW5hdi13aWR0aCkgKyB2YXIoLS1leC1uYXYtd2lkdGgpKTt3aWR0aDp2YXIoLS1idG4tbmF2LXdpZHRoKTtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtvdmVyZmxvdzpoaWRkZW59LmNhcGliYXJhIG5hdi5sZWZ0IC5idG4tbmF2LWxpc3QgLmJ0bi1jaGlsZC1uYXYtaXRlbSAuYnRuLW5hdi1pdGVtLWNvbnRlbnQsLmNhcGliYXJhIG5hdi5sZWZ0IC5idG4tbmF2LWxpc3QgLmJ0bi1uYXYtaXRlbSAuYnRuLW5hdi1pdGVtLWNvbnRlbnR7aGVpZ2h0OnZhcigtLWl0ZW0taGVpZ2h0KTt3aWR0aDppbmhlcml0O3BhZGRpbmc6NHB4IDZweDtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjYjBiZWM1O3RleHQtYWxpZ246cmlnaHR9LmNhcGliYXJhIG5hdi5sZWZ0IC5uYXYtaXRlbS10b3RhbC1mb290ZXJ7cGFkZGluZy10b3A6M3B4fS5jYXBpYmFyYSBuYXYgLmJ0bi1uYXYtaXRlbS5wYXJlbnQsLmNhcGliYXJhIG5hdiAuZXgtbmF2LWl0ZW0ucGFyZW50LC5jYXBpYmFyYSBuYXYgLmluaXRpYWwtbmF2LWl0ZW0ucGFyZW50LC5jYXBpYmFyYSBuYXYgLm5hdi1pdGVtLWNvbnRhaW5lci5wYXJlbnR7YmFja2dyb3VuZDpyZ2JhKDI1LDExOCwyMTAsLjEpfS5jYXBpYmFyYSBuYXYgLmJ0bi1uYXYtaXRlbS5wYXJlbnQ+Lml0ZW0tdGl0bGUsLmNhcGliYXJhIG5hdiAuZXgtbmF2LWl0ZW0ucGFyZW50Pi5pdGVtLXRpdGxlLC5jYXBpYmFyYSBuYXYgLmluaXRpYWwtbmF2LWl0ZW0ucGFyZW50Pi5pdGVtLXRpdGxlLC5jYXBpYmFyYSBuYXYgLm5hdi1pdGVtLWNvbnRhaW5lci5wYXJlbnQ+Lml0ZW0tdGl0bGV7bWF4LXdpZHRoOmNhbGModmFyKC0tbmF2LXdpZHRoKSArIHZhcigtLWV4LW5hdi13aWR0aCkgKyB2YXIoLS1pbml0aWFsLW5hdi13aWR0aCkgKyB2YXIoLS1idG4tbmF2LXdpZHRoKSAtIDYwcHgpO3dpZHRoOmF1dG99LmNhcGliYXJhIG5hdiAubmF2LWl0ZW0tbGlzdCAuY2hpbGQtbmF2LWl0ZW0sLmNhcGliYXJhIG5hdiAubmF2LWl0ZW0tbGlzdCAubmF2LWl0ZW17bWluLWhlaWdodDp2YXIoLS1pdGVtLWhlaWdodCk7Ym94LXNpemluZzpib3JkZXItYm94O3Bvc2l0aW9uOnJlbGF0aXZlfS5jYXBpYmFyYSBuYXYgLm5hdi1pdGVtLWxpc3QgLmNoaWxkLW5hdi1pdGVtIC5uYXYtaXRlbS1jb250YWluZXIsLmNhcGliYXJhIG5hdiAubmF2LWl0ZW0tbGlzdCAubmF2LWl0ZW0gLm5hdi1pdGVtLWNvbnRhaW5lcntkaXNwbGF5OmZsZXg7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2IwYmVjNTtoZWlnaHQ6dmFyKC0taXRlbS1oZWlnaHQpfS5jYXBpYmFyYSBuYXYgLm5hdi1pdGVtLWxpc3QgLmNoaWxkLW5hdi1pdGVtIC5uYXYtaXRlbS1jb250YWluZXIgLnRyZWUtaWNvbiwuY2FwaWJhcmEgbmF2IC5uYXYtaXRlbS1saXN0IC5uYXYtaXRlbSAubmF2LWl0ZW0tY29udGFpbmVyIC50cmVlLWljb257dHJhbnNpdGlvbjphbGwgLjVzIGVhc2U7YmFja2dyb3VuZDp0cmFuc3BhcmVudDtib3JkZXI6bm9uZTt3aWR0aDozNHB4O2ZsZXg6MCAwIDM0cHg7Zm9udC1zaXplOjEuNWVtO3RleHQtYWxpZ246Y2VudGVyO2N1cnNvcjpwb2ludGVyfS5jYXBpYmFyYSBuYXYgLm5hdi1pdGVtLWxpc3QgLmNoaWxkLW5hdi1pdGVtIC5uYXYtaXRlbS1jb250YWluZXIgLm5hdi1pdGVtLWljb24sLmNhcGliYXJhIG5hdiAubmF2LWl0ZW0tbGlzdCAubmF2LWl0ZW0gLm5hdi1pdGVtLWNvbnRhaW5lciAubmF2LWl0ZW0taWNvbntmbGV4OjAgMCAzNHB4O2ZvbnQtc2l6ZToxLjEyNWVtO3ZlcnRpY2FsLWFsaWduOm1pZGRsZTt0ZXh0LWFsaWduOmNlbnRlcjtsaW5lLWhlaWdodDo0MHB4O21hcmdpbi10b3A6MTJweH0uY2FwaWJhcmEgbmF2IC5uYXYtaXRlbS1saXN0IC5jaGlsZC1uYXYtaXRlbSAubmF2LWl0ZW0tY29udGFpbmVyIC5uYXYtaXRlbS1pY29uIHBhdGgsLmNhcGliYXJhIG5hdiAubmF2LWl0ZW0tbGlzdCAubmF2LWl0ZW0gLm5hdi1pdGVtLWNvbnRhaW5lciAubmF2LWl0ZW0taWNvbiBwYXRoe3dpZHRoOjIwcHg7aGVpZ2h0OjIwcHh9LmNhcGliYXJhIG5hdiAubmF2LWl0ZW0tbGlzdCAuY2hpbGQtbmF2LWl0ZW0gLm5hdi1pdGVtLWNvbnRhaW5lciAuaXRlbS10aXRsZSwuY2FwaWJhcmEgbmF2IC5uYXYtaXRlbS1saXN0IC5uYXYtaXRlbSAubmF2LWl0ZW0tY29udGFpbmVyIC5pdGVtLXRpdGxle2ZsZXg6MSAxIGF1dG87ZGlzcGxheTpncmlkO2ZvbnQtc2l6ZToxZW07bGluZS1oZWlnaHQ6MzRweDtwYWRkaW5nOjRweCA4cHh9LmNhcGliYXJhIG5hdiAubmF2LWl0ZW0tbGlzdCAuY2hpbGQtbmF2LWl0ZW0gLm5hdi1pdGVtLWNvbnRhaW5lciAuaXRlbS10aXRsZS5mdWxsLXdpZHRoLC5jYXBpYmFyYSBuYXYgLm5hdi1pdGVtLWxpc3QgLm5hdi1pdGVtIC5uYXYtaXRlbS1jb250YWluZXIgLml0ZW0tdGl0bGUuZnVsbC13aWR0aHtmbGV4OjEgMCBhdXRvO2Rpc3BsYXk6aW5saW5lLWJsb2NrfS5jYXBpYmFyYSBuYXYgLm5hdi1pdGVtLWxpc3QgLmNoaWxkLW5hdi1pdGVtIC5uYXYtaXRlbS1jb250YWluZXIgLml0ZW0tdGl0bGUuY2xpY2tlYWJsZSwuY2FwaWJhcmEgbmF2IC5uYXYtaXRlbS1saXN0IC5uYXYtaXRlbSAubmF2LWl0ZW0tY29udGFpbmVyIC5pdGVtLXRpdGxlLmNsaWNrZWFibGV7Y3Vyc29yOnBvaW50ZXJ9LmNhcGliYXJhIG5hdiAubmF2LWl0ZW0tbGlzdCAuY2hpbGQtbmF2LWl0ZW0gLm5hdi1pdGVtLWNvbnRhaW5lciAuaXRlbS10aXRsZS5jbGlja2VhYmxlOmhvdmVyLC5jYXBpYmFyYSBuYXYgLm5hdi1pdGVtLWxpc3QgLm5hdi1pdGVtIC5uYXYtaXRlbS1jb250YWluZXIgLml0ZW0tdGl0bGUuY2xpY2tlYWJsZTpob3ZlcntiYWNrZ3JvdW5kOmhzbGEoMCwwJSwzOS4yJSwuMikhaW1wb3J0YW50O3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmV9LmNhcGliYXJhLmV4dGVuZGVkLXJpZ2h0IG5hdi5yaWdodHtkaXNwbGF5OmJsb2NrfS5jYXBpYmFyYS5oZWFkZXItZXh0ZW5kZWQgbmF2LmxlZnR7bWluLWhlaWdodDpjYWxjKDEwMCUgLSB2YXIoLS1oZWFkZXItaGVpZ2h0KSArIHZhcigtLWV4LWhlYWRlci1oZWlnaHQpKX0uY2FwaWJhcmEuaGVhZGVyLWV4dGVuZGVkIG5hdi5yaWdodHt0b3A6Y2FsYyh2YXIoLS1oZWFkZXItaGVpZ2h0KSArIHZhcigtLWhlYWRlci10b3AtaGVpZ2h0KSArIHZhcigtLWV4LWhlYWRlci1oZWlnaHQpKTtoZWlnaHQ6Y2FsYygxMDAlIC0gdmFyKC0taGVhZGVyLWhlaWdodCkgLSB2YXIoLS1oZWFkZXItdG9wLWhlaWdodCkgLSB2YXIoLS1leC1oZWFkZXItaGVpZ2h0KSl9LmNhcGliYXJhIG5hdi5sZWZ0LC5jYXBpYmFyYSBuYXYucmlnaHQsLmNhcGliYXJhIG5hdi5yaWdodCAuYnV0dG9uLXNlY3Rpb257YmFja2dyb3VuZDojZmFmYWZhfS5jYXBpYmFyYSBuYXYubGVmdCAuZGV0YWlsLW5hdi1pdGVte2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC4yKTtiYWNrZ3JvdW5kOiNmZmZ9LmNhcGliYXJhIG5hdi5sZWZ0IC5kZXRhaWwtbmF2LWl0ZW0gLmhlYWRlci1jaGlwLnJlZC1saWdodHtib3JkZXItY29sb3I6I2QzMmYyZn0uY2FwaWJhcmEgbmF2LmxlZnQgLmRldGFpbC1uYXYtaXRlbSAuaGVhZGVyLWNoaXAueWVsbG93LWxpZ2h0e2JvcmRlci1jb2xvcjojZmRkODM1fS5jYXBpYmFyYSBuYXYubGVmdCAuZGV0YWlsLW5hdi1pdGVtIC5oZWFkZXItY2hpcC5ncmVlbi1saWdodHtib3JkZXItY29sb3I6IzJlN2QzMn0uY2FwaWJhcmEgbmF2IC5uYXYtaXRlbS1saXN0IC5jaGlsZC1uYXYtaXRlbSAubmF2LWl0ZW0tY29udGFpbmVyIC50cmVlLWljb24sLmNhcGliYXJhIG5hdiAubmF2LWl0ZW0tbGlzdCAubmF2LWl0ZW0gLm5hdi1pdGVtLWNvbnRhaW5lciAudHJlZS1pY29ue2NvbG9yOiMzNzQ3NGZ9LmNhcGliYXJhIG5hdiAubmF2LWl0ZW0tbGlzdCAuY2hpbGQtbmF2LWl0ZW0gLm5hdi1pdGVtLWNvbnRhaW5lciAubmF2LWl0ZW0taWNvbiwuY2FwaWJhcmEgbmF2IC5uYXYtaXRlbS1saXN0IC5uYXYtaXRlbSAubmF2LWl0ZW0tY29udGFpbmVyIC5uYXYtaXRlbS1pY29ue2NvbG9yOnJnYmEoNTUsNzEsNzksLjIpfS5jYXBpYmFyYS5kYXJrLXRoZW1lIG5hdi5yaWdodCwuY2FwaWJhcmEuZGFyay10aGVtZSBuYXYucmlnaHQgLmJ1dHRvbi1zZWN0aW9ue2JhY2tncm91bmQ6IzIyMjgzN30uY2FwaWJhcmEuZGFyay10aGVtZSBuYXYubGVmdHtiYWNrZ3JvdW5kOiMyMjI4Mzc7Ym9yZGVyLWNvbG9yOnJnYmEoNjQsNzgsMTA1LC42KX0uY2FwaWJhcmEuZGFyay10aGVtZSBuYXYubGVmdCAuZGV0YWlsLW5hdi1pdGVte2JvcmRlci1jb2xvcjojNDA0ZTY5O2JhY2tncm91bmQ6IzIyMjgzN30uY2FwaWJhcmEuZGFyay10aGVtZSBuYXYubGVmdCAuZGV0YWlsLW5hdi1pdGVtIC5oZWFkZXItY2hpcHtjb2xvcjojZjBmMGYwfS5jYXBpYmFyYS5kYXJrLXRoZW1lIG5hdi5sZWZ0IC5kZXRhaWwtbmF2LWl0ZW0gLmhlYWRlci1jaGlwLnJlZC1saWdodHtib3JkZXItY29sb3I6I2I3MWMxY30uY2FwaWJhcmEuZGFyay10aGVtZSBuYXYubGVmdCAuZGV0YWlsLW5hdi1pdGVtIC5oZWFkZXItY2hpcC55ZWxsb3ctbGlnaHR7Ym9yZGVyLWNvbG9yOiNmYjhjMDB9LmNhcGliYXJhLmRhcmstdGhlbWUgbmF2LmxlZnQgLmRldGFpbC1uYXYtaXRlbSAuaGVhZGVyLWNoaXAuZ3JlZW4tbGlnaHR7Ym9yZGVyLWNvbG9yOiMzODhlM2N9LmNhcGliYXJhLmRhcmstdGhlbWUgbmF2LmxlZnQgLmV4dGVuZC1uYXYtbGlzdCAuY2hpbGQtZXgtbmF2LWl0ZW0sLmNhcGliYXJhLmRhcmstdGhlbWUgbmF2LmxlZnQgLmV4dGVuZC1uYXYtbGlzdCAuY2hpbGQtaW5pdGlhbC1uYXYtaXRlbSwuY2FwaWJhcmEuZGFyay10aGVtZSBuYXYubGVmdCAuZXh0ZW5kLW5hdi1saXN0IC5leC1uYXYtaXRlbSwuY2FwaWJhcmEuZGFyay10aGVtZSBuYXYubGVmdCAuZXh0ZW5kLW5hdi1saXN0IC5pbml0aWFsLW5hdi1pdGVtLC5jYXBpYmFyYS5kYXJrLXRoZW1lIG5hdi5sZWZ0IC5pbml0aWFsLW5hdi1saXN0IC5jaGlsZC1leC1uYXYtaXRlbSwuY2FwaWJhcmEuZGFyay10aGVtZSBuYXYubGVmdCAuaW5pdGlhbC1uYXYtbGlzdCAuY2hpbGQtaW5pdGlhbC1uYXYtaXRlbSwuY2FwaWJhcmEuZGFyay10aGVtZSBuYXYubGVmdCAuaW5pdGlhbC1uYXYtbGlzdCAuZXgtbmF2LWl0ZW0sLmNhcGliYXJhLmRhcmstdGhlbWUgbmF2LmxlZnQgLmluaXRpYWwtbmF2LWxpc3QgLmluaXRpYWwtbmF2LWl0ZW17Ym9yZGVyLWNvbG9yOnJnYmEoNjQsNzgsMTA1LC42KX0uY2FwaWJhcmEuZGFyay10aGVtZSBuYXYubGVmdCAuZXh0ZW5kLW5hdi1saXN0IC5jaGlsZC1leC1uYXYtaXRlbSAuaXRlbS1jb2wuaGFzLWlucHV0IC5ob3VyLWlucHV0LC5jYXBpYmFyYS5kYXJrLXRoZW1lIG5hdi5sZWZ0IC5leHRlbmQtbmF2LWxpc3QgLmNoaWxkLWV4LW5hdi1pdGVtIC5pdGVtLWNvbC5oYXMtaW5wdXQgaW5wdXQsLmNhcGliYXJhLmRhcmstdGhlbWUgbmF2LmxlZnQgLmV4dGVuZC1uYXYtbGlzdCAuY2hpbGQtaW5pdGlhbC1uYXYtaXRlbSAuaXRlbS1jb2wuaGFzLWlucHV0IC5ob3VyLWlucHV0LC5jYXBpYmFyYS5kYXJrLXRoZW1lIG5hdi5sZWZ0IC5leHRlbmQtbmF2LWxpc3QgLmNoaWxkLWluaXRpYWwtbmF2LWl0ZW0gLml0ZW0tY29sLmhhcy1pbnB1dCBpbnB1dCwuY2FwaWJhcmEuZGFyay10aGVtZSBuYXYubGVmdCAuZXh0ZW5kLW5hdi1saXN0IC5leC1uYXYtaXRlbSAuaXRlbS1jb2wuaGFzLWlucHV0IC5ob3VyLWlucHV0LC5jYXBpYmFyYS5kYXJrLXRoZW1lIG5hdi5sZWZ0IC5leHRlbmQtbmF2LWxpc3QgLmV4LW5hdi1pdGVtIC5pdGVtLWNvbC5oYXMtaW5wdXQgaW5wdXQsLmNhcGliYXJhLmRhcmstdGhlbWUgbmF2LmxlZnQgLmV4dGVuZC1uYXYtbGlzdCAuaW5pdGlhbC1uYXYtaXRlbSAuaXRlbS1jb2wuaGFzLWlucHV0IC5ob3VyLWlucHV0LC5jYXBpYmFyYS5kYXJrLXRoZW1lIG5hdi5sZWZ0IC5leHRlbmQtbmF2LWxpc3QgLmluaXRpYWwtbmF2LWl0ZW0gLml0ZW0tY29sLmhhcy1pbnB1dCBpbnB1dCwuY2FwaWJhcmEuZGFyay10aGVtZSBuYXYubGVmdCAuaW5pdGlhbC1uYXYtbGlzdCAuY2hpbGQtZXgtbmF2LWl0ZW0gLml0ZW0tY29sLmhhcy1pbnB1dCAuaG91ci1pbnB1dCwuY2FwaWJhcmEuZGFyay10aGVtZSBuYXYubGVmdCAuaW5pdGlhbC1uYXYtbGlzdCAuY2hpbGQtZXgtbmF2LWl0ZW0gLml0ZW0tY29sLmhhcy1pbnB1dCBpbnB1dCwuY2FwaWJhcmEuZGFyay10aGVtZSBuYXYubGVmdCAuaW5pdGlhbC1uYXYtbGlzdCAuY2hpbGQtaW5pdGlhbC1uYXYtaXRlbSAuaXRlbS1jb2wuaGFzLWlucHV0IC5ob3VyLWlucHV0LC5jYXBpYmFyYS5kYXJrLXRoZW1lIG5hdi5sZWZ0IC5pbml0aWFsLW5hdi1saXN0IC5jaGlsZC1pbml0aWFsLW5hdi1pdGVtIC5pdGVtLWNvbC5oYXMtaW5wdXQgaW5wdXQsLmNhcGliYXJhLmRhcmstdGhlbWUgbmF2LmxlZnQgLmluaXRpYWwtbmF2LWxpc3QgLmV4LW5hdi1pdGVtIC5pdGVtLWNvbC5oYXMtaW5wdXQgLmhvdXItaW5wdXQsLmNhcGliYXJhLmRhcmstdGhlbWUgbmF2LmxlZnQgLmluaXRpYWwtbmF2LWxpc3QgLmV4LW5hdi1pdGVtIC5pdGVtLWNvbC5oYXMtaW5wdXQgaW5wdXQsLmNhcGliYXJhLmRhcmstdGhlbWUgbmF2LmxlZnQgLmluaXRpYWwtbmF2LWxpc3QgLmluaXRpYWwtbmF2LWl0ZW0gLml0ZW0tY29sLmhhcy1pbnB1dCAuaG91ci1pbnB1dCwuY2FwaWJhcmEuZGFyay10aGVtZSBuYXYubGVmdCAuaW5pdGlhbC1uYXYtbGlzdCAuaW5pdGlhbC1uYXYtaXRlbSAuaXRlbS1jb2wuaGFzLWlucHV0IGlucHV0e2JhY2tncm91bmQ6IzQwNGU2OTtjb2xvcjojZjBmMGYwfS5jYXBpYmFyYS5kYXJrLXRoZW1lIG5hdi5sZWZ0IC5leHRlbmQtbmF2LWxpc3QgLmNoaWxkLWV4LW5hdi1pdGVtIC5pdGVtLWNvbC5oYXMtaW5wdXQgLmhvdXItaW5wdXQ6YWN0aXZlLC5jYXBpYmFyYS5kYXJrLXRoZW1lIG5hdi5sZWZ0IC5leHRlbmQtbmF2LWxpc3QgLmNoaWxkLWV4LW5hdi1pdGVtIC5pdGVtLWNvbC5oYXMtaW5wdXQgLmhvdXItaW5wdXQ6Zm9jdXMsLmNhcGliYXJhLmRhcmstdGhlbWUgbmF2LmxlZnQgLmV4dGVuZC1uYXYtbGlzdCAuY2hpbGQtZXgtbmF2LWl0ZW0gLml0ZW0tY29sLmhhcy1pbnB1dCBpbnB1dDphY3RpdmUsLmNhcGliYXJhLmRhcmstdGhlbWUgbmF2LmxlZnQgLmV4dGVuZC1uYXYtbGlzdCAuY2hpbGQtZXgtbmF2LWl0ZW0gLml0ZW0tY29sLmhhcy1pbnB1dCBpbnB1dDpmb2N1cywuY2FwaWJhcmEuZGFyay10aGVtZSBuYXYubGVmdCAuZXh0ZW5kLW5hdi1saXN0IC5jaGlsZC1pbml0aWFsLW5hdi1pdGVtIC5pdGVtLWNvbC5oYXMtaW5wdXQgLmhvdXItaW5wdXQ6YWN0aXZlLC5jYXBpYmFyYS5kYXJrLXRoZW1lIG5hdi5sZWZ0IC5leHRlbmQtbmF2LWxpc3QgLmNoaWxkLWluaXRpYWwtbmF2LWl0ZW0gLml0ZW0tY29sLmhhcy1pbnB1dCAuaG91ci1pbnB1dDpmb2N1cywuY2FwaWJhcmEuZGFyay10aGVtZSBuYXYubGVmdCAuZXh0ZW5kLW5hdi1saXN0IC5jaGlsZC1pbml0aWFsLW5hdi1pdGVtIC5pdGVtLWNvbC5oYXMtaW5wdXQgaW5wdXQ6YWN0aXZlLC5jYXBpYmFyYS5kYXJrLXRoZW1lIG5hdi5sZWZ0IC5leHRlbmQtbmF2LWxpc3QgLmNoaWxkLWluaXRpYWwtbmF2LWl0ZW0gLml0ZW0tY29sLmhhcy1pbnB1dCBpbnB1dDpmb2N1cywuY2FwaWJhcmEuZGFyay10aGVtZSBuYXYubGVmdCAuZXh0ZW5kLW5hdi1saXN0IC5leC1uYXYtaXRlbSAuaXRlbS1jb2wuaGFzLWlucHV0IC5ob3VyLWlucHV0OmFjdGl2ZSwuY2FwaWJhcmEuZGFyay10aGVtZSBuYXYubGVmdCAuZXh0ZW5kLW5hdi1saXN0IC5leC1uYXYtaXRlbSAuaXRlbS1jb2wuaGFzLWlucHV0IC5ob3VyLWlucHV0OmZvY3VzLC5jYXBpYmFyYS5kYXJrLXRoZW1lIG5hdi5sZWZ0IC5leHRlbmQtbmF2LWxpc3QgLmV4LW5hdi1pdGVtIC5pdGVtLWNvbC5oYXMtaW5wdXQgaW5wdXQ6YWN0aXZlLC5jYXBpYmFyYS5kYXJrLXRoZW1lIG5hdi5sZWZ0IC5leHRlbmQtbmF2LWxpc3QgLmV4LW5hdi1pdGVtIC5pdGVtLWNvbC5oYXMtaW5wdXQgaW5wdXQ6Zm9jdXMsLmNhcGliYXJhLmRhcmstdGhlbWUgbmF2LmxlZnQgLmV4dGVuZC1uYXYtbGlzdCAuaW5pdGlhbC1uYXYtaXRlbSAuaXRlbS1jb2wuaGFzLWlucHV0IC5ob3VyLWlucHV0OmFjdGl2ZSwuY2FwaWJhcmEuZGFyay10aGVtZSBuYXYubGVmdCAuZXh0ZW5kLW5hdi1saXN0IC5pbml0aWFsLW5hdi1pdGVtIC5pdGVtLWNvbC5oYXMtaW5wdXQgLmhvdXItaW5wdXQ6Zm9jdXMsLmNhcGliYXJhLmRhcmstdGhlbWUgbmF2LmxlZnQgLmV4dGVuZC1uYXYtbGlzdCAuaW5pdGlhbC1uYXYtaXRlbSAuaXRlbS1jb2wuaGFzLWlucHV0IGlucHV0OmFjdGl2ZSwuY2FwaWJhcmEuZGFyay10aGVtZSBuYXYubGVmdCAuZXh0ZW5kLW5hdi1saXN0IC5pbml0aWFsLW5hdi1pdGVtIC5pdGVtLWNvbC5oYXMtaW5wdXQgaW5wdXQ6Zm9jdXMsLmNhcGliYXJhLmRhcmstdGhlbWUgbmF2LmxlZnQgLmluaXRpYWwtbmF2LWxpc3QgLmNoaWxkLWV4LW5hdi1pdGVtIC5pdGVtLWNvbC5oYXMtaW5wdXQgLmhvdXItaW5wdXQ6YWN0aXZlLC5jYXBpYmFyYS5kYXJrLXRoZW1lIG5hdi5sZWZ0IC5pbml0aWFsLW5hdi1saXN0IC5jaGlsZC1leC1uYXYtaXRlbSAuaXRlbS1jb2wuaGFzLWlucHV0IC5ob3VyLWlucHV0OmZvY3VzLC5jYXBpYmFyYS5kYXJrLXRoZW1lIG5hdi5sZWZ0IC5pbml0aWFsLW5hdi1saXN0IC5jaGlsZC1leC1uYXYtaXRlbSAuaXRlbS1jb2wuaGFzLWlucHV0IGlucHV0OmFjdGl2ZSwuY2FwaWJhcmEuZGFyay10aGVtZSBuYXYubGVmdCAuaW5pdGlhbC1uYXYtbGlzdCAuY2hpbGQtZXgtbmF2LWl0ZW0gLml0ZW0tY29sLmhhcy1pbnB1dCBpbnB1dDpmb2N1cywuY2FwaWJhcmEuZGFyay10aGVtZSBuYXYubGVmdCAuaW5pdGlhbC1uYXYtbGlzdCAuY2hpbGQtaW5pdGlhbC1uYXYtaXRlbSAuaXRlbS1jb2wuaGFzLWlucHV0IC5ob3VyLWlucHV0OmFjdGl2ZSwuY2FwaWJhcmEuZGFyay10aGVtZSBuYXYubGVmdCAuaW5pdGlhbC1uYXYtbGlzdCAuY2hpbGQtaW5pdGlhbC1uYXYtaXRlbSAuaXRlbS1jb2wuaGFzLWlucHV0IC5ob3VyLWlucHV0OmZvY3VzLC5jYXBpYmFyYS5kYXJrLXRoZW1lIG5hdi5sZWZ0IC5pbml0aWFsLW5hdi1saXN0IC5jaGlsZC1pbml0aWFsLW5hdi1pdGVtIC5pdGVtLWNvbC5oYXMtaW5wdXQgaW5wdXQ6YWN0aXZlLC5jYXBpYmFyYS5kYXJrLXRoZW1lIG5hdi5sZWZ0IC5pbml0aWFsLW5hdi1saXN0IC5jaGlsZC1pbml0aWFsLW5hdi1pdGVtIC5pdGVtLWNvbC5oYXMtaW5wdXQgaW5wdXQ6Zm9jdXMsLmNhcGliYXJhLmRhcmstdGhlbWUgbmF2LmxlZnQgLmluaXRpYWwtbmF2LWxpc3QgLmV4LW5hdi1pdGVtIC5pdGVtLWNvbC5oYXMtaW5wdXQgLmhvdXItaW5wdXQ6YWN0aXZlLC5jYXBpYmFyYS5kYXJrLXRoZW1lIG5hdi5sZWZ0IC5pbml0aWFsLW5hdi1saXN0IC5leC1uYXYtaXRlbSAuaXRlbS1jb2wuaGFzLWlucHV0IC5ob3VyLWlucHV0OmZvY3VzLC5jYXBpYmFyYS5kYXJrLXRoZW1lIG5hdi5sZWZ0IC5pbml0aWFsLW5hdi1saXN0IC5leC1uYXYtaXRlbSAuaXRlbS1jb2wuaGFzLWlucHV0IGlucHV0OmFjdGl2ZSwuY2FwaWJhcmEuZGFyay10aGVtZSBuYXYubGVmdCAuaW5pdGlhbC1uYXYtbGlzdCAuZXgtbmF2LWl0ZW0gLml0ZW0tY29sLmhhcy1pbnB1dCBpbnB1dDpmb2N1cywuY2FwaWJhcmEuZGFyay10aGVtZSBuYXYubGVmdCAuaW5pdGlhbC1uYXYtbGlzdCAuaW5pdGlhbC1uYXYtaXRlbSAuaXRlbS1jb2wuaGFzLWlucHV0IC5ob3VyLWlucHV0OmFjdGl2ZSwuY2FwaWJhcmEuZGFyay10aGVtZSBuYXYubGVmdCAuaW5pdGlhbC1uYXYtbGlzdCAuaW5pdGlhbC1uYXYtaXRlbSAuaXRlbS1jb2wuaGFzLWlucHV0IC5ob3VyLWlucHV0OmZvY3VzLC5jYXBpYmFyYS5kYXJrLXRoZW1lIG5hdi5sZWZ0IC5pbml0aWFsLW5hdi1saXN0IC5pbml0aWFsLW5hdi1pdGVtIC5pdGVtLWNvbC5oYXMtaW5wdXQgaW5wdXQ6YWN0aXZlLC5jYXBpYmFyYS5kYXJrLXRoZW1lIG5hdi5sZWZ0IC5pbml0aWFsLW5hdi1saXN0IC5pbml0aWFsLW5hdi1pdGVtIC5pdGVtLWNvbC5oYXMtaW5wdXQgaW5wdXQ6Zm9jdXN7YmFja2dyb3VuZDpoc2xhKDAsMCUsMTAwJSwuMil9LmNhcGliYXJhLmRhcmstdGhlbWUgbmF2LmxlZnQgLmJ0bi1uYXYtbGlzdCAuYnRuLWNoaWxkLW5hdi1pdGVtIC5idG4tbmF2LWl0ZW0tY29udGVudCwuY2FwaWJhcmEuZGFyay10aGVtZSBuYXYubGVmdCAuYnRuLW5hdi1saXN0IC5idG4tbmF2LWl0ZW0gLmJ0bi1uYXYtaXRlbS1jb250ZW50LC5jYXBpYmFyYS5kYXJrLXRoZW1lIG5hdiAubmF2LWl0ZW0tbGlzdCAuY2hpbGQtbmF2LWl0ZW0gLm5hdi1pdGVtLWNvbnRhaW5lciwuY2FwaWJhcmEuZGFyay10aGVtZSBuYXYgLm5hdi1pdGVtLWxpc3QgLm5hdi1pdGVtIC5uYXYtaXRlbS1jb250YWluZXJ7Ym9yZGVyLWNvbG9yOnJnYmEoNjQsNzgsMTA1LC42KX0uY2FwaWJhcmEuZGFyay10aGVtZSBuYXYgLm5hdi1pdGVtLWxpc3QgLmNoaWxkLW5hdi1pdGVtIC5uYXYtaXRlbS1jb250YWluZXIgLnRyZWUtaWNvbiwuY2FwaWJhcmEuZGFyay10aGVtZSBuYXYgLm5hdi1pdGVtLWxpc3QgLm5hdi1pdGVtIC5uYXYtaXRlbS1jb250YWluZXIgLnRyZWUtaWNvbntjb2xvcjojZjBmMGYwfS5jYXBpYmFyYS5kYXJrLXRoZW1lIG5hdiAubmF2LWl0ZW0tbGlzdCAuY2hpbGQtbmF2LWl0ZW0gLm5hdi1pdGVtLWNvbnRhaW5lciAubmF2LWl0ZW0taWNvbiwuY2FwaWJhcmEuZGFyay10aGVtZSBuYXYgLm5hdi1pdGVtLWxpc3QgLm5hdi1pdGVtIC5uYXYtaXRlbS1jb250YWluZXIgLm5hdi1pdGVtLWljb257Y29sb3I6aHNsYSgwLDAlLDk0LjElLC4yKX0uY2FwaWJhcmEgLmNvbnRhaW5lci10bCBoZWFkZXJ7aGVpZ2h0OnZhcigtLWhlYWRlci1oZWlnaHQpO3dpZHRoOi13ZWJraXQtZml0LWNvbnRlbnQ7d2lkdGg6LW1vei1maXQtY29udGVudDt3aWR0aDpmaXQtY29udGVudDt0b3A6MDttaW4td2lkdGg6MTAwJTtwb3NpdGlvbjotd2Via2l0LXN0aWNreTtwb3NpdGlvbjpzdGlja3k7ei1pbmRleDozO2JvcmRlci1ib3R0b206MnB4IHNvbGlkIGdyZXk7Ym94LXNpemluZzpib3JkZXItYm94O2JveC1zaGFkb3c6MCAycHggNHB4IC0xcHggcmdiYSgwLDAsMCwuMiksMCA0cHggNXB4IDAgcmdiYSgwLDAsMCwuMTQpLDAgMXB4IDEwcHggMCByZ2JhKDAsMCwwLC4xMil9LmNhcGliYXJhIC5jb250YWluZXItdGwgaGVhZGVyIC5oZWFkZXItY29udGFpbmVyLWV4dGVuZGVke2hlaWdodDphdXRvO3Bvc2l0aW9uOnJlbGF0aXZlO3BhZGRpbmctbGVmdDpjYWxjKHZhcigtLW5hdi13aWR0aCkgKyB2YXIoLS1pbml0aWFsLW5hdi13aWR0aCkgKyB2YXIoLS1leC1uYXYtd2lkdGgpICsgdmFyKC0tYnRuLW5hdi13aWR0aCkpO3dpZHRoOjEwMCU7Ym94LXNpemluZzpib3JkZXItYm94O2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW59LmNhcGliYXJhIC5jb250YWluZXItdGwgaGVhZGVyIC5oZWFkZXItY29udGFpbmVyLWV4dGVuZGVkIC5pbnB1dC1saXN0e3BhZGRpbmc6MXB4IDA7ZmxleDowIDAgYXV0bztkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246cm93fS5jYXBpYmFyYSAuY29udGFpbmVyLXRsIGhlYWRlciAuaGVhZGVyLWNvbnRhaW5lci1leHRlbmRlZCAuaW5wdXQtbGlzdDpub3QoLnBlcnNpc3RlbnQpe2Rpc3BsYXk6bm9uZX0uY2FwaWJhcmEgLmNvbnRhaW5lci10bCBoZWFkZXIgLmhlYWRlci1jb250YWluZXItZXh0ZW5kZWQgLmlucHV0LWxpc3Q+ZGl2e3dpZHRoOnZhcigtLWRheS13aWR0aCl9LmNhcGliYXJhIC5jb250YWluZXItdGwgaGVhZGVyIC5oZWFkZXItY29udGFpbmVyLWV4dGVuZGVkIC5pbnB1dC1saXN0PmRpdj5zcGFue2Rpc3BsYXk6YmxvY2s7d2lkdGg6aW5oZXJpdDtsaW5lLWhlaWdodDp2YXIoLS1oZWFkZXItaW5wdXQtaGVpZ2h0KTtoZWlnaHQ6dmFyKC0taGVhZGVyLWlucHV0LWhlaWdodCk7dGV4dC1hbGlnbjpjZW50ZXI7Zm9udC1zaXplOi44NzVlbX0uY2FwaWJhcmEgLmNvbnRhaW5lci10bCBoZWFkZXIgLmhlYWRlci1jb250YWluZXItZXh0ZW5kZWQgLmlucHV0LWxpc3QgLmRpYS1pbnB1dCBpbnB1dHt3aWR0aDppbmhlcml0O2hlaWdodDp2YXIoLS1oZWFkZXItaW5wdXQtaGVpZ2h0KTtib3JkZXI6MXB4IHNvbGlkIGdyZXk7Ym9yZGVyLWxlZnQtd2lkdGg6MDtib3JkZXItcmFkaXVzOjA7YmFja2dyb3VuZDpoc2xhKDAsMCUsMTAwJSwuNSk7dGV4dC1hbGlnbjpjZW50ZXI7Zm9udC1zaXplOi44NzVlbX0uY2FwaWJhcmEgLmNvbnRhaW5lci10bCBoZWFkZXIgLmhlYWRlci1jb250YWluZXItZXh0ZW5kZWQgLmlucHV0LWxpc3QgLmRpYS1pbnB1dCBpbnB1dDphY3RpdmUsLmNhcGliYXJhIC5jb250YWluZXItdGwgaGVhZGVyIC5oZWFkZXItY29udGFpbmVyLWV4dGVuZGVkIC5pbnB1dC1saXN0IC5kaWEtaW5wdXQgaW5wdXQ6Zm9jdXN7YmFja2dyb3VuZDpoc2xhKDAsMCUsMTAwJSwuOCl9LmNhcGliYXJhIC5jb250YWluZXItdGwgaGVhZGVyIC5oZWFkZXItY29udGFpbmVye3Bvc2l0aW9uOnJlbGF0aXZlO3BhZGRpbmctbGVmdDpjYWxjKHZhcigtLW5hdi13aWR0aCkgKyB2YXIoLS1pbml0aWFsLW5hdi13aWR0aCkgKyB2YXIoLS1leC1uYXYtd2lkdGgpICsgdmFyKC0tYnRuLW5hdi13aWR0aCkpO3dpZHRoOjEwMCU7ZGlzcGxheTpmbGV4O2hlaWdodDp2YXIoLS1oZWFkZXItbGFiZWxzLWhlaWdodCl9LmNhcGliYXJhIC5jb250YWluZXItdGwgaGVhZGVyIC5oZWFkZXItY29udGFpbmVyIC5oZWFkZXItaXRlbXtwYWRkaW5nOjZweCA4cHg7bWluLXdpZHRoOnZhcigtLWl0ZW0tbWluLXdpZHRoKTtoZWlnaHQ6dmFyKC0taGVhZGVyLWhlaWdodCk7dGV4dC1hbGlnbjpjZW50ZXI7Ym94LXNpemluZzpib3JkZXItYm94O3Bvc2l0aW9uOnJlbGF0aXZlO2JvcmRlci1sZWZ0OjFweCBzb2xpZCByZ2JhKDAsMCwwLC4xKX0uY2FwaWJhcmEgLmNvbnRhaW5lci10bCBoZWFkZXIgLmhlYWRlci1jb250YWluZXIgLmhlYWRlci1pdGVtIHNwYW4uYm90dG9tLXRleHR7cG9zaXRpb246YWJzb2x1dGU7bGVmdDowO2JvdHRvbTo4cHg7d2lkdGg6MTAwJX0uY2FwaWJhcmEgLmNvbnRhaW5lci10bCBoZWFkZXIgLmFnbm8tY2FsZW5kYXJpb3tkaXNwbGF5OmlubGluZS1ibG9jazt3aWR0aDotd2Via2l0LW1heC1jb250ZW50O3dpZHRoOi1tb3otbWF4LWNvbnRlbnQ7d2lkdGg6bWF4LWNvbnRlbnR9LmNhcGliYXJhIC5jb250YWluZXItdGwgaGVhZGVyIC5hZ25vLWNhbGVuZGFyaW8gLmFnbm97cG9zaXRpb246LXdlYmtpdC1zdGlja3k7cG9zaXRpb246c3RpY2t5O2xlZnQ6Y2FsYyh2YXIoLS1uYXYtd2lkdGgpICsgdmFyKC0taW5pdGlhbC1uYXYtd2lkdGgpICsgdmFyKC0tZXgtbmF2LXdpZHRoKSArIHZhcigtLWJ0bi1uYXYtd2lkdGgpKTtkaXNwbGF5OmlubGluZS1ibG9jaztwYWRkaW5nLWxlZnQ6OHB4O3BhZGRpbmctcmlnaHQ6MzJweDtmb250LXNpemU6Ljc1ZW07bWFyZ2luLXRvcDo0cHh9LmNhcGliYXJhIC5jb250YWluZXItdGwgaGVhZGVyIC5hZ25vLWNhbGVuZGFyaW8gLm1lc2Vze2Rpc3BsYXk6YmxvY2s7ZGlzcGxheTpmbGV4fS5jYXBpYmFyYSAuY29udGFpbmVyLXRsIGhlYWRlciAuYWduby1jYWxlbmRhcmlvIC5tZXMtY2FsZW5kYXJpb3tkaXNwbGF5OmlubGluZS1ibG9jazttaW4td2lkdGg6dmFyKC0tZGF5LXdpZHRoKX0uY2FwaWJhcmEgLmNvbnRhaW5lci10bCBoZWFkZXIgLmFnbm8tY2FsZW5kYXJpbyAubWVzLWNhbGVuZGFyaW8gLm1lc3tkaXNwbGF5OmlubGluZS1ibG9jaztwb3NpdGlvbjotd2Via2l0LXN0aWNreTtwb3NpdGlvbjpzdGlja3k7bGVmdDpjYWxjKHZhcigtLW5hdi13aWR0aCkgKyB2YXIoLS1pbml0aWFsLW5hdi13aWR0aCkgKyB2YXIoLS1idG4tbmF2LXdpZHRoKSk7cGFkZGluZy1sZWZ0Oi41ZW07cGFkZGluZy1yaWdodDoyZW07Zm9udC1zaXplOi44NzVlbTttYXJnaW4tdG9wOjZweH0uY2FwaWJhcmEgLmNvbnRhaW5lci10bCBoZWFkZXIgLmFnbm8tY2FsZW5kYXJpbyAubWVzLWNhbGVuZGFyaW8gLm1lcy5tZXMtcmVkdWNlZHt3aWR0aDp2YXIoLS1kYXktd2lkdGgpO21heC13aWR0aDp2YXIoLS1kYXktd2lkdGgpO292ZXJmbG93OmhpZGRlbn0uY2FwaWJhcmEgLmNvbnRhaW5lci10bCBoZWFkZXIgLmFnbm8tY2FsZW5kYXJpbyAubWVzLWNhbGVuZGFyaW8gLm1lcy5tZXMtcmVkdWNlZC5tZXMtcmVkdWNlZC0ye3dpZHRoOmNhbGModmFyKC0tZGF5LXdpZHRoKSoyKX0uY2FwaWJhcmEgLmNvbnRhaW5lci10bCBoZWFkZXIgLmFnbm8tY2FsZW5kYXJpbyAubWVzLWNhbGVuZGFyaW8gLm1lcy5tZXMtcmVkdWNlZC5tZXMtcmVkdWNlZC0ze3dpZHRoOmNhbGModmFyKC0tZGF5LXdpZHRoKSozKX0uY2FwaWJhcmEgLmNvbnRhaW5lci10bCBoZWFkZXIgLmFnbm8tY2FsZW5kYXJpbyAubWVzLWNhbGVuZGFyaW8gLm1lcy5tZXMtcmVkdWNlZCAubWVzLWxhYmVse3dpZHRoOi13ZWJraXQtbWF4LWNvbnRlbnQ7d2lkdGg6LW1vei1tYXgtY29udGVudDt3aWR0aDptYXgtY29udGVudH0uY2FwaWJhcmEgLmNvbnRhaW5lci10bCBoZWFkZXIgLmFnbm8tY2FsZW5kYXJpbyAubWVzLWNhbGVuZGFyaW8gLm1lcy5tZXMtcmVkdWNlZDphZnRlcntjb250ZW50OlxcXCJcXFwiO2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDkwZGVnLHRyYW5zcGFyZW50LHJlZCk7cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6MDt0b3A6MDtoZWlnaHQ6MTAwJTt3aWR0aDpjYWxjKHZhcigtLWRheS13aWR0aCkvMil9LmNhcGliYXJhIC5jb250YWluZXItdGwgaGVhZGVyIC5hZ25vLWNhbGVuZGFyaW8gLm1lcy1jYWxlbmRhcmlvIC5kaWFze2Rpc3BsYXk6ZmxleDttYXJnaW4tdG9wOjVweH0uY2FwaWJhcmEgLmNvbnRhaW5lci10bCBoZWFkZXIgLmFnbm8tY2FsZW5kYXJpbyAubWVzLWNhbGVuZGFyaW8gLmRpYXMgLmRpYS1jYWxlbmRhcmlve3dpZHRoOnZhcigtLWRheS13aWR0aCk7aGVpZ2h0OnZhcigtLWhlYWRlci1kYXktaGVpZ2h0KTt2ZXJ0aWNhbC1hbGlnbjpib3R0b207Zm9udC1zaXplOi44NzVlbTtib3JkZXItcmlnaHQ6MXB4IHNvbGlkIHJnYmEoMCwwLDAsLjEpO2JveC1zaXppbmc6Ym9yZGVyLWJveDtwYWRkaW5nOjRweCA2cHg7dGV4dC1hbGlnbjpjZW50ZXJ9LmNhcGliYXJhIC5jb250YWluZXItdGwgaGVhZGVyIC5hZ25vLWNhbGVuZGFyaW8gLm1lcy1jYWxlbmRhcmlvIC5kaWFzIC5kaWEtY2FsZW5kYXJpby5pcy1jbGlja2VhYmxle2N1cnNvcjpwb2ludGVyfS5jYXBpYmFyYS5oZWFkZXItZXh0ZW5kZWQgLmNvbnRhaW5lci10bCBoZWFkZXJ7aGVpZ2h0OmNhbGModmFyKC0taGVhZGVyLWhlaWdodCkgKyB2YXIoLS1leC1oZWFkZXItaGVpZ2h0KSl9LmNhcGliYXJhLmhlYWRlci1leHRlbmRlZCAuY29udGFpbmVyLXRsIGhlYWRlciAuaGVhZGVyLWNvbnRhaW5lci1leHRlbmRlZCAuaW5wdXQtbGlzdDpub3QoLnBlcnNpc3RlbnQpe2Rpc3BsYXk6ZmxleH0uY2FwaWJhcmEgLmNvbnRhaW5lci10bCBoZWFkZXJ7YmFja2dyb3VuZDojZjFmZmZlO2NvbG9yOiMzNzQ3NGZ9LmNhcGliYXJhIC5jb250YWluZXItdGwgaGVhZGVyIC5hZ25vLWNhbGVuZGFyaW8gLm1lcy1jYWxlbmRhcmlvIC5tZXMubWVzLXJlZHVjZWQ6YWZ0ZXJ7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoOTBkZWcsdHJhbnNwYXJlbnQsI2YxZmZmZSl9LmNhcGliYXJhIC5jb250YWluZXItdGwgaGVhZGVyIC5hZ25vLWNhbGVuZGFyaW8gLm1lcy1jYWxlbmRhcmlvIC5kaWFzIC5kaWEtY2FsZW5kYXJpby53ZWVrZW5ke2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMSk7Y29sb3I6IzI2MzIzOH0uY2FwaWJhcmEgLmNvbnRhaW5lci10bCBoZWFkZXIgLmFnbm8tY2FsZW5kYXJpbyAubWVzLWNhbGVuZGFyaW8gLmRpYXMgLmRpYS1jYWxlbmRhcmlvLnRvZGF5e2JhY2tncm91bmQ6cmdiYSgyMjksNTcsNTMsLjkpO2NvbG9yOiNmZmZ9LmNhcGliYXJhIC5jb250YWluZXItdGwgaGVhZGVyIC5hZ25vLWNhbGVuZGFyaW8gLm1lcy1jYWxlbmRhcmlvIC5kaWFzIC5kaWEtY2FsZW5kYXJpby5hY3RpdmV7YmFja2dyb3VuZDpncmVlbjtjb2xvcjojZmZmfS5jYXBpYmFyYSAuY29udGFpbmVyLXRsIGhlYWRlciAuYWduby1jYWxlbmRhcmlvIC5tZXMtY2FsZW5kYXJpbyAuZGlhcyAuZGlhLWNhbGVuZGFyaW8uaXMtY2xpY2tlYWJsZTpob3ZlcntiYWNrZ3JvdW5kOmhzbGEoMCwwJSwzOS4yJSwuNCl9LmNhcGliYXJhIC5jb250YWluZXItdGwgaGVhZGVyIC5hZ25vLWNhbGVuZGFyaW8gLm1lcy1jYWxlbmRhcmlvIC5kaWFzIC5kaWEtY2FsZW5kYXJpby5pcy1jbGlja2VhYmxlOmFjdGl2ZXtiYWNrZ3JvdW5kOmhzbGEoMCwwJSwzOS4yJSwuNil9LmNhcGliYXJhIC5jb250YWluZXItdGwgaGVhZGVyIC5oZWFkZXItY29udGFpbmVyLWV4dGVuZGVkIC5pbnB1dC1saXN0IC5kaWEtaW5wdXQgaW5wdXQsLmNhcGliYXJhIC5jb250YWluZXItdGwgaGVhZGVyIC5oZWFkZXItY29udGFpbmVyLWV4dGVuZGVkIC5pbnB1dC1saXN0IGRpdj5zcGFue2NvbG9yOiMzMTNiNTB9LmNhcGliYXJhLmRhcmstdGhlbWUgLmNvbnRhaW5lci10bCBoZWFkZXJ7YmFja2dyb3VuZDojMzEzYjUwO2NvbG9yOiNmMGYwZjA7Ym9yZGVyLWNvbG9yOnJnYmEoNjQsNzgsMTA1LC42KX0uY2FwaWJhcmEuZGFyay10aGVtZSAuY29udGFpbmVyLXRsIGhlYWRlciAuYWduby1jYWxlbmRhcmlvIC5tZXMtY2FsZW5kYXJpbyAubWVzLm1lcy1yZWR1Y2VkOmFmdGVye2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDkwZGVnLHRyYW5zcGFyZW50LCMzMTNiNTApfS5jYXBpYmFyYS5kYXJrLXRoZW1lIC5jb250YWluZXItdGwgaGVhZGVyIC5hZ25vLWNhbGVuZGFyaW8gLm1lcy1jYWxlbmRhcmlvIC5kaWFzIC5kaWEtY2FsZW5kYXJpb3tib3JkZXItY29sb3I6cmdiYSg2NCw3OCwxMDUsLjYpfS5jYXBpYmFyYS5kYXJrLXRoZW1lIC5jb250YWluZXItdGwgaGVhZGVyIC5hZ25vLWNhbGVuZGFyaW8gLm1lcy1jYWxlbmRhcmlvIC5kaWFzIC5kaWEtY2FsZW5kYXJpby53ZWVrZW5ke2JhY2tncm91bmQ6IzIyMjgzNztjb2xvcjojZjBmMGYwfS5jYXBpYmFyYS5kYXJrLXRoZW1lIC5jb250YWluZXItdGwgaGVhZGVyIC5hZ25vLWNhbGVuZGFyaW8gLm1lcy1jYWxlbmRhcmlvIC5kaWFzIC5kaWEtY2FsZW5kYXJpby50b2RheXtiYWNrZ3JvdW5kOnJnYmEoMTgzLDI4LDI4LC42KTtjb2xvcjojZjBmMGYwfS5jYXBpYmFyYS5kYXJrLXRoZW1lIC5jb250YWluZXItdGwgaGVhZGVyIC5hZ25vLWNhbGVuZGFyaW8gLm1lcy1jYWxlbmRhcmlvIC5kaWFzIC5kaWEtY2FsZW5kYXJpby5hY3RpdmV7YmFja2dyb3VuZDpyZ2JhKDU2LDE0Miw2MCwuNik7Y29sb3I6I2YwZjBmMH0uY2FwaWJhcmEuZGFyay10aGVtZSAuY29udGFpbmVyLXRsIGhlYWRlciAuYWduby1jYWxlbmRhcmlvIC5tZXMtY2FsZW5kYXJpbyAuZGlhcyAuZGlhLWNhbGVuZGFyaW8uaXMtY2xpY2tlYWJsZTpob3ZlcntiYWNrZ3JvdW5kOmhzbGEoMCwwJSwzOS4yJSwuNCl9LmNhcGliYXJhLmRhcmstdGhlbWUgLmNvbnRhaW5lci10bCBoZWFkZXIgLmFnbm8tY2FsZW5kYXJpbyAubWVzLWNhbGVuZGFyaW8gLmRpYXMgLmRpYS1jYWxlbmRhcmlvLmlzLWNsaWNrZWFibGU6YWN0aXZle2JhY2tncm91bmQ6aHNsYSgwLDAlLDM5LjIlLC42KX0uY2FwaWJhcmEuZGFyay10aGVtZSAuY29udGFpbmVyLXRsIGhlYWRlciAuaGVhZGVyLWNvbnRhaW5lci1leHRlbmRlZCAuaW5wdXQtbGlzdCBkaXY+c3Bhbntjb2xvcjpoc2xhKDAsMCUsMTAwJSwuOCkhaW1wb3J0YW50fS5jYXBpYmFyYS5kYXJrLXRoZW1lIC5jb250YWluZXItdGwgaGVhZGVyIC5oZWFkZXItY29udGFpbmVyLWV4dGVuZGVkIC5pbnB1dC1saXN0IC5kaWEtaW5wdXQgaW5wdXR7YmFja2dyb3VuZDpyZ2JhKDY0LDc4LDEwNSwuNik7Y29sb3I6aHNsYSgwLDAlLDEwMCUsLjgpIWltcG9ydGFudDtib3JkZXItY29sb3I6IzMxM2I1MH0uY2FwaWJhcmEuZGFyay10aGVtZSAuY29udGFpbmVyLXRsIGhlYWRlciAuaGVhZGVyLWNvbnRhaW5lci1leHRlbmRlZCAuaW5wdXQtbGlzdCAuZGlhLWlucHV0IGlucHV0OmFjdGl2ZSwuY2FwaWJhcmEuZGFyay10aGVtZSAuY29udGFpbmVyLXRsIGhlYWRlciAuaGVhZGVyLWNvbnRhaW5lci1leHRlbmRlZCAuaW5wdXQtbGlzdCAuZGlhLWlucHV0IGlucHV0OmZvY3Vze2JhY2tncm91bmQ6aHNsYSgwLDAlLDEwMCUsLjIpfS5jYXBpYmFyYSAuY29udGFpbmVyLXRsIC5wbG90LXZlcnRpY2FsLWNvbnRhaW5lcntoZWlnaHQ6MDt3aWR0aDowO3Bvc2l0aW9uOi13ZWJraXQtc3RpY2t5O3Bvc2l0aW9uOnN0aWNreTt0b3A6dmFyKC0taGVhZGVyLWhlaWdodCk7bWFyZ2luLWxlZnQ6Y2FsYyh2YXIoLS1uYXYtd2lkdGgpICsgdmFyKC0taW5pdGlhbC1uYXYtd2lkdGgpICsgdmFyKC0tZXgtbmF2LXdpZHRoKSArIHZhcigtLWJ0bi1uYXYtd2lkdGgpKX0uY2FwaWJhcmEgLmNvbnRhaW5lci10bCAucGxvdC12ZXJ0aWNhbC1jb250YWluZXIgLnBsb3QtdmVydGljYWx7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4zKTt3aWR0aDp2YXIoLS1kYXktd2lkdGgpO2hlaWdodDpjYWxjKDEwMHZoIC0gdmFyKC0taGVhZGVyLWhlaWdodCkgLSB2YXIoLS1oZWFkZXItdG9wLWhlaWdodCkpO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6MH0uY2FwaWJhcmEgLmNvbnRhaW5lci10bCAucGxvdC12ZXJ0aWNhbC1jb250YWluZXIgLnBsb3QtdmVydGljYWwucmFpbntiYWNrZ3JvdW5kOi13ZWJraXQtcmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudCg1NGRlZyxyZ2JhKDMsMTU1LDIyOSwuMikscmdiYSgzLDE1NSwyMjksLjIpIDVweCx0cmFuc3BhcmVudCAwLHRyYW5zcGFyZW50IDEycHgpO2JhY2tncm91bmQ6cmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudCg1NGRlZyxyZ2JhKDMsMTU1LDIyOSwuMikscmdiYSgzLDE1NSwyMjksLjIpIDVweCx0cmFuc3BhcmVudCAwLHRyYW5zcGFyZW50IDEycHgpfS5jYXBpYmFyYSAuY29udGFpbmVyLXRsIC5wbG90LWhvcml6b250YWwtY29udGFpbmVye2hlaWdodDowO3dpZHRoOjA7cG9zaXRpb246LXdlYmtpdC1zdGlja3k7cG9zaXRpb246c3RpY2t5O2xlZnQ6Y2FsYyh2YXIoLS1uYXYtd2lkdGgpICsgdmFyKC0taW5pdGlhbC1uYXYtd2lkdGgpICsgdmFyKC0tZXgtbmF2LXdpZHRoKSArIHZhcigtLWJ0bi1uYXYtd2lkdGgpKX0uY2FwaWJhcmEgLmNvbnRhaW5lci10bCAucGxvdC1ob3Jpem9udGFsLWNvbnRhaW5lciAucGxvdC1ob3Jpem9udGFse2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMyk7d2lkdGg6MTAwdnc7aGVpZ2h0OnZhcigtLWl0ZW0taGVpZ2h0KTtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtsZWZ0OjB9LmNhcGliYXJhIC5jb250YWluZXItdGwgLnBsb3QtaG9yaXpvbnRhbC1jb250YWluZXIgLnBsb3QtaG9yaXpvbnRhbC5wbG90LXBhcmVudHtiYWNrZ3JvdW5kOnJnYmEoMjUsMTE4LDIxMCwuMSl9LmNhcGliYXJhIC5jb250YWluZXItdGwuZXh0ZW5kZWQtcmlnaHQgLmNvbnRhaW5lci10bCAucGxvdC1jb250YWluZXIgLnBsb3QtdmVydGljYWx7aGVpZ2h0OmNhbGMoMTAwdmggLSB2YXIoLS1oZWFkZXItaGVpZ2h0KSArIHZhcigtLWV4LWhlYWRlci1oZWlnaHQpICsgdmFyKC0taGVhZGVyLXRvcC1oZWlnaHQpKX0uY2FwaWJhcmEgLmNvbnRhaW5lci10bCBmb290ZXJ7d2lkdGg6LXdlYmtpdC1maXQtY29udGVudDt3aWR0aDotbW96LWZpdC1jb250ZW50O3dpZHRoOmZpdC1jb250ZW50O2JvdHRvbTowO21pbi13aWR0aDoxMDAlO2hlaWdodDp2YXIoLS1pdGVtLWhlaWdodCk7cG9zaXRpb246LXdlYmtpdC1zdGlja3k7cG9zaXRpb246c3RpY2t5O3otaW5kZXg6Mjtib3gtc2l6aW5nOmJvcmRlci1ib3h9LmNhcGliYXJhIC5jb250YWluZXItdGwgZm9vdGVyIC5mb290ZXItY29udGFpbmVye3Bvc2l0aW9uOnJlbGF0aXZlO3BhZGRpbmctbGVmdDpjYWxjKHZhcigtLW5hdi13aWR0aCkgKyB2YXIoLS1pbml0aWFsLW5hdi13aWR0aCkgKyB2YXIoLS1leC1uYXYtd2lkdGgpICsgdmFyKC0tYnRuLW5hdi13aWR0aCkpO2JveC1zaXppbmc6Ym9yZGVyLWJveDttaW4td2lkdGg6MTAwJTtkaXNwbGF5OmZsZXh9LmNhcGliYXJhIC5jb250YWluZXItdGwgZm9vdGVyIC5mb290ZXItY29udGFpbmVyIC5mb290ZXItaXRlbXtwYWRkaW5nOjEwcHggMnB4O3dpZHRoOnZhcigtLWRheS13aWR0aCk7Y3Vyc29yOmRlZmF1bHQ7Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkIHJnYmEoMCwwLDAsLjEpO2JveC1zaXppbmc6Ym9yZGVyLWJveDtoZWlnaHQ6dmFyKC0taXRlbS1oZWlnaHQpO3RleHQtYWxpZ246Y2VudGVyfS5jYXBpYmFyYSAuY29udGFpbmVyLXRsIGZvb3RlcntiYWNrZ3JvdW5kOiM3ODkwOWM7Y29sb3I6I2ZmZn0uY2FwaWJhcmEgLmNvbnRhaW5lci10bC5kYXJrLXRoZW1lIGZvb3RlcntiYWNrZ3JvdW5kOiMzMTNiNTA7Y29sb3I6I2YwZjBmMH0uY2FwaWJhcmEgLmNvbnRhaW5lci10bCAudGFibGV7cG9zaXRpb246YWJzb2x1dGU7bGVmdDpjYWxjKHZhcigtLW5hdi13aWR0aCkgKyB2YXIoLS1pbml0aWFsLW5hdi13aWR0aCkgKyB2YXIoLS1leC1uYXYtd2lkdGgpICsgdmFyKC0tYnRuLW5hdi13aWR0aCkpO3RvcDp2YXIoLS1oZWFkZXItaGVpZ2h0KTt3aWR0aDpjYWxjKDEwMCUgLSB2YXIoLS1uYXYtd2lkdGgpIC0gdmFyKC0taW5pdGlhbC1uYXYtd2lkdGgpIC0gdmFyKC0tZXgtbmF2LXdpZHRoKSAtIHZhcigtLWJ0bi1uYXYtd2lkdGgpKTttYXgtaGVpZ2h0OmNhbGMoMTAwJSAtIHZhcigtLWhlYWRlci1oZWlnaHQpKTtoZWlnaHQ6Y2FsYygxMDAlIC0gdmFyKC0taGVhZGVyLWhlaWdodCkpO21hcmdpbi10b3A6LTFweH0uY2FwaWJhcmEgLmNvbnRhaW5lci10bCAudGFibGUgLmRheS1tb3VzZS1vdmVye3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MDt0b3A6MDt3aWR0aDp2YXIoLS1kYXktd2lkdGgpO2hlaWdodDp2YXIoLS1pdGVtLWhlaWdodCk7Ym9yZGVyOjNweCBzb2xpZCByZ2JhKDI0NSwxMjQsMCwuNSk7Ym94LXNoYWRvdzowIDAgMnB4ICNmNTdjMDAsaW5zZXQgMCAwIDNweCAjZjU3YzAwO3RyYW5zaXRpb246dHJhbnNmb3JtIC4xcyBlYXNlO292ZXJmbG93OnZpc2libGV9LmNhcGliYXJhIC5jb250YWluZXItdGwgLnRhYmxlIC5kYXktbW91c2Utb3ZlcjphZnRlciwuY2FwaWJhcmEgLmNvbnRhaW5lci10bCAudGFibGUgLmRheS1tb3VzZS1vdmVyOmJlZm9yZXtwb3NpdGlvbjphYnNvbHV0ZTtiYWNrZ3JvdW5kOnJnYmEoMjQ1LDEyNCwwLC4xKTtjb250ZW50OlxcXCJcXFwiO2Rpc3BsYXk6YmxvY2t9LmNhcGliYXJhIC5jb250YWluZXItdGwgLnRhYmxlIC5kYXktbW91c2Utb3ZlcjphZnRlcnt3aWR0aDp2YXIoLS1kYXktd2lkdGgpO2hlaWdodDoxMDB2aDtyaWdodDotNHB4O2JvdHRvbTpjYWxjKHZhcigtLWl0ZW0taGVpZ2h0KSAtIDJweCl9LmNhcGliYXJhIC5jb250YWluZXItdGwgLnRhYmxlIC5kYXktbW91c2Utb3ZlcjpiZWZvcmV7aGVpZ2h0OnZhcigtLWl0ZW0taGVpZ2h0KTt3aWR0aDoxMDB2dztyaWdodDpjYWxjKHZhcigtLWRheS13aWR0aCkgLSAycHgpO2JvdHRvbTotNHB4fS5jYXBpYmFyYSAuY29udGFpbmVyLXRsIC50YWJsZSAuYmFja2dyb3VuZC1ncmlke3dpZHRoOmNhbGModmFyKC0tZGF5LXdpZHRoKSoyMCk7aGVpZ2h0OmNhbGModmFyKC0taXRlbS1oZWlnaHQpKjIwKTtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjA7dG9wOjFweDtiYWNrZ3JvdW5kLXJlcGVhdDpyZXBlYXQ7YmFja2dyb3VuZC1zaXplOnZhcigtLWRheS13aWR0aCkgdmFyKC0taXRlbS1oZWlnaHQpLGNhbGModmFyKC0tZGF5LXdpZHRoKSo3KSB2YXIoLS1pdGVtLWhlaWdodCksY2FsYyh2YXIoLS1kYXktd2lkdGgpKjcpIHZhcigtLWl0ZW0taGVpZ2h0KTtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCg5MGRlZyxyZ2JhKDgwLDgwLDgwLC4zKSAxcHgsdHJhbnNwYXJlbnQgMCksbGluZWFyLWdyYWRpZW50KDBkZWcscmdiYSg4MCw4MCw4MCwuMykgMXB4LHRyYW5zcGFyZW50IDApLGxpbmVhci1ncmFkaWVudCg5MGRlZyx0cmFuc3BhcmVudCBjYWxjKHZhcigtLWRheS13aWR0aCkqNSkscmdiYSg4MCw4MCw4MCwuMSkgMCk7YmFja2dyb3VuZC1wb3NpdGlvbjowIDAsMCAwLDAgMH0uY2FwaWJhcmEgLmNvbnRhaW5lci10bCAudGFibGUgLmRyYXctYm94e3Bvc2l0aW9uOnJlbGF0aXZlfS5jYXBpYmFyYSAuY29udGFpbmVyLXRsIC50YWJsZSAuZHJhdy1ib3ggY2FudmFze3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MDt0b3A6MH0uY2FwaWJhcmEuaGVhZGVyLWV4dGVuZGVkIC5jb250YWluZXItdGwgLnRhYmxle3RvcDpjYWxjKHZhcigtLWhlYWRlci1oZWlnaHQpICsgdmFyKC0tZXgtaGVhZGVyLWhlaWdodCkpfS5jYXBpYmFyYSAuc2VsZWN0LWNvbnRhaW5lcntvdmVyZmxvdzp2aXNpYmxlO3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MDt0b3A6MDt3aWR0aDowO2hlaWdodDowfS5jYXBpYmFyYSAuc2VsZWN0LWNvbnRhaW5lciAuc2VsZWN0ZWQtZGF5e3dpZHRoOnZhcigtLWRheS13aWR0aCk7aGVpZ2h0OnZhcigtLWl0ZW0taGVpZ2h0KTtwb3NpdGlvbjphYnNvbHV0ZTtiYWNrZ3JvdW5kOmhzbGEoMCwwJSw3NC4xJSwuNCk7Ym94LXNoYWRvdzppbnNldCAwIDAgNXB4IGhzbGEoMCwwJSw3NC4xJSwuOCl9LmNhcGliYXJhIC5zZWxlY3QtY29udGFpbmVyIC5zZWxlY3RlZC1kYXlbY2FwLWJhZGdlXTphZnRlcntjb250ZW50OmF0dHIoY2FwLWJhZGdlKTtkaXNwbGF5OmJsb2NrO3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0Oi0zcHg7dG9wOi0zcHg7YmFja2dyb3VuZDojMTU2NWMwO2ZvbnQtc2l6ZTouNzVlbTtjb2xvcjojZmZmO3dpZHRoOjEuNWVtO2hlaWdodDoxLjVlbTtib3JkZXItcmFkaXVzOjUwJTt6LWluZGV4OjI7dGV4dC1hbGlnbjpjZW50ZXI7Zm9udC13ZWlnaHQ6NzAwO3BhZGRpbmc6MnB4O2JveC1zaGFkb3c6MCAxcHggM3B4IHJnYmEoMCwwLDAsLjMpfS5jYXBpYmFyYSAuZGV0YWlsLWRheXttaW4taGVpZ2h0OjUwcHg7bWluLXdpZHRoOjI1MHB4O21heC13aWR0aDozMDBweDtib3JkZXI6MXB4IHNvbGlkIGdyZXk7cGFkZGluZzoxZW07ZGlzcGxheTpmbGV4O2ZsZXgtZmxvdzpjb2x1bW4gbm93cmFwO21hcmdpbjowIDAgMCAxZW07Ym94LXNpemluZzpib3JkZXItYm94O2JveC1zaGFkb3c6MCA2cHggNnB4IC0zcHggcmdiYSgwLDAsMCwuMiksMCAxMHB4IDE0cHggMXB4IHJnYmEoMCwwLDAsLjE0KSwwIDRweCAxOHB4IDNweCByZ2JhKDAsMCwwLC4xMik7cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo1cHg7dHJhbnNpdGlvbjphbGwgLjNzIGVhc2U7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoY2FsYyh2YXIoLS1pdGVtLWhlaWdodCkvMiotMSkpO3otaW5kZXg6NDtvcGFjaXR5OjF9LmNhcGliYXJhIC5kZXRhaWwtZGF5OmFmdGVye2NvbnRlbnQ6XFxcIlxcXCI7YmFja2dyb3VuZDppbmhlcml0O3dpZHRoOjIwcHg7aGVpZ2h0OjIwcHg7ZGlzcGxheTpibG9jaztwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0Oi0xMXB4O3RvcDpjYWxjKHZhcigtLWl0ZW0taGVpZ2h0KS8yICsgN3B4KTt0cmFuc2Zvcm06cm90YXRlKDQ1ZGVnKTtib3JkZXItY29sb3I6Z3JleTtib3JkZXItc3R5bGU6c29saWQ7Ym9yZGVyLXdpZHRoOjAgMCAxcHggMXB4fS5jYXBpYmFyYSAuZGV0YWlsLWRheS5kZC1oaWRle2Rpc3BsYXk6bm9uZX0uY2FwaWJhcmEgLmRldGFpbC1kYXkuaGFzLXJpZ2h0LWFycm93e21hcmdpbjowIDE2cHggMCAwO3RyYW5zZm9ybTp0cmFuc2xhdGVYKGNhbGMoLTEwMCUgLSAyMHB4IC0gdmFyKC0tZGF5LXdpZHRoKSkpIHRyYW5zbGF0ZVkoY2FsYyh2YXIoLS1pdGVtLWhlaWdodCkvMiotMSkpfS5jYXBpYmFyYSAuZGV0YWlsLWRheS5oYXMtcmlnaHQtYXJyb3c6YWZ0ZXJ7Ym9yZGVyLXdpZHRoOjFweCAxcHggMCAwO2xlZnQ6dW5zZXQ7cmlnaHQ6LTExcHh9LmNhcGliYXJhIC5kZXRhaWwtZGF5Lmhhcy1jZWlsLWFycm93e3RyYW5zZm9ybTp0cmFuc2xhdGVZKC03cHgpfS5jYXBpYmFyYSAuZGV0YWlsLWRheS5oYXMtY2VpbC1hcnJvdzphZnRlcnt0b3A6NnB4fS5jYXBpYmFyYSAuZGV0YWlsLWRheS5oYXMtY2VpbC1hcnJvdy5oYXMtcmlnaHQtYXJyb3d7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoY2FsYygtMTAwJSAtIDIwcHggLSB2YXIoLS1kYXktd2lkdGgpKSkgdHJhbnNsYXRlWSgtN3B4KX0uY2FwaWJhcmEgLmRldGFpbC1kYXkuaGFzLWNlaWwtYXJyb3cuaGFzLXJpZ2h0LWFycm93OmFmdGVye2xlZnQ6dW5zZXQ7cmlnaHQ6LTExcHh9LmNhcGliYXJhIC5kZXRhaWwtZGF5Lmhhcy1taWRkbGUtYXJyb3d7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoY2FsYygtNTAlICsgdmFyKC0taXRlbS1oZWlnaHQpLzIpKX0uY2FwaWJhcmEgLmRldGFpbC1kYXkuaGFzLW1pZGRsZS1hcnJvdzphZnRlcnt0b3A6Y2FsYyg1MCUgLSAxMHB4KX0uY2FwaWJhcmEgLmRldGFpbC1kYXkuaGFzLW1pZGRsZS1hcnJvdy5oYXMtcmlnaHQtYXJyb3d7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoY2FsYygtMTAwJSAtIDIwcHggLSB2YXIoLS1kYXktd2lkdGgpKSkgdHJhbnNsYXRlWShjYWxjKC01MCUgKyB2YXIoLS1pdGVtLWhlaWdodCkvMikpfS5jYXBpYmFyYSAuZGV0YWlsLWRheS5oYXMtbWlkZGxlLWFycm93Lmhhcy1yaWdodC1hcnJvdzphZnRlcntsZWZ0OnVuc2V0O3JpZ2h0Oi0xMXB4fS5jYXBpYmFyYSAuZGV0YWlsLWRheS5oYXMtYm90dG9tLWFycm93e3RyYW5zZm9ybTp0cmFuc2xhdGVZKGNhbGMoLTEwMCUgKyB2YXIoLS1pdGVtLWhlaWdodCkpKX0uY2FwaWJhcmEgLmRldGFpbC1kYXkuaGFzLWJvdHRvbS1hcnJvdzphZnRlcnt0b3A6dW5zZXQ7Ym90dG9tOjRweH0uY2FwaWJhcmEgLmRldGFpbC1kYXkuaGFzLWJvdHRvbS1hcnJvdy5oYXMtcmlnaHQtYXJyb3d7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoY2FsYygtMTAwJSAtIDIwcHggLSB2YXIoLS1kYXktd2lkdGgpKSkgdHJhbnNsYXRlWShjYWxjKC0xMDAlICsgdmFyKC0taXRlbS1oZWlnaHQpKSl9LmNhcGliYXJhIC5kZXRhaWwtZGF5Lmhhcy1ib3R0b20tYXJyb3cuaGFzLXJpZ2h0LWFycm93OmFmdGVye2xlZnQ6dW5zZXQ7cmlnaHQ6LTExcHh9LmNhcGliYXJhIC5kZXRhaWwtZGF5IC5oZWFkZXItZGV0YWlsIC50aXRsZXtmb250LXNpemU6MS4yNWVtO2ZvbnQtd2VpZ2h0OjcwMDttYXJnaW4tYm90dG9tOi41ZW07bWluLXdpZHRoOjEwZW07bWF4LXdpZHRoOjIwZW19LmNhcGliYXJhIC5kZXRhaWwtZGF5IC5oZWFkZXItZGV0YWlsIC5zdWJ0aXRsZXtmb250LXNpemU6Ljg3NWVtO21hcmdpbi1ib3R0b206OHB4O21pbi13aWR0aDoxMGVtfS5jYXBpYmFyYSAuZGV0YWlsLWRheSAubGlzdC1kZXRhaWx7bWFyZ2luOjA7ZmxleDowIDAgYXV0b30uY2FwaWJhcmEgLmRldGFpbC1kYXkgLmxpc3QtZGV0YWlsLmxpc3QgLml0ZW0tZGV0YWlse21hcmdpbjowO2ZvbnQtc2l6ZTouODc1ZW07cG9zaXRpb246cmVsYXRpdmU7cGFkZGluZzouNWVtIC41ZW0gLjVlbSAxZW07Ym9yZGVyLXJhZGl1czowO2JveC1zaXppbmc6Ym9yZGVyLWJveDtvdmVyZmxvdzpoaWRkZW47YmFja2dyb3VuZDp0cmFuc3BhcmVudDtib3JkZXI6dW5zZXQ7Ym9yZGVyLXRvcDoxcHggc29saWQgcmdiYSgwLDAsMCwuMSk7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOnJvd30uY2FwaWJhcmEgLmRldGFpbC1kYXkgLmxpc3QtZGV0YWlsLmxpc3QgLml0ZW0tZGV0YWlsIC5sZWZ0LWljb257d2lkdGg6OHB4O2hlaWdodDo4cHg7bWluLWhlaWdodDp1bnNldCFpbXBvcnRhbnQ7bGVmdDoxcHg7dG9wOjEwcHg7Ym9yZGVyLXJhZGl1czo1MCV9LmNhcGliYXJhIC5kZXRhaWwtZGF5IC5saXN0LWRldGFpbC5saXN0IC5pdGVtLWRldGFpbCAubGVmdC1pY29uLmRpYW1vbmR7Ym9yZGVyLXJhZGl1czowO3RyYW5zZm9ybTpyb3RhdGUoNDVkZWcpIHNrZXcoMTBkZWcsMTBkZWcpfS5jYXBpYmFyYSAuZGV0YWlsLWRheSAubGlzdC1kZXRhaWwubGlzdCAuaXRlbS1kZXRhaWwgLmxlZnQtaWNvbi5vdXRsaW5lZHtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50fS5jYXBpYmFyYSAuZGV0YWlsLWRheSAubGlzdC1kZXRhaWwubGlzdCAuaXRlbS1kZXRhaWwgLm5hbWV7ZmxleDoxIDEgNDAlO2ZvbnQtd2VpZ2h0OjcwMDttYXJnaW4tYm90dG9tOjA7bWFyZ2luLXJpZ2h0OjFlbX0uY2FwaWJhcmEgLmRldGFpbC1kYXkgLmxpc3QtZGV0YWlsLmxpc3QgLml0ZW0tZGV0YWlsIC5pdGVtLWRlc2NyaXB0aW9ue2ZsZXg6MSAxIDYwJTt0ZXh0LWFsaWduOnJpZ2h0fS5jYXBpYmFyYSAuZGV0YWlsLWRheSAubGlzdC1kZXRhaWwubGlzdCAuaXRlbS1kZXRhaWwgLml0ZW0tZGVzY3JpcHRpb24gLmRlc2N7cG9zaXRpb246ZmxleDtmbGV4LWRpcmVjdGlvbjpyb3d9LmNhcGliYXJhIC5kZXRhaWwtZGF5IC5saXN0LWRldGFpbC5saXN0IC5pdGVtLWRldGFpbCAuaXRlbS1kZXNjcmlwdGlvbiAuZGVzYyAubGFiZWx7ZGlzcGxheTppbmxpbmUtYmxvY2s7bWluLXdpZHRoOjM2cHg7Zm9udC13ZWlnaHQ6NzAwO3RleHQtYWxpZ246cmlnaHQ7bWFyZ2luLXJpZ2h0Oi41ZW19LmNhcGliYXJhIC5kZXRhaWwtZGF5IC5saXN0LWRldGFpbC5mbGV4e2Rpc3BsYXk6ZmxleDtmbGV4LWZsb3c6cm93IHdyYXA7YWxpZ24tY29udGVudDpmbGV4LXN0YXJ0O2Rpc3BsYXk6aW5saW5lLWZsZXg7ZmxleC1mbG93OndyYXA7LW1zLXdyaXRpbmctbW9kZTp0Yi1scjt3cml0aW5nLW1vZGU6dmVydGljYWwtbHI7bWF4LWhlaWdodDoyNSV9LmNhcGliYXJhIC5kZXRhaWwtZGF5IC5saXN0LWRldGFpbC5mbGV4IC5pdGVtLWRldGFpbHtmbGV4OjAgMCBhdXRvO21pbi13aWR0aDo4ZW07LW1zLXdyaXRpbmctbW9kZTpsci10Yjt3cml0aW5nLW1vZGU6aG9yaXpvbnRhbC10Yn0uY2FwaWJhcmEgLmRldGFpbC1kYXkgLmxpc3QtZGV0YWlsLmNvbHVtbnstbW96LWNvbHVtbnM6N2VtIDM7Y29sdW1uczo3ZW0gMzttaW4td2lkdGg6MzBlbX0uY2FwaWJhcmEgLmRldGFpbC1kYXkgLmxpc3QtZGV0YWlsLmNvbHVtbiAuaXRlbS1kZXRhaWx7ZGlzcGxheTppbmxpbmUtYmxvY2s7d2lkdGg6MTAwJX0uY2FwaWJhcmEgLmRldGFpbC1kYXkgLmxpc3QtZGV0YWlsIC5pdGVtLWRldGFpbHttYXJnaW46NHB4O3Bvc2l0aW9uOnJlbGF0aXZlO3BhZGRpbmc6LjVlbSAxZW07Ym9yZGVyLXJhZGl1czo2cHg7Ym94LXNpemluZzpib3JkZXItYm94O292ZXJmbG93OmhpZGRlbn0uY2FwaWJhcmEgLmRldGFpbC1kYXkgLmxpc3QtZGV0YWlsIC5pdGVtLWRldGFpbCAubmFtZXtmb250LXdlaWdodDo3MDA7bWFyZ2luLWJvdHRvbTouNWVtfS5jYXBpYmFyYSAuZGV0YWlsLWRheSAubGlzdC1kZXRhaWwgLml0ZW0tZGV0YWlsIC5pdGVtLWRlc2NyaXB0aW9uIC5kZXNjIC5sYWJlbHtkaXNwbGF5OmlubGluZS1ibG9jazttaW4td2lkdGg6MzZweDtmb250LXdlaWdodDo3MDB9LmNhcGliYXJhIC5kZXRhaWwtZGF5IC5saXN0LWRldGFpbCAuaXRlbS1kZXRhaWwgLmxlZnQtaWNvbnt3aWR0aDo2cHg7bWluLWhlaWdodDoxMHB4O2hlaWdodDoxMDAlO3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MDt0b3A6MH0uY2FwaWJhcmEgLmRldGFpbC1kYXkgLmVsZW1lbnRzLWRldGFpbHtwYWRkaW5nOi41ZW0gMCAuMjVlbTtkaXNwbGF5OmZsZXg7ZmxleC13cmFwOndyYXB9LmNhcGliYXJhIC5kZXRhaWwtZGF5IC5lbGVtZW50cy1kZXRhaWwgLm5hbWV7ZmxleDoxIDAgMTAwJTtmb250LXdlaWdodDo3MDB9LmNhcGliYXJhIC5kZXRhaWwtZGF5IC5lbGVtZW50cy1kZXRhaWwgLmVsZW1lbnRzLWxpc3R7bWFyZ2luOjRweCAtNHB4fS5jYXBpYmFyYSAuZGV0YWlsLWRheSAuZWxlbWVudHMtZGV0YWlsIC5lbGVtZW50cy1saXN0IC5lbGVtZW50LWRldGFpbHtkaXNwbGF5OmlubGluZS1ibG9jaztwYWRkaW5nOi4yNWVtIC44NzVlbTtib3JkZXItcmFkaXVzOjNweDtjb2xvcjojZmZmO21hcmdpbjouMjVlbX0uY2FwaWJhcmEgLmRldGFpbC1kYXkgLmFsZXJ0e3BhZGRpbmc6LjVlbSAwIC4yNWVtIDJlbTtwb3NpdGlvbjpyZWxhdGl2ZTttaW4td2lkdGg6MTVlbTttaW4td2lkdGg6MTBlbTttYXgtd2lkdGg6MzBlbX0uY2FwaWJhcmEgLmRldGFpbC1kYXkgLmFsZXJ0IC5hbGVydC1pY29ue21heC13aWR0aDoyZW07Zm9udC1zaXplOjEuNzVlbTtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjA7dG9wOi41ZW07Y29sb3I6Z3JleX0uY2FwaWJhcmEgLmRldGFpbC1kYXkgLmFsZXJ0IC5yZWR7Y29sb3I6I2Y0NDMzNn0uY2FwaWJhcmEgLmRldGFpbC1kYXkgLm1zai1jb250YWluZXJ7bWFyZ2luOi41ZW0gLTFlbSAtMWVtO2JvcmRlcjoxcHggc29saWQgZ3JleTt6LWluZGV4OjJ9LmNhcGliYXJhIC5kZXRhaWwtZGF5IC5tc2otY29udGFpbmVyIC5tc2p7bWluLXdpZHRoOjEwZW07bWF4LXdpZHRoOjMwZW07bWFyZ2luOjAgMCAuNWVtO3BhZGRpbmc6MTRweDtmb250LXNpemU6Ljg3NWVtfS5jYXBpYmFyYSAuZGV0YWlsLWRheSAubXNqLWNvbnRhaW5lciAubXNqLWRldGFpbHtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO3BhZGRpbmc6LjI1ZW0gLjVlbX0uY2FwaWJhcmEgLmRldGFpbC1kYXkgLm1zai1jb250YWluZXIgLm1zai1kZXRhaWwgLmVtYWlse2ZvbnQtc2l6ZTouODc1ZW07Zm9udC1zdHlsZTppdGFsaWM7b3BhY2l0eTouNX0uY2FwaWJhcmEgLmRldGFpbC1kYXkgLm1zai1jb250YWluZXIgLm1zai1kZXRhaWwgLmRhdGV7Zm9udC1zaXplOi43MjVlbX0uY2FwaWJhcmEgLmRldGFpbC1kYXl7Y29sb3I6IzM3NDc0ZjtiYWNrZ3JvdW5kOiNmZmZ9LmNhcGliYXJhIC5kZXRhaWwtZGF5LC5jYXBpYmFyYSAuZGV0YWlsLWRheSAubGlzdC1kZXRhaWwubGlzdCAuaXRlbS1kZXRhaWwsLmNhcGliYXJhIC5kZXRhaWwtZGF5OmFmdGVye2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC4yKX0uY2FwaWJhcmEgLmRldGFpbC1kYXkgLmVsZW1lbnRzLWRldGFpbCAuZWxlbWVudHMtbGlzdCAuZWxlbWVudC1kZXRhaWx7YmFja2dyb3VuZDpyZ2JhKDU1LDcxLDc5LC44KX0uY2FwaWJhcmEgLmRldGFpbC1kYXkgLm1zai1jb250YWluZXJ7YmFja2dyb3VuZDojZmZlY2IzO2JvcmRlci1jb2xvcjojZmZjYTI4fS5jYXBpYmFyYSAuZGV0YWlsLWRheSAubXNqLWNvbnRhaW5lciAubXNqLWRldGFpbHtiYWNrZ3JvdW5kOiNmZmUwODI7Ym9yZGVyLWNvbG9yOiNmZmNhMjh9LmNhcGliYXJhLmRhcmstdGhlbWUgLmRldGFpbC1kYXl7Y29sb3I6I2YwZjBmMDtib3JkZXItY29sb3I6IzQwNGU2OTtiYWNrZ3JvdW5kOiMyMjI4Mzd9LmNhcGliYXJhLmRhcmstdGhlbWUgLmRldGFpbC1kYXk6YWZ0ZXJ7Ym9yZGVyLWNvbG9yOiM0MDRlNjl9LmNhcGliYXJhLmRhcmstdGhlbWUgLmRldGFpbC1kYXkgLmxpc3QtZGV0YWlsIC5pdGVtLWRldGFpbHtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50IWltcG9ydGFudH0uY2FwaWJhcmEuZGFyay10aGVtZSAuZGV0YWlsLWRheSAubGlzdC1kZXRhaWwubGlzdCAuaXRlbS1kZXRhaWx7Ym9yZGVyLWNvbG9yOiM0MDRlNjl9LmNhcGliYXJhLmRhcmstdGhlbWUgLmRldGFpbC1kYXkgLmVsZW1lbnRzLWRldGFpbCAuZWxlbWVudHMtbGlzdCAuZWxlbWVudC1kZXRhaWx7YmFja2dyb3VuZDojMjkzMjQzfS5jYXBpYmFyYS5kYXJrLXRoZW1lIC5kZXRhaWwtZGF5IC5tc2otY29udGFpbmVye2JhY2tncm91bmQ6IzI5MzI0Mztib3JkZXItY29sb3I6cmdiYSgyNTEsMTkyLDQ1LC40KX0uY2FwaWJhcmEuZGFyay10aGVtZSAuZGV0YWlsLWRheSAubXNqLWNvbnRhaW5lciAubXNqLWRldGFpbHtiYWNrZ3JvdW5kOnJnYmEoMjUxLDE5Miw0NSwuMSl9LmNhcGliYXJhIC5jYXAtY29udGV4dC1tZW51LWNvbnRhaW5lcntwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjA7dG9wOjA7ei1pbmRleDoxMH0uY2FwaWJhcmEgLmNhcC1jb250ZXh0LW1lbnUtY29udGFpbmVyLmNtLWhpZGUgLmNhcC1jb250ZXh0LW1lbnV7dmlzaWJpbGl0eTpoaWRkZW47b3BhY2l0eTowfS5jYXBpYmFyYSAuY2FwLWNvbnRleHQtbWVudS1jb250YWluZXIgLmNhcC1jb250ZXh0LW1lbnV7cG9zaXRpb246YWJzb2x1dGU7bWluLXdpZHRoOjE1MHB4O3otaW5kZXg6Mjtib3JkZXItcmFkaXVzOjNweDtib3JkZXI6MXB4IHNvbGlkIGdyZXk7Ym94LXNoYWRvdzowIDNweCA1cHggLTFweCByZ2JhKDAsMCwwLC4yKSwwIDZweCAxMHB4IDAgcmdiYSgwLDAsMCwuMTQpLDAgMXB4IDE4cHggMCByZ2JhKDAsMCwwLC4xMik7Zm9udC1zaXplOi43NWVtO3RyYW5zaXRpb246YWxsIC4xcyBsaW5lYXI7dmlzaWJpbGl0eTp2aXNpYmxlO29wYWNpdHk6MTtwYWRkaW5nOi40ZW0gMDt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9LmNhcGliYXJhIC5jYXAtY29udGV4dC1tZW51LWNvbnRhaW5lciAuY2FwLWNvbnRleHQtbWVudV9pdGVte3BhZGRpbmc6LjVlbSAxZW07ZmxleDowIDAgYXV0bztkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246cm93O2FsaWduLWl0ZW1zOmNlbnRlcn0uY2FwaWJhcmEgLmNhcC1jb250ZXh0LW1lbnUtY29udGFpbmVyIC5jYXAtY29udGV4dC1tZW51X2l0ZW06aG92ZXJ7YmFja2dyb3VuZDpyZ2JhKDIwLDIwLDIwLC4yKX0uY2FwaWJhcmEgLmNhcC1jb250ZXh0LW1lbnUtY29udGFpbmVyIC5jYXAtY29udGV4dC1tZW51X2l0ZW0uaXMtZGlzYWJsZWR7b3BhY2l0eTouNX0uY2FwaWJhcmEgLmNhcC1jb250ZXh0LW1lbnUtY29udGFpbmVyIC5jYXAtY29udGV4dC1tZW51X2l0ZW1faWNvbntkaXNwbGF5OmlubGluZS1ibG9jaztmbGV4OjAgMCBhdXRvO3BhZGRpbmctcmlnaHQ6LjVlbX0uY2FwaWJhcmEgLmNhcC1jb250ZXh0LW1lbnUtY29udGFpbmVyIC5jYXAtY29udGV4dC1tZW51X2l0ZW1faWNvbiBzdmd7d2lkdGg6MTZweDtoZWlnaHQ6MTZweH0uY2FwaWJhcmEgLmNhcC1jb250ZXh0LW1lbnUtY29udGFpbmVyIC5jYXAtY29udGV4dC1tZW51e2NvbG9yOiMzNzQ3NGY7Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjIpO2JhY2tncm91bmQ6I2ZmZn0uY2FwaWJhcmEgLmNhcC1jb250ZXh0LW1lbnUtY29udGFpbmVyIC5jYXAtY29udGV4dC1tZW51IHN2ZyBwYXRoe2ZpbGw6IzM3NDc0Zn0uY2FwaWJhcmEuZGFyay10aGVtZSAuY2FwLWNvbnRleHQtbWVudS1jb250YWluZXIgLmNhcC1jb250ZXh0LW1lbnV7Y29sb3I6I2YwZjBmMDtib3JkZXItY29sb3I6IzQwNGU2OTtiYWNrZ3JvdW5kOiMyMjI4Mzd9LmNhcGliYXJhLmRhcmstdGhlbWUgLmNhcC1jb250ZXh0LW1lbnUtY29udGFpbmVyIC5jYXAtY29udGV4dC1tZW51IHN2ZyBwYXRoe2ZpbGw6I2YwZjBmMH0uY2FwaWJhcmEgLmhvdXItaW5wdXR7Ym9yZGVyOjFweCBzb2xpZCBncmV5O2JvcmRlci1yYWRpdXM6M3B4O2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjtoZWlnaHQ6MjRweDttYXJnaW46OHB4IDRweDtvdmVyZmxvdzpoaWRkZW59LmNhcGliYXJhIC5ob3VyLWlucHV0IGlucHV0e3dpZHRoOjUwJTtoZWlnaHQ6aW5oZXJpdDtib3JkZXI6MXB4IHNvbGlkIHRyYW5zcGFyZW50O2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7Zm9udC1zaXplOi44NzVlbX0uY2FwaWJhcmEgLmhvdXItaW5wdXQgaW5wdXQ6YWN0aXZlLC5jYXBpYmFyYSAuaG91ci1pbnB1dCBpbnB1dDpmb2N1c3tib3JkZXI6MXB4IHNvbGlkIHJnYmEoMCwwLDAsLjEpfS5jYXBpYmFyYSAuaG91ci1pbnB1dCBzcGFue3dpZHRoOjhweDt0ZXh0LWFsaWduOmNlbnRlcn0uY2FwaWJhcmEgLmhvdXItaW5wdXQgLmhoe3RleHQtYWxpZ246cmlnaHR9LmNhcGliYXJhIC50aW1le2JvcmRlci1yYWRpdXM6NnB4O2Rpc3BsYXk6aW5saW5lLWJsb2NrO2ZvbnQtc2l6ZTowfS5jYXBpYmFyYSAudGltZSAuc3ltYm9se2Rpc3BsYXk6aW5saW5lLWJsb2NrO2hlaWdodDphdXRvO3dpZHRoOjIwcHg7Zm9udC1zaXplOjJyZW07dGV4dC1hbGlnbjpjZW50ZXI7dmVydGljYWwtYWxpZ246Y2VudGVyfS5jYXBpYmFyYSAudGltZSBpbnB1dHtib3JkZXItcmFkaXVzOjZweDtib3JkZXI6MnB4IHNvbGlkIHRyYW5zcGFyZW50O3dpZHRoOjUycHg7dGV4dC1hbGlnbjpjZW50ZXI7Zm9udC1zaXplOjJyZW07cG9zaXRpb246cmVsYXRpdmU7dHJhbnNpdGlvbjphbGwgLjFzIGVhc2U7b3V0bGluZTpub25lO2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7cGFkZGluZzo2cHh9LmNhcGliYXJhIC50aW1lIGlucHV0OmFjdGl2ZSwuY2FwaWJhcmEgLnRpbWUgaW5wdXQ6Zm9jdXN7dHJhbnNmb3JtOnNjYWxlKDEuMDMpfS5jYXBpYmFyYSAuaW5wdXQtYm94e21hcmdpbjowIDE2cHg7bWluLWhlaWdodDoxODBweDtib3JkZXI6MnB4IHNvbGlkIGdyZXk7Ym9yZGVyLXJhZGl1czo2cHg7b3ZlcmZsb3cteTpzY3JvbGw7cGFkZGluZy1ib3R0b206NjBweH0uY2FwaWJhcmEgLmlucHV0LWJveCAubWluaS1pbnB1dC1zZWN0aW9ue3BhZGRpbmc6OHB4IDE2cHg7dGV4dC1hbGlnbjpsZWZ0O3dpZHRoOjEwMCU7cG9zaXRpb246cmVsYXRpdmV9LmNhcGliYXJhIC5pbnB1dC1ib3ggLm1pbmktaW5wdXQtc2VjdGlvbjpudGgtY2hpbGQob2RkKXtiYWNrZ3JvdW5kOmhzbGEoMCwwJSwzOS4yJSwuMSl9LmNhcGliYXJhIC5pbnB1dC1ib3ggLm1pbmktaW5wdXQtc2VjdGlvbi0tdG9vbHRpcHtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjA7dG9wOjEuNWVtO2Rpc3BsYXk6bm9uZTtwYWRkaW5nOi41ZW07bWFyZ2luOjFlbTtjb2xvcjojMDAwO2JvcmRlci1yYWRpdXM6M3B4O3otaW5kZXg6Mjtib3gtc2hhZG93OjAgMnB4IDVweCByZ2JhKDAsMCwwLC4zKX0uY2FwaWJhcmEgLmlucHV0LWJveCAubWluaS1pbnB1dC1zZWN0aW9uLS1pY29ue2Rpc3BsYXk6aW5saW5lLWJsb2NrO3dpZHRoOi43NWVtO2hlaWdodDouNzVlbTtib3JkZXItcmFkaXVzOjUwJTtiYWNrZ3JvdW5kOmdyZXk7Ym94LXNoYWRvdzowIDFweCAzcHggcmdiYSgwLDAsMCwuMyk7bWFyZ2luOjAgLjI1ZW0gMCAwfS5jYXBpYmFyYSAuaW5wdXQtYm94IC5taW5pLWlucHV0LXNlY3Rpb246aG92ZXIgLm1pbmktaW5wdXQtc2VjdGlvbi0tdG9vbHRpcHtkaXNwbGF5OmJsb2NrfS5jYXBpYmFyYSAuaW5wdXQtYm94IC5taW5pLWlucHV0LXNlY3Rpb24gaW5wdXR7dGV4dC1hbGlnbjpjZW50ZXI7d2lkdGg6NjBweDttYXJnaW4tcmlnaHQ6LjVlbTtib3JkZXI6MXB4IHNvbGlkIGdyZXk7Ym9yZGVyLXJhZGl1czozcHg7YmFja2dyb3VuZDpoc2xhKDAsMCUsMTAwJSwuMik7Zm9udC1zaXplOjFlbX0uY2FwaWJhcmEgLmlucHV0LWJveCAubWluaS1pbnB1dC1zZWN0aW9uIGlucHV0OmFjdGl2ZSwuY2FwaWJhcmEgLmlucHV0LWJveCAubWluaS1pbnB1dC1zZWN0aW9uIGlucHV0OmZvY3Vze2JhY2tncm91bmQ6aHNsYSgwLDAlLDEwMCUsLjgpfS5jYXBpYmFyYSAuaW5wdXQtc2VjdGlvbnttYXJnaW46MTZweH0uY2FwaWJhcmEgLmlucHV0LXNlY3Rpb24tZmxleHtkaXNwbGF5OmZsZXg7ZmxleC13cmFwOndyYXB9LmNhcGliYXJhIC5pbnB1dC1zZWN0aW9uIC50ZXh0LXN1YnRpdGxle2ZsZXg6MSAxIDEwMCV9LmNhcGliYXJhIC5pbnB1dC1zZWN0aW9uIGlucHV0Lm5hdi1pbnB1dHtib3JkZXI6MnB4IHNvbGlkIGhzbGEoMCwwJSw1MC4yJSwuNyk7Ym9yZGVyLXJhZGl1czo2cHg7d2lkdGg6NTAlO21pbi13aWR0aDoxMzBweDtmb250LXNpemU6MmVtO3RleHQtYWxpZ246Y2VudGVyO3BhZGRpbmc6M3B4IDZweDtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O291dGxpbmU6bm9uZTt0cmFuc2l0aW9uOmFsbCAuMXMgZWFzZX0uY2FwaWJhcmEgLmlucHV0LXNlY3Rpb24gaW5wdXQubmF2LWlucHV0OmFjdGl2ZSwuY2FwaWJhcmEgLmlucHV0LXNlY3Rpb24gaW5wdXQubmF2LWlucHV0OmZvY3Vze2JvcmRlcjoycHggc29saWQgZ3JleTtib3gtc2hhZG93OjAgNHB4IDZweCBoc2xhKDAsMCUsNTAuMiUsLjIpfS5jYXBpYmFyYSAuaW5wdXQtc2VjdGlvbiAuaW5wdXQtc2VjdGlvbi1jb2x7d2lkdGg6YXV0bztwb3NpdGlvbjpyZWxhdGl2ZTtmbGV4OjEgMSAxMCV9LmNhcGliYXJhIC5pbnB1dC1zZWN0aW9uIC5pbnB1dC1zZWN0aW9uLWNvbCBpbnB1dC5uYXYtaW5wdXR7bWluLXdpZHRoOnVuc2V0O3dpZHRoOmNhbGMoMTAwJSAtIDFyZW0pO21heC13aWR0aDo3cmVtfS5jYXBpYmFyYSAuaW5wdXQtc2VjdGlvbi5tc2otaW5wdXQtY29udGFpbmVyIHRleHRhcmVhLm1zantvdXRsaW5lOm5vbmU7Ym9yZGVyLXJhZGl1czo2cHg7Ym9yZGVyOjJweCBzb2xpZCBncmV5O3dpZHRoOjEwMCU7bWluLXdpZHRoOjEwMCU7bWF4LXdpZHRoOjEwMCU7bWluLWhlaWdodDoxMDBweDt0cmFuc2l0aW9uOmFsbCAuMXMgZWFzZTtwYWRkaW5nOjhweDtib3gtc2l6aW5nOmJvcmRlci1ib3h9LmNhcGliYXJhIC5pbnB1dC1zZWN0aW9uLm1zai1pbnB1dC1jb250YWluZXIgdGV4dGFyZWEubXNqOmFjdGl2ZSwuY2FwaWJhcmEgLmlucHV0LXNlY3Rpb24ubXNqLWlucHV0LWNvbnRhaW5lciB0ZXh0YXJlYS5tc2o6Zm9jdXN7Ym94LXNoYWRvdzowIDRweCA2cHggcmdiYSgyNTUsMTYwLDAsLjIpfS5jYXBpYmFyYSAuaW5wdXQtc2VjdGlvbiBpbnB1dFt0eXBlPWNoZWNrYm94XXt3aWR0aDoxOHB4O2hlaWdodDoxOHB4O3ZlcnRpY2FsLWFsaWduOm1pZGRsZX0uY2FwaWJhcmEgLnRpbWV7Ym9yZGVyOjJweCBzb2xpZCByZ2JhKDAsMTI4LDAsLjcpO2NvbG9yOmdyZWVufS5jYXBpYmFyYSAudGltZSAuc3ltYm9sLC5jYXBpYmFyYSAudGltZSBpbnB1dHtjb2xvcjojMzc0NzRmfS5jYXBpYmFyYSAudGltZSBpbnB1dDphY3RpdmUsLmNhcGliYXJhIC50aW1lIGlucHV0OmZvY3Vze2JvcmRlci1jb2xvcjpncmVlbjtib3gtc2hhZG93OjAgNHB4IDZweCByZ2JhKDAsMTI4LDAsLjIpfS5jYXBpYmFyYSAuaW5wdXQtYm94e2NvbG9yOiMzNzQ3NGY7Ym9yZGVyOjJweCBzb2xpZCBncmVlbn0uY2FwaWJhcmEgLmlucHV0LWJveCAubWluaS1pbnB1dC1zZWN0aW9uIGlucHV0OmFjdGl2ZSwuY2FwaWJhcmEgLmlucHV0LWJveCAubWluaS1pbnB1dC1zZWN0aW9uIGlucHV0OmZvY3Vze2JhY2tncm91bmQ6I2ZhZmFmYX0uY2FwaWJhcmEgLmlucHV0LWJveCAubWluaS1pbnB1dC1zZWN0aW9uLS10b29sdGlwe2JhY2tncm91bmQ6I2ZhZmFmYTtjb2xvcjojMzc0NzRmO2JvcmRlcjoxcHggc29saWQgIzM3NDc0Zn0uY2FwaWJhcmEgLmlucHV0LXNlY3Rpb24gaW5wdXQubmF2LWlucHV0e2NvbG9yOiMzNzQ3NGY7Ym9yZGVyOjJweCBzb2xpZCByZ2JhKDAsMTI4LDAsLjcpfS5jYXBpYmFyYSAuaW5wdXQtc2VjdGlvbiBpbnB1dC5uYXYtaW5wdXQ6YWN0aXZlLC5jYXBpYmFyYSAuaW5wdXQtc2VjdGlvbiBpbnB1dC5uYXYtaW5wdXQ6Zm9jdXN7Ym9yZGVyOjJweCBzb2xpZCBncmVlbjtib3gtc2hhZG93OjAgNHB4IDZweCByZ2JhKDAsMTI4LDAsLjIpfS5jYXBpYmFyYSAuaW5wdXQtc2VjdGlvbi5tc2otaW5wdXQtY29udGFpbmVyIHRleHRhcmVhLm1zantiYWNrZ3JvdW5kOnJnYmEoMjU1LDI0OSwxOTYsLjYpO2JvcmRlcjoycHggc29saWQgcmdiYSgwLDAsMCwuNCl9LmNhcGliYXJhIC5pbnB1dC1zZWN0aW9uLm1zai1pbnB1dC1jb250YWluZXIgdGV4dGFyZWEubXNqOmFjdGl2ZSwuY2FwaWJhcmEgLmlucHV0LXNlY3Rpb24ubXNqLWlucHV0LWNvbnRhaW5lciB0ZXh0YXJlYS5tc2o6Zm9jdXN7YmFja2dyb3VuZDpyZ2JhKDI1NSwyNDksMTk2LC44KTtib3gtc2hhZG93OjAgNHB4IDZweCB0cmFuc3BhcmVudH0uY2FwaWJhcmEuZGFyay10aGVtZSAudGltZXtib3JkZXI6MnB4IHNvbGlkIHJnYmEoNjQsNzgsMTA1LC43KTtjb2xvcjojNDA0ZTY5fS5jYXBpYmFyYS5kYXJrLXRoZW1lIC50aW1lIC5zeW1ib2wsLmNhcGliYXJhLmRhcmstdGhlbWUgLnRpbWUgaW5wdXR7Y29sb3I6I2YwZjBmMH0uY2FwaWJhcmEuZGFyay10aGVtZSAudGltZSBpbnB1dDphY3RpdmUsLmNhcGliYXJhLmRhcmstdGhlbWUgLnRpbWUgaW5wdXQ6Zm9jdXN7Ym9yZGVyLWNvbG9yOiM0MDRlNjk7Ym94LXNoYWRvdzowIDRweCA2cHggcmdiYSg2NCw3OCwxMDUsLjIpfS5jYXBpYmFyYS5kYXJrLXRoZW1lIC5pbnB1dC1ib3h7Y29sb3I6I2YwZjBmMDtib3JkZXI6MnB4IHNvbGlkICM0MDRlNjl9LmNhcGliYXJhLmRhcmstdGhlbWUgLmlucHV0LWJveCAubWluaS1pbnB1dC1zZWN0aW9uIGlucHV0e2JhY2tncm91bmQ6IzQwNGU2OTtjb2xvcjojZjBmMGYwfS5jYXBpYmFyYS5kYXJrLXRoZW1lIC5pbnB1dC1ib3ggLm1pbmktaW5wdXQtc2VjdGlvbiBpbnB1dDphY3RpdmUsLmNhcGliYXJhLmRhcmstdGhlbWUgLmlucHV0LWJveCAubWluaS1pbnB1dC1zZWN0aW9uIGlucHV0OmZvY3Vze2JhY2tncm91bmQ6IzIyMjgzN30uY2FwaWJhcmEuZGFyay10aGVtZSAuaW5wdXQtYm94IC5taW5pLWlucHV0LXNlY3Rpb24tLXRvb2x0aXB7YmFja2dyb3VuZDojMjIyODM3O2NvbG9yOiNmMGYwZjA7Ym9yZGVyOjFweCBzb2xpZCAjZjBmMGYwfS5jYXBpYmFyYS5kYXJrLXRoZW1lIC5pbnB1dC1zZWN0aW9uIGlucHV0Lm5hdi1pbnB1dHtjb2xvcjojZjBmMGYwO2JvcmRlcjoycHggc29saWQgcmdiYSg2NCw3OCwxMDUsLjcpfS5jYXBpYmFyYS5kYXJrLXRoZW1lIC5pbnB1dC1zZWN0aW9uIGlucHV0Lm5hdi1pbnB1dDphY3RpdmUsLmNhcGliYXJhLmRhcmstdGhlbWUgLmlucHV0LXNlY3Rpb24gaW5wdXQubmF2LWlucHV0OmZvY3Vze2JvcmRlcjoycHggc29saWQgIzQwNGU2OTtib3gtc2hhZG93OjAgNHB4IDZweCByZ2JhKDY0LDc4LDEwNSwuMil9LmNhcGliYXJhLmRhcmstdGhlbWUgLmlucHV0LXNlY3Rpb24ubXNqLWlucHV0LWNvbnRhaW5lciB0ZXh0YXJlYS5tc2p7YmFja2dyb3VuZDpyZ2JhKDI1MSwxOTIsNDUsLjEpO2JvcmRlcjoycHggc29saWQgIzllOWU5ZTtjb2xvcjojZjBmMGYwfS5jYXBpYmFyYS5kYXJrLXRoZW1lIC5pbnB1dC1zZWN0aW9uLm1zai1pbnB1dC1jb250YWluZXIgdGV4dGFyZWEubXNqOmFjdGl2ZSwuY2FwaWJhcmEuZGFyay10aGVtZSAuaW5wdXQtc2VjdGlvbi5tc2otaW5wdXQtY29udGFpbmVyIHRleHRhcmVhLm1zajpmb2N1c3tiYWNrZ3JvdW5kOnJnYmEoMjUxLDE5Miw0NSwuMyk7Ym94LXNoYWRvdzowIDRweCA2cHggaHNsYSgwLDAlLDYyJSwuMil9LmNhcGliYXJhIGJ1dHRvbntvdXRsaW5lOm5vbmV9LmNhcGliYXJhIGJ1dHRvbi5yb3RhdGUgLm1kaTpiZWZvcmUsLmNhcGliYXJhIGJ1dHRvbi5yb3RhdGUgc3Zne3RyYW5zZm9ybTpyb3RhdGUoMTgwZGVnKX0uY2FwaWJhcmEgLmJ0bi1yYWlzZWR7YmFja2dyb3VuZDpncmV5fS5jYXBpYmFyYSAuYnRuLW91dGxpbmUsLmNhcGliYXJhIC5idG4tcmFpc2Vke2N1cnNvcjpwb2ludGVyO3BhZGRpbmc6OHB4IDE2cHg7bWFyZ2luOjAgOHB4O2JvcmRlci1yYWRpdXM6NnB4O2JvcmRlcjoycHggc29saWQgZ3JleTtmb250LXdlaWdodDo3MDB9LmNhcGliYXJhIC5idG4tb3V0bGluZXtjb2xvcjpncmV5fS5jYXBpYmFyYSAuYnRuLWljb257ZGlzcGxheTppbmxpbmUtYmxvY2s7aGVpZ2h0OjMycHg7d2lkdGg6MzJweDtvdXRsaW5lOm5vbmU7Y3Vyc29yOnBvaW50ZXI7dmVydGljYWwtYWxpZ246bWlkZGxlO21hcmdpbi1yaWdodDoxNnB4O21hcmdpbi10b3A6NHB4O2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7Ym9yZGVyOm5vbmU7cGFkZGluZzowO2ZvbnQtc2l6ZToxOHB4O2NvbG9yOmdyZXk7Ym9yZGVyLXJhZGl1czo1MCV9LmNhcGliYXJhIC5idG4taWNvbiBzdmd7ZmlsbDpncmV5fS5jYXBpYmFyYSAuYnRuLWljb24uYnRuLWljb24tcmFpc2Vke2JhY2tncm91bmQ6I2ZmZjtib3JkZXI6bm9uZX0uY2FwaWJhcmEgLmJ0bi1pY29uLmJ0bi1pY29uLW91dGxpbmV7Ym9yZGVyOjFweCBzb2xpZCBncmV5fS5jYXBpYmFyYSAuYnRuLWljb24uYnRuLXRvZ2dsZS1zaWRlYmFye3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OjEwcHg7dG9wOjEwcHg7ei1pbmRleDoyO21hcmdpbjowfS5jYXBpYmFyYSAuYnRuLWljb24gLm1kaXtmb250LXNpemU6MjRweH0uY2FwaWJhcmEgLmJ0bi1pY29uIC5sb2FkaW5nLWljb24sLmNhcGliYXJhIC5idG4taWNvbi5sb2FkaW5nPjpub3QoLmxvYWRpbmctaWNvbil7ZGlzcGxheTpub25lfS5jYXBpYmFyYSAuYnRuLWljb24ubG9hZGluZyAubG9hZGluZy1pY29ue2Rpc3BsYXk6dW5zZXR9LmNhcGliYXJhIC5idG4tc2hhcGV7ZGlzcGxheTppbmxpbmUtYmxvY2s7d2lkdGg6MjRweDtoZWlnaHQ6MjRweDtvdXRsaW5lOm5vbmU7Y3Vyc29yOnBvaW50ZXI7dmVydGljYWwtYWxpZ246bWlkZGxlO21hcmdpbjo0cHg7YmFja2dyb3VuZDp0cmFuc3BhcmVudDtib3JkZXI6bm9uZTtwYWRkaW5nOjA7Zm9udC1zaXplOjE0cHh9LmNhcGliYXJhIC5idG4tc2hhcGUgLm1kaXtmb250LXNpemU6MjRweH0uY2FwaWJhcmEgLmJ0bi1zaGFwZS5idG4tY2lyY2xle3Bvc2l0aW9uOnJlbGF0aXZlO2JvcmRlcjpub25lO3BhZGRpbmc6MH0uY2FwaWJhcmEgLmJ0bi1zaGFwZS5idG4tY2lyY2xlOmJlZm9yZXtjb250ZW50OlxcXCJcXFwiO2Rpc3BsYXk6YmxvY2s7cG9zaXRpb246YWJzb2x1dGU7bGVmdDoycHg7dG9wOjJweDtib3JkZXItcmFkaXVzOjUwJTtiYWNrZ3JvdW5kOmdyZXk7d2lkdGg6MjJweDtoZWlnaHQ6MjJweH0uY2FwaWJhcmEgLmJ0bi1zaGFwZS5idG4tY2lyY2xlIHNwYW57cG9zaXRpb246YWJzb2x1dGU7bGVmdDoxcHg7dG9wOjZweDt3aWR0aDoxMDAlO2Rpc3BsYXk6aW5saW5lLWJsb2NrO2NvbG9yOiNmZmY7dGV4dC1hbGlnbjpjZW50ZXJ9LmNhcGliYXJhIC5idG4tc2hhcGUuYnRuLWNpcmNsZS1vdXRsaW5le3Bvc2l0aW9uOnJlbGF0aXZlO2JvcmRlcjpub25lO3BhZGRpbmc6MH0uY2FwaWJhcmEgLmJ0bi1zaGFwZS5idG4tY2lyY2xlLW91dGxpbmU6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXCI7ZGlzcGxheTpibG9jaztwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjJweDt0b3A6M3B4O2JvcmRlci1yYWRpdXM6NTAlO2JvcmRlcjoycHggc29saWQgZ3JleTt3aWR0aDoyMnB4O2hlaWdodDoyMnB4fS5jYXBpYmFyYSAuYnRuLXNoYXBlLmJ0bi1jaXJjbGUtb3V0bGluZSBzcGFue3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MXB4O3RvcDo2cHg7d2lkdGg6MTAwJTtkaXNwbGF5OmlubGluZS1ibG9jaztjb2xvcjpncmV5O3RleHQtYWxpZ246Y2VudGVyfS5jYXBpYmFyYSAuYnRuLXNoYXBlLmJ0bi1kcm9we3Bvc2l0aW9uOnJlbGF0aXZlO2JvcmRlcjpub25lO3BhZGRpbmc6MH0uY2FwaWJhcmEgLmJ0bi1zaGFwZS5idG4tZHJvcDpiZWZvcmV7Y29udGVudDpcXFwiXFxcIjtkaXNwbGF5OmJsb2NrO3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6NHB4O3RvcDowO2JvcmRlci1yYWRpdXM6MCA1MCUgNTAlIDUwJTtiYWNrZ3JvdW5kOmdyZXk7d2lkdGg6MjBweDtoZWlnaHQ6MjBweDt0cmFuc2Zvcm06dHJhbnNsYXRlKC0ycHgsNHB4KSByb3RhdGUoNDVkZWcpfS5jYXBpYmFyYSAuYnRuLXNoYXBlLmJ0bi1kcm9wIHNwYW57cG9zaXRpb246YWJzb2x1dGU7bGVmdDowO3RvcDo2cHg7d2lkdGg6MTAwJTtkaXNwbGF5OmlubGluZS1ibG9jaztjb2xvcjojZmZmO3RleHQtYWxpZ246Y2VudGVyfS5jYXBpYmFyYS5leHRlbmRlZC1yaWdodCBbdG9nZ2xlLXNpZGViYXItcmlnaHRdIHN2ZywuY2FwaWJhcmEuaGVhZGVyLWV4dGVuZGVkIFt0b2dnbGUtaGVhZGVyXSBzdmd7dHJhbnNmb3JtOnJvdGF0ZSgxODBkZWcpfS5jYXBpYmFyYSAuYnRuLXJhaXNlZHtiYWNrZ3JvdW5kOiMwMGY7Ym9yZGVyOjJweCBzb2xpZCAjMDBmO2NvbG9yOiNmZmZ9LmNhcGliYXJhIC5idG4tb3V0bGluZXtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O2JvcmRlcjoycHggc29saWQgIzAwZjtjb2xvcjojMDBmfS5jYXBpYmFyYSAuYnRuLXNoYXBle2NvbG9yOiMzNzQ3NGZ9LmNhcGliYXJhIC5idG4tc2hhcGUuYnRuLWNpcmNsZSwuY2FwaWJhcmEgLmJ0bi1zaGFwZS5idG4tZHJvcHtjb2xvcjojZmZmfS5jYXBpYmFyYSAuYnRuLXNoYXBlLmJ0bi1jaXJjbGU6YmVmb3JlLC5jYXBpYmFyYSAuYnRuLXNoYXBlLmJ0bi1kcm9wOmJlZm9yZXtiYWNrZ3JvdW5kOiMzODhlM2N9LmNhcGliYXJhIC5idG4tc2hhcGUuYnRuLWNpcmNsZS1vdXRsaW5lOmJlZm9yZXtib3JkZXItY29sb3I6IzM4OGUzY30uY2FwaWJhcmEgLmJ0bi1pY29uLC5jYXBpYmFyYSAuYnRuLXNoYXBlLmJ0bi1jaXJjbGUtb3V0bGluZSBzcGFue2NvbG9yOiMzNzQ3NGZ9LmNhcGliYXJhIC5idG4taWNvbi5idG4taWNvbi1yYWlzZWR7YmFja2dyb3VuZDpyZ2JhKDg0LDExMCwxMjIsLjEpO2JvcmRlci1jb2xvcjojNTQ2ZTdhO2NvbG9yOiM1NDZlN2F9LmNhcGliYXJhIC5idG4taWNvbi5idG4taWNvbi1yYWlzZWQ6YWN0aXZle2JhY2tncm91bmQ6IzU0NmU3YX0uY2FwaWJhcmEgLmJ0bi1pY29uLmJ0bi1pY29uLXJhaXNlZDpmb2N1cywuY2FwaWJhcmEgLmJ0bi1pY29uLmJ0bi1pY29uLXJhaXNlZDpob3ZlcntiYWNrZ3JvdW5kOnJnYmEoODQsMTEwLDEyMiwuMyl9LmNhcGliYXJhIC5idG4taWNvbi5idG4taWNvbi1vdXRsaW5le2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7Ym9yZGVyLWNvbG9yOiM1NDZlN2E7Y29sb3I6IzU0NmU3YX0uY2FwaWJhcmEgLmJ0bi1pY29uLmJ0bi1pY29uLW91dGxpbmU6YWN0aXZle2JhY2tncm91bmQ6cmdiYSg4NCwxMTAsMTIyLC4zKX0uY2FwaWJhcmEgLmJ0bi1pY29uLmJ0bi1pY29uLW91dGxpbmU6Zm9jdXMsLmNhcGliYXJhIC5idG4taWNvbi5idG4taWNvbi1vdXRsaW5lOmhvdmVye2JhY2tncm91bmQ6cmdiYSg4NCwxMTAsMTIyLC4xKX0uY2FwaWJhcmEuZGFyay10aGVtZSAuYnRuLXJhaXNlZHtiYWNrZ3JvdW5kOiM0MDRlNjk7Ym9yZGVyOjJweCBzb2xpZCAjZjBmMGYwO2NvbG9yOiNmMGYwZjB9LmNhcGliYXJhLmRhcmstdGhlbWUgLmJ0bi1vdXRsaW5le2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7Ym9yZGVyOjJweCBzb2xpZCAjZjBmMGYwO2NvbG9yOiNmMGYwZjB9LmNhcGliYXJhLmRhcmstdGhlbWUgLmJ0bi1zaGFwZSwuY2FwaWJhcmEuZGFyay10aGVtZSAuYnRuLXNoYXBlLmJ0bi1jaXJjbGUsLmNhcGliYXJhLmRhcmstdGhlbWUgLmJ0bi1zaGFwZS5idG4tZHJvcHtjb2xvcjpoc2xhKDAsMCUsOTQuMSUsLjgpfS5jYXBpYmFyYS5kYXJrLXRoZW1lIC5idG4tc2hhcGUuYnRuLWNpcmNsZTpiZWZvcmUsLmNhcGliYXJhLmRhcmstdGhlbWUgLmJ0bi1zaGFwZS5idG4tZHJvcDpiZWZvcmV7YmFja2dyb3VuZDojMmU3ZDMyfS5jYXBpYmFyYS5kYXJrLXRoZW1lIC5idG4tc2hhcGUuYnRuLWNpcmNsZS1vdXRsaW5lOmJlZm9yZXtib3JkZXItY29sb3I6IzJlN2QzMn0uY2FwaWJhcmEuZGFyay10aGVtZSAuYnRuLWljb24sLmNhcGliYXJhLmRhcmstdGhlbWUgLmJ0bi1zaGFwZS5idG4tY2lyY2xlLW91dGxpbmUgc3Bhbntjb2xvcjpoc2xhKDAsMCUsOTQuMSUsLjgpfS5jYXBpYmFyYS5kYXJrLXRoZW1lIC5idG4taWNvbi5idG4taWNvbi1yYWlzZWR7YmFja2dyb3VuZDpoc2xhKDAsMCUsOTQuMSUsLjEpO2JvcmRlci1jb2xvcjpoc2xhKDAsMCUsOTQuMSUsLjgpO2NvbG9yOmhzbGEoMCwwJSw5NC4xJSwuOCl9LmNhcGliYXJhLmRhcmstdGhlbWUgLmJ0bi1pY29uLmJ0bi1pY29uLXJhaXNlZDphY3RpdmV7YmFja2dyb3VuZDojZjBmMGYwfS5jYXBpYmFyYS5kYXJrLXRoZW1lIC5idG4taWNvbi5idG4taWNvbi1yYWlzZWQ6Zm9jdXMsLmNhcGliYXJhLmRhcmstdGhlbWUgLmJ0bi1pY29uLmJ0bi1pY29uLXJhaXNlZDpob3ZlcntiYWNrZ3JvdW5kOmhzbGEoMCwwJSw5NC4xJSwuMyl9LmNhcGliYXJhLmRhcmstdGhlbWUgLmJ0bi1pY29uLmJ0bi1pY29uLW91dGxpbmV7YmFja2dyb3VuZDp0cmFuc3BhcmVudDtib3JkZXItY29sb3I6aHNsYSgwLDAlLDk0LjElLC44KTtjb2xvcjpoc2xhKDAsMCUsOTQuMSUsLjgpfS5jYXBpYmFyYS5kYXJrLXRoZW1lIC5idG4taWNvbi5idG4taWNvbi1vdXRsaW5lOmFjdGl2ZXtiYWNrZ3JvdW5kOmhzbGEoMCwwJSw5NC4xJSwuMSl9LmNhcGliYXJhLmRhcmstdGhlbWUgLmJ0bi1pY29uLmJ0bi1pY29uLW91dGxpbmU6Zm9jdXMsLmNhcGliYXJhLmRhcmstdGhlbWUgLmJ0bi1pY29uLmJ0bi1pY29uLW91dGxpbmU6aG92ZXJ7YmFja2dyb3VuZDpoc2xhKDAsMCUsOTQuMSUsMCl9LmNhcGliYXJhIFtjYXAtdG9vbHRpcF17cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTppbmxpbmUtYmxvY2t9LmNhcGliYXJhIFtjYXAtdG9vbHRpcF06aG92ZXI6YmVmb3Jle3BhZGRpbmc6OHB4O29wYWNpdHk6MTtib3JkZXItd2lkdGg6MXB4O2hlaWdodDphdXRvfS5jYXBpYmFyYSBbY2FwLXRvb2x0aXBdOmJlZm9yZXtvcGFjaXR5Oi4zO2hlaWdodDowO3BhZGRpbmc6MCA4cHg7dGV4dC1hbGlnbjpsZWZ0O292ZXJmbG93OmhpZGRlbjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDA7cG9zaXRpb246YWJzb2x1dGU7dG9wOmNhbGMoMTAwJSArIDE4cHgpO2xlZnQ6NTAlO3RyYW5zZm9ybTp0cmFuc2xhdGV4KC01MCUpO2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuNyk7Ym9yZGVyOjAgc29saWQgIzAwMDtib3JkZXItcmFkaXVzOjVweDtjb2xvcjojZmZmO2NvbnRlbnQ6YXR0cihjYXAtdG9vbHRpcCk7dGV4dC10cmFuc2Zvcm06bm9uZTt0cmFuc2l0aW9uOmFsbCAuMnMgZWFzZTttaW4td2lkdGg6MTAwcHg7ei1pbmRleDo1fS5jYXBpYmFyYSAuZmxvYXQtYm94LWNvbnRhaW5lcntvdmVyZmxvdzp2aXNpYmxlO3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MDt0b3A6MDt3aWR0aDowO2hlaWdodDowfS5jYXBpYmFyYSAuZmxvYXQtYm94LWNvbnRhaW5lciAuZmxvYXQtYm94e3dpZHRoOnZhcigtLWRheS13aWR0aCk7bWF4LXdpZHRoOnZhcigtLWRheS13aWR0aCk7bWluLXdpZHRoOnZhcigtLWRheS13aWR0aCk7aGVpZ2h0OnZhcigtLWl0ZW0taGVpZ2h0KTttYXgtaGVpZ2h0OnZhcigtLWl0ZW0taGVpZ2h0KTttaW4taGVpZ2h0OnZhcigtLWl0ZW0taGVpZ2h0KTtwb3NpdGlvbjphYnNvbHV0ZTtvdmVyZmxvdzpoaWRkZW47Y3Vyc29yOmRlZmF1bHR9LmNhcGliYXJhIC5mbG9hdC1ib3gtY29udGFpbmVyIC5mbG9hdC1ib3guaGFzLW1lc3NhZ2U6YWZ0ZXJ7Y29udGVudDpcXFwiXFxcIjtkaXNwbGF5OmJsb2NrO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjA7aGVpZ2h0OjA7cmlnaHQ6MDt0b3A6MDtib3JkZXItY29sb3I6IzAwMCAjMDAwIHRyYW5zcGFyZW50IHRyYW5zcGFyZW50O2JvcmRlci1zdHlsZTpzb2xpZDtib3JkZXItd2lkdGg6NnB4Oy13ZWJraXQtYW5pbWF0aW9uOnB1bHNlTWVzc2FnZSAxcyBpbmZpbml0ZSBhbHRlcm5hdGU7YW5pbWF0aW9uOnB1bHNlTWVzc2FnZSAxcyBpbmZpbml0ZSBhbHRlcm5hdGV9LmNhcGliYXJhIC5mbG9hdC1ib3gtY29udGFpbmVyIC5mbG9hdC1ib3guaGFzLWVycm9yczpiZWZvcmV7Y29udGVudDpcXFwiXFxcIjtkaXNwbGF5OmJsb2NrO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjdweDtoZWlnaHQ6N3B4O2xlZnQ6MXB4O3RvcDoxcHg7Ym9yZGVyLXJhZGl1czo1MCU7LXdlYmtpdC1hbmltYXRpb246cHVsc2VCYWNrZ3JvdW5kIDFzIGluZmluaXRlIGFsdGVybmF0ZTthbmltYXRpb246cHVsc2VCYWNrZ3JvdW5kIDFzIGluZmluaXRlIGFsdGVybmF0ZX0uY2FwaWJhcmEgLmZsb2F0LWJveC1jb250YWluZXIgLmZsb2F0LWJveCAuZG90LWNvbnRhaW5lci1ib3R0b20sLmNhcGliYXJhIC5mbG9hdC1ib3gtY29udGFpbmVyIC5mbG9hdC1ib3ggLmRvdC1jb250YWluZXItbWlkZGxlLC5jYXBpYmFyYSAuZmxvYXQtYm94LWNvbnRhaW5lciAuZmxvYXQtYm94IC5kb3QtY29udGFpbmVyLXRvcHtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjA7d2lkdGg6MTAwJTtvdmVyZmxvdzp2aXNpYmxlO2hlaWdodDowO2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfS5jYXBpYmFyYSAuZmxvYXQtYm94LWNvbnRhaW5lciAuZmxvYXQtYm94IC5kb3QtY29udGFpbmVyLXRvcHt0b3A6MXB4fS5jYXBpYmFyYSAuZmxvYXQtYm94LWNvbnRhaW5lciAuZmxvYXQtYm94IC5kb3QtY29udGFpbmVyLXRvcCAuZG90e2JvcmRlci1yYWRpdXM6MCAwIDUwJSA1MCV9LmNhcGliYXJhIC5mbG9hdC1ib3gtY29udGFpbmVyIC5mbG9hdC1ib3ggLmRvdC1jb250YWluZXItbWlkZGxle3RvcDpjYWxjKDUwJSAtIDRweCl9LmNhcGliYXJhIC5mbG9hdC1ib3gtY29udGFpbmVyIC5mbG9hdC1ib3ggLmRvdC1jb250YWluZXItYm90dG9te2JvdHRvbTo1cHh9LmNhcGliYXJhIC5mbG9hdC1ib3gtY29udGFpbmVyIC5mbG9hdC1ib3ggLmRvdC1jb250YWluZXItYm90dG9tIC5kb3R7Ym9yZGVyLXJhZGl1czowIDAgNTAlIDUwJX0uY2FwaWJhcmEgLmZsb2F0LWJveC1jb250YWluZXIgLmZsb2F0LWJveCAuZG90e3dpZHRoOjhweDttaW4td2lkdGg6OHB4O2hlaWdodDo4cHg7Ym9yZGVyLXJhZGl1czo1MCU7YmFja2dyb3VuZDojMGZmO21hcmdpbjoxcHg7dmVydGljYWwtYWxpZ246bWlkZGxlO2JvcmRlcjoxcHggc29saWQgaHNsYSgwLDAlLDEwMCUsLjgpOy13ZWJraXQtYmFja2Ryb3AtZmlsdGVyOmJsdXIoMnB4KTtiYWNrZHJvcC1maWx0ZXI6Ymx1cigycHgpfS5jYXBpYmFyYSAuZmxvYXQtYm94LWNvbnRhaW5lciAuZmxvYXQtYm94IC5kb3QuZGlhbW9uZHtib3JkZXItcmFkaXVzOjA7dHJhbnNmb3JtOnJvdGF0ZSg0NWRlZykgc2tldygxMGRlZywxMGRlZyl9LmNhcGliYXJhIC5mbG9hdC1ib3gtY29udGFpbmVyIC5mbG9hdC1ib3ggLmRvdC5vdXRsaW5lZHtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fS5jYXBpYmFyYSAuZmxvYXQtYm94LWNvbnRhaW5lciAuZmxvYXQtYm94IHNwYW4uZGF0YXt3aWR0aDoxMDAlO2Rpc3BsYXk6YmxvY2s7Zm9udC1zaXplOi44NzVlbTt0ZXh0LWFsaWduOmNlbnRlcjtib3gtc2l6aW5nOmJvcmRlci1ib3g7aGVpZ2h0OmNhbGModmFyKC0taXRlbS1oZWlnaHQpLzIpO2xpbmUtaGVpZ2h0OmNhbGModmFyKC0taXRlbS1oZWlnaHQpLzIpO21hcmdpbi1ib3R0b206MnB4O2ZvbnQtd2VpZ2h0OjcwMDtib3gtc2hhZG93Omluc2V0IDAgMCAxMHB4IGhzbGEoMCwwJSwxMDAlLC4yKTtib3JkZXItcmFkaXVzOjNweDtjb2xvcjojZmZmfS5jYXBpYmFyYSAuZmxvYXQtYm94LWNvbnRhaW5lciAuZmxvYXQtYm94IHNwYW4uZGF0YTpub3QoLnNoYXBlLW91dGxpbmVkKXtib3JkZXI6MXB4IHNvbGlkIGhzbGEoMCwwJSwxMDAlLC4yKX0uY2FwaWJhcmEgLmZsb2F0LWJveC1jb250YWluZXIgLmZsb2F0LWJveCBzcGFuLmRhdGEuc2hhcGUtb3V0bGluZWR7YmFja2dyb3VuZDp0cmFuc3BhcmVudDtib3JkZXI6MnB4IHNvbGlkIGdyZXk7LXdlYmtpdC1iYWNrZHJvcC1maWx0ZXI6Ymx1cigycHgpO2JhY2tkcm9wLWZpbHRlcjpibHVyKDJweCl9LmNhcGliYXJhIC5mbG9hdC1ib3gtY29udGFpbmVyIC5mbG9hdC1ib3ggc3Bhbi5kYXRhLnNoYXBlLWJhcntoZWlnaHQ6Y2FsYyh2YXIoLS1pdGVtLWhlaWdodCkvNCAtIDEuNXB4KTt3aWR0aDpjYWxjKHZhcigtLWRheS13aWR0aCkgLSA2cHgpO2xpbmUtaGVpZ2h0OjA7Y29sb3I6dHJhbnNwYXJlbnQ7Ym9yZGVyLXJhZGl1czoxcHg7Ym9yZGVyOjFweCBzb2xpZCByZ2JhKDAsMCwwLC40KTttYXJnaW46MCAzcHh9LmNhcGliYXJhIC5mbG9hdC1ib3gtY29udGFpbmVyIC5mbG9hdC1ib3ggc3Bhbi5kYXRhLnNoYXBlLWJhcjpmaXJzdC1jaGlsZHttYXJnaW4tdG9wOjNweH0uY2FwaWJhcmEgLmZsb2F0LWJveC1jb250YWluZXIgLmZsb2F0LWJveCBzcGFuLmRhdGEuc2hhcGUtYmFyLW91dGxpbmVke2hlaWdodDpjYWxjKHZhcigtLWl0ZW0taGVpZ2h0KS80IC0gMS41cHgpO3dpZHRoOmNhbGModmFyKC0tZGF5LXdpZHRoKSAtIDZweCk7bGluZS1oZWlnaHQ6MDtjb2xvcjp0cmFuc3BhcmVudDtib3JkZXItcmFkaXVzOjFweDtib3JkZXI6MXB4IHNvbGlkIHJnYmEoMCwwLDAsLjIpO21hcmdpbjowIDNweDstd2Via2l0LWJhY2tkcm9wLWZpbHRlcjpibHVyKDJweCk7YmFja2Ryb3AtZmlsdGVyOmJsdXIoMnB4KX0uY2FwaWJhcmEgLmZsb2F0LWJveC1jb250YWluZXIgLmZsb2F0LWJveCBzcGFuLmRhdGEuc2hhcGUtYmFyLW91dGxpbmVkOmZpcnN0LWNoaWxke21hcmdpbi10b3A6M3B4fS5jYXBpYmFyYSAuZmxvYXQtYm94LWNvbnRhaW5lciAuZmxvYXQtYm94IHNwYW4uZGF0YS5zaGFwZS1iYXJ7Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjMpfS5jYXBpYmFyYS5kYXJrLXRoZW1lIC5mbG9hdC1ib3gtY29udGFpbmVyIC5mbG9hdC1ib3ggc3Bhbi5kYXRhLnNoYXBlLWJhcntib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuNil9LmNhcGliYXJhIC5wcm9ncmVzcy1iYXJ7d2lkdGg6MTAwJTtoZWlnaHQ6NHB4O2JhY2tncm91bmQtY29sb3I6aHNsYSgwLDAlLDg2LjclLC4yKTtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246YWJzb2x1dGU7bGVmdDowO2JvdHRvbTowO3RyYW5zaXRpb246aGVpZ2h0IDFzIGVhc2V9LmNhcGliYXJhIC5wcm9ncmVzcy1iYXIuaGlkZS1wcm9ncmVzc3toZWlnaHQ6MH0uY2FwaWJhcmEgLnByb2dyZXNzLWJhcjpiZWZvcmV7LXdlYmtpdC1hbmltYXRpb24tbmFtZTpsb2FkaW5nLWZhc3QxO2FuaW1hdGlvbi1uYW1lOmxvYWRpbmctZmFzdDE7LXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOmVhc2Utb3V0O2FuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246ZWFzZS1vdXQ7LXdlYmtpdC1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50OmluZmluaXRlO2FuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6aW5maW5pdGV9LmNhcGliYXJhIC5wcm9ncmVzcy1iYXI6YWZ0ZXIsLmNhcGliYXJhIC5wcm9ncmVzcy1iYXI6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXCI7cG9zaXRpb246YWJzb2x1dGU7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTEwMCUpO3dpZHRoOjYyLjUlO2hlaWdodDoxMDAlO2JhY2tncm91bmQtY29sb3I6IzI5MjkyOTstd2Via2l0LWFuaW1hdGlvbi1kdXJhdGlvbjoyczthbmltYXRpb24tZHVyYXRpb246MnN9LmNhcGliYXJhIC5wcm9ncmVzcy1iYXI6YWZ0ZXJ7LXdlYmtpdC1hbmltYXRpb24tbmFtZTpsb2FkaW5nLWZhc3QyO2FuaW1hdGlvbi1uYW1lOmxvYWRpbmctZmFzdDI7LXdlYmtpdC1hbmltYXRpb24tZGVsYXk6MS4zczthbmltYXRpb24tZGVsYXk6MS4zczstd2Via2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246ZWFzZS1vdXQ7YW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjplYXNlLW91dDstd2Via2l0LWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6aW5maW5pdGU7YW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDppbmZpbml0ZX1zcGFuLm1kaXttaW4td2lkdGg6MTRweDttaW4taGVpZ2h0OjE0cHg7ZGlzcGxheTppbmxpbmUtYmxvY2t9c3Bhbi5tZGkubWRpLXN1YmRpcmVjdG9yeS1hcnJvdy1yaWdodHtjb2xvcjpyZ2JhKDAsMCwwLC4yKX0uY2FwaWJhcmEgLmxpZ2h0e2Rpc3BsYXk6YmxvY2s7d2lkdGg6MThweDtoZWlnaHQ6MThweDtmbGV4OjAgMCAxOHB4O2JvcmRlci1yYWRpdXM6NTAlO21hcmdpbjoxMnB4IDhweDtib3JkZXI6MnB4IHNvbGlkIHJnYmEoMCwwLDAsLjMpO2JvcmRlci1jb2xvcjpoc2xhKDAsMCUsMTAwJSwuOCl9LmNhcGliYXJhIC5saWdodC5yZWQtbGlnaHR7YmFja2dyb3VuZDojZDMyZjJmfS5jYXBpYmFyYSAubGlnaHQueWVsbG93LWxpZ2h0e2JhY2tncm91bmQ6I2ZkZDgzNX0uY2FwaWJhcmEgLmxpZ2h0LmdyZWVuLWxpZ2h0e2JhY2tncm91bmQ6IzJlN2QzMn0uY2FwaWJhcmEuZGFyay10aGVtZSAubGlnaHR7Ym9yZGVyLWNvbG9yOiM0MDRlNjl9LmNhcGliYXJhLmRhcmstdGhlbWUgLmxpZ2h0LnJlZC1saWdodHtiYWNrZ3JvdW5kOiNiNzFjMWN9LmNhcGliYXJhLmRhcmstdGhlbWUgLmxpZ2h0LnllbGxvdy1saWdodHtiYWNrZ3JvdW5kOiNmYjhjMDB9LmNhcGliYXJhLmRhcmstdGhlbWUgLmxpZ2h0LmdyZWVuLWxpZ2h0e2JhY2tncm91bmQ6IzM4OGUzY30uY2FwaWJhcmEgc2VsZWN0LnRhYnMtc2VsZWN0e2JhY2tncm91bmQ6Z3JleTtjb2xvcjojZmZmO2ZvbnQtc2l6ZToxNnB4O291dGxpbmU6bm9uZTt3aWR0aDoxMDBweDtwYWRkaW5nOjNweCAxOHB4O2ZvbnQtd2VpZ2h0OjcwMDtib3JkZXI6MXB4IHNvbGlkIHRyYW5zcGFyZW50O21hcmdpbjo4cHg7Ym9yZGVyLXJhZGl1czozMHB4O3RyYW5zaXRpb246YmFja2dyb3VuZCAuMnMgZWFzZTstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZTthcHBlYXJhbmNlOm5vbmV9LmNhcGliYXJhIHNlbGVjdC50YWJzLXNlbGVjdCBvcHRpb257Y29sb3I6Z3JleTtiYWNrZ3JvdW5kOiNmZmY7cGFkZGluZzoxNXB4fS5jYXBpYmFyYSBzZWxlY3QudGFicy1zZWxlY3Q6YWZ0ZXJ7Y29udGVudDpcXFwiXFxcIjtkaXNwbGF5OmJsb2NrO3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OjEwcHg7dG9wOjRweDtib3JkZXItd2lkdGg6NHB4O2JvcmRlci1jb2xvcjojZmZmO3otaW5kZXg6Mn0uY2FwaWJhcmEgc2VsZWN0LnRhYnMtc2VsZWN0LmRpc2FibGVke2NvbG9yOmdyZXl9LmNhcGliYXJhIHNlbGVjdC50YWJzLXNlbGVjdDpob3Zlcntib3JkZXItY29sb3I6Z3JleX1cIiwgXCJcIl0pO1xuLy8gRXhwb3J0c1xubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/src/index.js!./node_modules/sass-loader/dist/cjs.js!./src/scss/style.scss\n");
|
|
107
107
|
|
|
108
108
|
/***/ }),
|
|
109
109
|
|
|
@@ -184,7 +184,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _scs
|
|
|
184
184
|
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
185
185
|
|
|
186
186
|
"use strict";
|
|
187
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Capibara\", function() { return Capibara; });\n/* harmony import */ var _util_domUtils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util/domUtils */ \"./src/util/domUtils.js\");\n/* harmony import */ var _util_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/utils */ \"./src/util/utils.js\");\n/* harmony import */ var _util_dateUtils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/dateUtils */ \"./src/util/dateUtils.js\");\n/* harmony import */ var _util_tableElements__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/tableElements */ \"./src/util/tableElements.js\");\n/* harmony import */ var _util_styleUtils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/styleUtils */ \"./src/util/styleUtils.js\");\n\n\n\n\n\n/**\n * Capibara, planilla para despliegue de datos por fecha como GANTT\n * orientado inicialmente a datos diarios de items\n *\n * @author Patricio. M. Rojas. <patricio@irricrops.com>\n */\n\nclass Capibara {\n /**\n * @constructor\n * Instancia variables de planilla Capibara, con configuracion\n * Crea el elemento contenedor {containerElement} segun selector\n *\n * @param {Object} attributes - atributos que se usaran al iniciar la planilla\n * @param {Object} attributes.config - Configuracion de planilla\n */\n constructor({\n config\n }) {\n if (config == null) console.error(\"config no econtrado\");\n this.containerElement = document.querySelector(config.selector);\n if (this.containerElement == null) console.error(\"Elemento dom segun config.selector, no encontrado\");\n this.initialized = false;\n this.$capibara = null;\n this.$elements = {};\n this.tabSelected = null;\n this.$inputsNavRight = [];\n this.selected = [];\n this.config = config;\n this.lastDataDay = null;\n this.isShowNavExtended = false;\n this.isShowNavInitial = true;\n this.isShowNavButtons = true;\n this.isMobile = false;\n this.lastMousePosition = null;\n this.isVisibleContextMenu = false;\n }\n /**\n * Inicializa Planilla:\n * - vacia variables necesarias\n * - crea planilla llamando a drawTable\n * - Agrega eventos a planilla\n * - mueve scroll al medio de la tabla\n */\n\n\n init() {\n this.tabSelected = null;\n this.$capibara = null;\n this.$elements = {};\n this.$inputsNavRight = [];\n this.selected = [];\n this.lastDataDay = null;\n this.isMobile = _util_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].checkIsMobile();\n this.isVisibleContextMenu = false;\n this.setAllCSSVariables();\n this.drawTable();\n this.addEvents();\n this.scrollToMiddle();\n this.toggleSidebarMobile();\n this.initialized = true;\n }\n /**\n * Cambia configuracion de planilla\n *\n * @param {Object} config - Configuracion nueva para planilla\n */\n\n\n setConfig(config) {\n this.config = config;\n }\n /**\n * Crea la planilla\n * agregando todos los elementos en orden dentro\n *\n * @return { DomElement } $capibara - elemento del Dom que contiene toda la planilla\n */\n\n\n drawTable() {\n let config = this.config;\n let initialTab = config.timeline.tabs[0];\n let $capibara = _util_tableElements__WEBPACK_IMPORTED_MODULE_3__[\"default\"].createAgTable(config);\n let $corner = _util_tableElements__WEBPACK_IMPORTED_MODULE_3__[\"default\"].createCorner(config, initialTab);\n let $cornerRight = _util_tableElements__WEBPACK_IMPORTED_MODULE_3__[\"default\"].createCornerRight(config);\n let $headerTop = _util_tableElements__WEBPACK_IMPORTED_MODULE_3__[\"default\"].createHeaderTop(config);\n let $header = _util_tableElements__WEBPACK_IMPORTED_MODULE_3__[\"default\"].createHeader(config);\n let $todayLine = _util_tableElements__WEBPACK_IMPORTED_MODULE_3__[\"default\"].createTodayLine(config);\n let $headerExtended = _util_tableElements__WEBPACK_IMPORTED_MODULE_3__[\"default\"].createHeaderExtended(config);\n let $navLeft = _util_tableElements__WEBPACK_IMPORTED_MODULE_3__[\"default\"].createNavLeft(config);\n let $cornerFooter = _util_tableElements__WEBPACK_IMPORTED_MODULE_3__[\"default\"].createCornerFooter(config);\n let $footer = _util_tableElements__WEBPACK_IMPORTED_MODULE_3__[\"default\"].createFooter(config);\n let $floatBoxContainer = _util_tableElements__WEBPACK_IMPORTED_MODULE_3__[\"default\"].createFloatBox(config, initialTab);\n let $selectContainer = _util_tableElements__WEBPACK_IMPORTED_MODULE_3__[\"default\"].createSelectBoard(config);\n let $plotVerticalContainer = _util_tableElements__WEBPACK_IMPORTED_MODULE_3__[\"default\"].createPlotVerticalContainer(config);\n let $plotHorizontalContainer = _util_tableElements__WEBPACK_IMPORTED_MODULE_3__[\"default\"].createPlotHorizontalContainer(config);\n let $detailDay = _util_tableElements__WEBPACK_IMPORTED_MODULE_3__[\"default\"].createDetailDay(config, config.data[0].children[0]);\n let {\n elem: $contextMenu,\n isVisible\n } = _util_tableElements__WEBPACK_IMPORTED_MODULE_3__[\"default\"].createContextMenu({\n config\n });\n this.isVisibleContextMenu = isVisible;\n let $navRight, inputs;\n ({\n element: $navRight,\n inputs\n } = _util_tableElements__WEBPACK_IMPORTED_MODULE_3__[\"default\"].createNavRight(config));\n let start = new Date(config.timeline.start);\n let end = new Date(config.timeline.end); //se agrega 1 dia (en milisegundos), ya que la fecha de termino es inclusiva\n\n end.setTime(end.getTime() + _util_dateUtils__WEBPACK_IMPORTED_MODULE_2__[\"default\"].dayInMilliseconds);\n let diff_time = end.getTime() - start.getTime();\n let days = diff_time / _util_dateUtils__WEBPACK_IMPORTED_MODULE_2__[\"default\"].dayInMilliseconds;\n let width = days * config.timeline.day.width;\n let $background = _util_tableElements__WEBPACK_IMPORTED_MODULE_3__[\"default\"].createBackground(config);\n let $container = _util_domUtils__WEBPACK_IMPORTED_MODULE_0__[\"default\"].createElement(\"div\", {\n className: \"container-tl\"\n });\n let $dayMouseOver = _util_domUtils__WEBPACK_IMPORTED_MODULE_0__[\"default\"].createElement(\"div\", {\n className: \"day-mouse-over\"\n });\n let $table = _util_domUtils__WEBPACK_IMPORTED_MODULE_0__[\"default\"].createElement(\"div\", {\n className: \"table\"\n }, {\n style: {\n width: width\n }\n });\n $table.appendChild($background);\n $table.appendChild($dayMouseOver);\n $table.appendChild($detailDay);\n $table.appendChild($selectContainer);\n $table.appendChild($floatBoxContainer);\n\n if ($headerExtended) {\n $header.appendChild($headerExtended);\n }\n\n $container.appendChild($header);\n $container.appendChild($plotVerticalContainer);\n $container.appendChild($plotHorizontalContainer);\n $container.appendChild($todayLine);\n $container.appendChild($navLeft);\n $container.appendChild($table);\n if ($cornerFooter) $container.appendChild($cornerFooter);\n if ($footer) $container.appendChild($footer);\n $capibara.appendChild($headerTop);\n $capibara.appendChild($corner);\n $capibara.appendChild($cornerRight);\n $capibara.appendChild($container);\n $capibara.appendChild($navRight);\n if ($contextMenu) $capibara.appendChild($contextMenu);\n this.$inputsNavRight = inputs;\n this.$capibara = $capibara;\n this.$elements = {\n $detailDay,\n $contextMenu,\n $floatBoxContainer,\n $selectContainer,\n $table,\n $background,\n $plotVerticalContainer,\n $plotHorizontalContainer,\n $dayMouseOver,\n $container,\n $navRight,\n $navLeft,\n $header,\n $todayLine,\n $corner\n };\n this.containerElement.innerHTML = \"\";\n this.containerElement.appendChild($capibara);\n\n if (config.timeline.tabs) {\n this.selectTab(initialTab, false);\n }\n\n return $capibara;\n }\n /**\n * Cambia el modo oscuro, segun el estado actual\n */\n\n\n toggleDark() {\n this.setDark(!Boolean(this.config.timeline.dark));\n }\n /**\n * Cambia el modo oscuro, segun parametroo\n *\n * @param {Boolean} [isDark = false] - indica si se activa el modo oscuro o no\n */\n\n\n setDark(isDark = false) {\n let darkClassName = \"dark-theme\";\n this.config.timeline.dark = isDark;\n\n if (isDark) {\n this.$capibara.classList.add(darkClassName);\n } else {\n this.$capibara.classList.remove(darkClassName);\n }\n }\n /**\n * Cambia el tema de color secundario, segun parametro\n * -Quita todos los posibles colores de la planilla, obteniendolos de Tabs\n * -Agrega el color enviado por parametro como clase del domElement $capibara\n *\n * @param {String} color - color, como nombre de clase, para agregar \n */\n\n\n changeColorTheme(color) {\n this.config.timeline.tabs.forEach(tab => {\n this.$capibara.classList.remove(tab.color);\n });\n this.$capibara.classList.add(color);\n }\n /**\n * Selecciona tab en planilla\n * si redraw == true , redibuja navRight y floatBox\n * ya que son inputs y esteticas personalizadas por Tab\n *\n * @param {Object} tab - tab, obtenida desde configuracion\n * @param {Boolean} [redraw=true] - opcion de redibujado\n */\n\n\n selectTab(tab, redraw = true) {\n let $tab = this.$capibara.querySelector('.tab[input-key=\"' + tab.id + '\"]');\n\n if ($tab) {\n this.tabSelected = tab;\n this.$capibara.querySelector(\".tabs-select\").value = tab.id;\n this.$capibara.querySelectorAll(\".tab\").forEach(t => {\n t.classList.remove(\"active\");\n });\n $tab.classList.add(\"active\");\n this.cleanMultiInput();\n\n if (redraw) {\n this.redraw({\n cornerLeft: true,\n navLeft: true,\n navRight: true,\n floatBox: true\n });\n }\n\n this.changeColorTheme(tab.color);\n this.$capibara.dispatchEvent(new CustomEvent(\"selectTab\", {\n bubbles: true,\n cancelable: false,\n detail: {\n tabSelected: this.tabSelected\n }\n }));\n } else {\n console.error(\"tab no encontrada\");\n }\n }\n /**\n * muestra alternadamente los sidebar initial y extended\n */\n\n\n toggleSidebar() {\n this.setShowNavInitial(!this.isShowNavInitial);\n this.setShowNavExtended(!this.isShowNavExtended);\n }\n /**\n * Oculta nav initial , extended y button\n */\n\n\n hideSidebars() {\n this.setShowNavInitial(false);\n this.setShowNavExtended(false);\n this.setShowNavButtons(false);\n }\n /**\n * Muestra/Oculta Sidebar inicial\n */\n\n\n setShowNavInitial(isShowNavInitial) {\n this.isShowNavInitial = isShowNavInitial;\n _util_styleUtils__WEBPACK_IMPORTED_MODULE_4__[\"default\"].setNavLeftInitialStyle(this.config, this.isShowNavInitial, this.tabSelected);\n }\n /**\n * Muestra/Oculta Sidebar extendido\n */\n\n\n setShowNavExtended(isShowNavExtended) {\n this.isShowNavExtended = isShowNavExtended;\n _util_styleUtils__WEBPACK_IMPORTED_MODULE_4__[\"default\"].setNavLeftExtendedStyle(this.config, this.isShowNavExtended, this.tabSelected);\n }\n /**\n * Muestra/Oculta Sidebar buttons\n */\n\n\n setShowNavButtons(isShowNavButtons) {\n this.isShowNavButtons = isShowNavButtons;\n _util_styleUtils__WEBPACK_IMPORTED_MODULE_4__[\"default\"].setNavLeftButtonsStyle(this.config, this.isShowNavButtons, this.tabSelected);\n }\n /**\n * Muestra/oculta Sidebar Derecho\n */\n\n\n toggleSidebarRight() {\n let isHidden = !this.$capibara.classList.contains(\"extended-right\");\n this.setVisibleSidebarRight(!isHidden);\n }\n /**\n * Modifica la opcion de mostrar y ocultar sidebar derecho\n *\n * @param {Boolean} [show = true] - indica si debe mostrarse u ocultarse\n */\n\n\n setVisibleSidebarRight(show = true) {\n let fn = show ? \"add\" : \"remove\";\n this.$capibara.classList[fn](\"extended-right\");\n }\n /**\n * Muestra/oculta Header extendido (inputs)\n */\n\n\n toggleHeader() {\n this.$capibara.classList.toggle(\"header-extended\");\n }\n /**\n * Muestra/oculta barra de carga de planilla \n * Si se llama sin parametros, por defecto muestra el loading derecho\n * que corresponde al sidebar-right\n *\n * @param {String} [position = \"right\"] - escoge loading, puede ser \"left\" | \"right\"\n * @param {Boolean} [show = true] - indica si mostrar u ocultar loading\n */\n\n\n loading(position = \"right\", show = true) {\n let fn = show ? \"remove\" : \"add\";\n let element = this.$capibara.querySelector(\".progress-bar-\" + position);\n element.classList[fn](\"hide-progress\");\n }\n /**\n * Busca un boton segun selector, y le agrega la clase \"loading\"\n * y deshabilita el boton\n *\n * @param { String } [ selector = '[btn-calendar]' ] - selector de boton\n * @param { Boolean } [isLoading = true] - define si esta cargando o no\n */\n\n\n loadingBtn(selector = \"[btn-calendar]\", isLoading = true) {\n let element = this.$capibara.querySelector(selector);\n let fn = isLoading ? \"add\" : \"remove\";\n element.classList[fn](\"loading\");\n\n if (isLoading) {\n element.setAttribute(\"disabled\", \"\");\n } else {\n element.removeAttribute(\"disabled\");\n }\n }\n /**\n * Crea Evento de guardado de los inputs del Sidebar Right\n * obtiene todos los valores de los inputs registrados en this.$inputs y \n * los retorna creando el evento \"save\"\n *\n */\n\n\n saveInputsNavRight() {\n let inputValues = [];\n this.$inputsNavRight.forEach($input => {\n let key = $input.getAttribute(\"input-key\");\n let inputConfig = this.tabSelected.inputs.find(t => t.key == key);\n inputValues.push({\n key: key,\n inputConfig: inputConfig,\n el: $input,\n value: this.getInputValue($input, inputConfig)\n });\n });\n this.$capibara.dispatchEvent(new CustomEvent(\"save\", {\n bubbles: true,\n cancelable: false,\n detail: {\n inputValues: inputValues,\n selected: this.selected,\n tabSelected: this.tabSelected\n }\n }));\n }\n /**\n * Cancela formulario de sidebar right\n */\n\n\n cancelMultiInput() {\n this.cleanMultiInput();\n }\n /**\n * Limpia el formulario en el sidebar right\n * oculta el sidebar right\n */\n\n\n cleanMultiInput() {\n this.$capibara.classList.remove(\"extended-right\");\n this.selected = [];\n this.redrawSelection();\n }\n /**\n * Obtiene el valor de un input\n *\n * @param {Object} elem - elemento del dom que representa al input, no necesariamente input\n * @param {Object} config - configuracion de input\n * @return {*} valor del Input\n */\n\n\n getInputValue(elem, inputConfig) {\n let value = null;\n let inputElement = null;\n let inputsElement = null;\n\n switch (inputConfig.type) {\n case 'time':\n let hhElement = elem.querySelector(\".hour\");\n let mmElement = elem.querySelector(\".minutes\");\n let hhValue = hhElement.value;\n let mmValue = mmElement.value;\n\n if (hhValue) {\n hhValue = parseFloat(hhValue);\n }\n\n if (mmValue) {\n mmValue = parseFloat(mmValue);\n }\n\n value = {\n hh: hhValue,\n mm: mmValue\n };\n break;\n\n case 'message':\n case 'textarea':\n inputElement = elem.querySelector(\"textarea\");\n value = inputElement.value || '';\n break;\n\n case \"inputList\":\n let valuesInputs = [];\n inputsElement = elem.querySelectorAll(\"input[type='number']\");\n inputsElement.forEach(inputElement => {\n let valueInput = inputElement.value;\n\n if (valueInput) {\n valueInput = parseFloat(valueInput);\n }\n\n let label = inputElement.getAttribute(\"input-label\");\n let id = inputElement.getAttribute(\"input-id\");\n valuesInputs.push({\n label: label,\n value: valueInput,\n id: id\n });\n });\n value = valuesInputs;\n break;\n\n case 'number':\n inputElement = elem.querySelector(\"input[type='number']\");\n value = inputElement.value;\n\n if (value) {\n value = parseFloat(value);\n }\n\n break;\n\n case 'checkbox':\n inputElement = elem.querySelector(\"input[type='checkbox']\");\n value = inputElement.checked;\n break;\n\n case 'input-box':\n inputsElement = elem.querySelectorAll(\".mini-input-section input\");\n value = [];\n inputsElement.forEach(i => {\n let v = i.value;\n\n if (v) {\n v = parseFloat(v);\n }\n\n value.push({\n id: i.getAttribute(\"input-id\"),\n key: i.getAttribute(\"input-key\"),\n value: v\n });\n });\n break;\n\n case 'title':\n //no es realmente un input, es solo un texto\n break;\n\n case 'text':\n default:\n inputElement = elem.querySelector(\"input\");\n value = inputElement.value;\n }\n\n return value;\n }\n /**\n * Funcion llamada al pasar sobre un item del sidebar izquierdo, \n * para mostrar un detalle del item\n * \n * El detalle del item se ancla de manera superior o inferior dependiendo de \n * la posicion el mouse en pantalla, para no salir del campo visual \n *\n *\n * @param {Object} evt - Evento retornado por un mouseover\n */\n\n\n overNavItem(evt) {\n let pos = evt.detail.pos;\n let item = evt.detail.item; //let dataDay = evt.detail.data;\n\n let $detail = this.$elements.$navLeft.querySelector(\".detail-nav-item\");\n\n if ($detail.classList.contains(\"hide\")) {\n $detail.classList.remove(\"hide\");\n }\n\n ;\n $detail.innerHTML = _util_tableElements__WEBPACK_IMPORTED_MODULE_3__[\"default\"].getDetailNavItemContent(item);\n\n if (pos.yPercent > 50) {\n //mayor a 50%\n if (!$detail.classList.contains(\"to-bottom\")) {\n $detail.classList.add(\"to-bottom\");\n }\n } else {\n if ($detail.classList.contains(\"to-bottom\")) {\n $detail.classList.remove(\"to-bottom\");\n }\n }\n\n $detail.style.top = pos.top + \"px\";\n }\n /**\n * Oculta detalle de item en sidebar izquierdo \n *\n * @param {Object} evt - Evento retornado por un mouseover\n */\n\n\n leaveNavItem() {\n this.$elements.$navLeft.querySelector(\".detail-nav-item\").classList.add(\"hide\");\n }\n /**\n * Captura evento mousemove de floatBoxContainer\n * para refrescar la posicion y detener posteriores eventos\n *\n * @param {Object} evt - Evento de mousemove\n */\n\n\n mouseMoveOnFlexBoxContainer(evt) {\n let position = _util_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].eventToPosition(this.config, evt, this.$elements.$table);\n this.refreshDetailDayPosition(position);\n evt.preventDefault();\n }\n /**\n * Captura evento mouseleave de floatBoxContainer\n * para ocultar detailDay\n *\n * @param {Object} evt - Evento de mouseleave\n */\n\n\n mouseLeaveOnFloatBoxContainer(evt) {\n this.hideDetailDay();\n evt.preventDefault();\n }\n /**\n * Captura el evento mousemove en $table, para indicar la posicion de $dayMouseOver\n *\n * @param {Object} evt - Evento de mouseleave\n */\n\n\n mouseMoveOnTable(evt) {\n if (this.isVisibleContextMenu) return;\n let pos = _util_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].eventToPosition(this.config, evt, this.$elements.$table);\n\n if (this.lastMousePosition == null || this.lastMousePosition.left != pos.left || this.lastMousePosition.top != pos.top) {\n this.$elements.$dayMouseOver.style.transform = \"translate(\" + pos.left + \"px ,\" + pos.top + \"px)\";\n evt.preventDefault();\n this.lastMousePosition = pos;\n }\n }\n\n rightClickOnCapibara(evt) {\n if (this.config.timeline.contextMenu) {\n this.hideDetailDay();\n evt.preventDefault();\n }\n }\n\n rightClickOnTable(evt) {\n if (this.config.timeline.contextMenu) {\n this.hideDetailDay();\n this.showContextMenu(evt);\n evt.preventDefault();\n }\n }\n\n showContextMenu(evt) {\n let date = _util_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getDayByEvent(this.config, evt, this.$elements.$table);\n let item = _util_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getItemByEvent(this.config, evt, this.$elements.$table);\n\n if (this.isVisibleContextMenu) {\n this.hideContextMenu();\n return;\n }\n\n let position = _util_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].eventToPosition(this.config, evt, this.$elements.$table);\n let {\n elem: $elem,\n isVisible\n } = _util_tableElements__WEBPACK_IMPORTED_MODULE_3__[\"default\"].createContextMenu({\n config: this.config,\n evt,\n position,\n date,\n item,\n selected: this.selected\n });\n\n if ($elem) {\n this.isVisibleContextMenu = isVisible;\n this.$elements.$contextMenu.replaceWith($elem);\n this.$elements.$contextMenu = $elem;\n }\n\n evt.preventDefault();\n }\n /**\n * Captura el evento click en $table, para seleccionar dias\n * los dias seleccionados se registran en this.selected[]\n *\n * @param {Object} evt - Evento de mouseleave\n */\n\n\n clickOnTable(evt) {\n let date = _util_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getDayByEvent(this.config, evt, this.$elements.$table);\n let pos = _util_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].eventToPosition(this.config, evt, this.$elements.$table);\n let item = _util_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getItemByEvent(this.config, evt, this.$elements.$table);\n if (item == null) return; // cuano se selecciona un espacio no seleccionable\n //si es mobile, no selecciona, solo muestra detalles\n\n let dataByDate = _.find(item.data, {\n date\n });\n\n if (this.isMobile && dataByDate) {\n if ((!dataByDate.message || dataByDate.message.value == null) && Object.entries(dataByDate.values).length === 0) return;\n this.focusOnFloatBox({\n pos,\n evt\n });\n return;\n }\n\n if (!this.isSelectable(item)) {\n this.$capibara.dispatchEvent(new CustomEvent(\"selectNoSelectable\", {\n bubbles: true,\n cancelable: false,\n detail: {\n selected: this.selected,\n tabSelected: this.tabSelected\n }\n }));\n return; // cuando se selecciona un espacio no seleccionable\n }\n\n let eventName = \"deselect\";\n\n if (this.toggleSelect(date, item, pos)) {\n eventName = \"select\";\n }\n\n this.$capibara.dispatchEvent(new CustomEvent(eventName, {\n bubbles: true,\n cancelable: false,\n detail: {\n config: this.config,\n lastSelection: {\n date,\n item,\n pos\n },\n selected: this.selected,\n tabSelected: this.tabSelected\n }\n }));\n }\n\n toggleSelect(date, item, pos) {\n if (this.isSelected(date, item)) {\n this.deselect(date, item);\n return false;\n } else {\n this.select(date, item, pos);\n return true;\n }\n }\n\n isSelected(date, item) {\n let index = _util_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].indexSelectedDay(this.selected, {\n date,\n item\n });\n return index > -1;\n }\n\n isSelectable(item) {\n if (!this.config.timeline.selectable) {\n return false;\n }\n\n let itemIsSelectable = true;\n\n if (this.tabSelected && this.tabSelected.selectableIfHas) {\n if (!item.values[this.tabSelected.selectableIfHas]) {\n itemIsSelectable = false;\n }\n }\n\n return itemIsSelectable;\n }\n\n redrawSelection() {\n this.checkClassSidebarExtendedRight();\n _util_tableElements__WEBPACK_IMPORTED_MODULE_3__[\"default\"].redrawSelectBoard(this.$elements.$selectContainer, this.selected);\n }\n\n deselect(date, item, redraw = true) {\n if (this.isSelected(date, item)) {\n let index = _util_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].indexSelectedDay(this.selected, {\n date,\n item\n });\n this.selected.splice(index, 1);\n }\n\n this.selected.forEach((s, index) => {\n s.index = index + 1;\n });\n\n if (redraw) {\n this.redrawSelection();\n }\n }\n\n select(date, item, pos, redraw = true) {\n let index = _util_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].indexSelectedDay(this.selected, {\n date,\n item\n });\n\n if (index < 0) {\n this.selected.push({\n index: 0,\n date,\n item,\n pos\n });\n let dataDay = null;\n\n if (item.data) {\n dataDay = item.data.find(d => {\n return d.date == date;\n });\n } // si es el primer item seleccionado, se autorrellena el formulario de navRight\n\n\n if (this.selected.length == 1) {\n let {\n inputs,\n element\n } = _util_tableElements__WEBPACK_IMPORTED_MODULE_3__[\"default\"].redrawNavRight(this.config, this.$elements.$navRight, this.tabSelected, dataDay, this.selected[0]);\n this.$elements.$navRight = element;\n this.$inputsNavRight = inputs;\n }\n }\n\n let focused = false;\n this.$inputsNavRight.forEach(inputNavRight => {\n if (!focused) {\n let validInputs = inputNavRight.querySelectorAll(\"input\");\n\n if (validInputs && validInputs.length > 0) {\n let firstValidInput = _.first(validInputs);\n\n window.setTimeout(function () {\n firstValidInput.focus();\n }, 0);\n focused = true;\n }\n }\n });\n this.selected.forEach((s, index) => {\n s.index = index + 1;\n });\n\n if (redraw) {\n this.redrawSelection();\n }\n }\n\n selectByItemDate(date, item, redraw = true) {\n if (!this.isSelected(date, item)) {\n let pos = _util_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getPositionByItemDate(this.config, item, date);\n this.select(date, item, pos, redraw);\n }\n }\n\n deselectByItemDate(date, item, redraw = true) {\n if (this.isSelected(date, item)) {\n this.deselect(date, item, redraw);\n }\n }\n\n checkClassSidebarExtendedRight() {\n if (this.selected.length > 0) {\n this.$capibara.classList.add(\"extended-right\");\n } else {\n this.$capibara.classList.remove(\"extended-right\");\n }\n }\n\n /**\n * oculta detailDay en el dom, usando la clase dd-hide\n */\n hideDetailDay() {\n this.$elements.$detailDay.classList.add(\"dd-hide\");\n }\n\n hideContextMenu() {\n this.$elements.$contextMenu.classList.add(\"cm-hide\");\n this.isVisibleContextMenu = false;\n }\n\n /**\n * Muestra Detail dialog y Refresca su posicion \n * usando el evento del mouse\n *\n * @param {Object} evt - evento de mousemove, para posiciones en pantalla\n */\n refreshDetailDayPosition(position) {\n let dayWidth = parseFloat(_util_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getCSSVariable(this.config, \"--day-width\"));\n let itemHeight = parseFloat(_util_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getCSSVariable(this.config, \"--item-height\"));\n this.$elements.$detailDay.style.top = position.top + \"px\";\n this.$elements.$detailDay.style.left = position.left + dayWidth + \"px\";\n let yPositionClass = \"has-top-arrow\";\n let xPositionClass = \"\"; //condicion para primeras 2 filas\n\n if (position.topClient <= itemHeight * 2) {\n yPositionClass = \"has-ceil-arrow\";\n } else if (position.yPercent > 20 && position.yPercent <= 50) {\n //entre 20 y 50 %\n yPositionClass = \"has-middle-arrow\";\n } else if (position.yPercent > 50) {\n yPositionClass = \"has-bottom-arrow\";\n }\n\n if (position.xPercent > 30) {\n xPositionClass = \"has-right-arrow\";\n } //quita dd-hide, sobreescribiendo todas las clases\n\n\n this.$elements.$detailDay.className = \"detail-day \" + yPositionClass + \" \" + xPositionClass;\n }\n /**\n * Captura evento click en boton para abrir arbol, en sidebar izquierdo\n *\n * @param {Object} evt - objeto evento click\n */\n\n\n clickNavLeftTreeIcon() {\n _util_tableElements__WEBPACK_IMPORTED_MODULE_3__[\"default\"].redrawBackground(this.config, this.$elements.$background);\n _util_tableElements__WEBPACK_IMPORTED_MODULE_3__[\"default\"].repositionFloatBox(this.config, this.$elements.$floatBoxContainer);\n _util_tableElements__WEBPACK_IMPORTED_MODULE_3__[\"default\"].redrawPlotHorizontalContainer(this.config, this.$elements.$plotHorizontalContainer);\n }\n /**\n * Captura evento mouseover sobre elemento floatBox\n * usada para mostrar detalle de dia/item del floatbox\n */\n\n\n mouseOverFloatBox(evt, force) {\n let item = evt.detail.item;\n let dataDay = evt.detail.data; //verifica que sean dias distintos, comparandolo con el anterior,\n // para no crear nuevamente el mismo detail-day, con los mismos datos\n\n if (dataDay !== this.lastDataDay || force) {\n let newDDContentString = _util_tableElements__WEBPACK_IMPORTED_MODULE_3__[\"default\"].redrawDetailDay(this.config, item, dataDay);\n\n if (newDDContentString) {\n this.$elements.$detailDay.innerHTML = newDDContentString;\n }\n\n this.lastDataDay = dataDay;\n }\n }\n\n clickDateHeader(evt) {\n let date = evt.detail.date;\n this.selected = [];\n this.config.data.forEach(parent => {\n parent.children.forEach(item => {\n this.selectByItemDate(date, item, false);\n });\n });\n this.redrawSelection();\n }\n /**\n * Captura evento window resize\n * para verificar si es mobile o no\n */\n\n\n onWindowResize() {\n let oldValue = this.isMobile;\n let newValue = _util_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].checkIsMobile();\n\n if (oldValue != newValue) {\n this.isMobile = newValue;\n this.toggleSidebarMobile();\n this.setAllCSSVariables();\n this.redraw({\n floatBox: true,\n navLeft: true\n });\n }\n }\n /**\n * Cambia sidebar para mobile, segun variable this.isMobile\n */\n\n\n toggleSidebarMobile() {\n if (this.isMobile) {\n this.setShowNavInitial(false);\n this.setShowNavExtended(false);\n this.setShowNavButtons(false);\n this.setEditable(false);\n this.setSelectable(false);\n } else {\n this.setShowNavInitial(true);\n this.setShowNavExtended(false);\n this.setShowNavButtons(true);\n this.setEditable(true);\n this.setSelectable(true);\n }\n }\n\n setEditable(newEditable) {\n if (this.config.timeline.editable != newEditable) {\n this.config.timeline.editable = newEditable;\n this.redraw({\n navLeft: true,\n header: true\n });\n }\n }\n\n setSelectable(newSelectable) {\n if (this.config.timeline.selectable != newSelectable) {\n this.config.timeline.selectable = newSelectable;\n this.cleanMultiInput();\n }\n }\n /**\n * Agrega eventos a los elementos del dom de la planilla\n * usando el objecto $capibara\n */\n\n\n addEvents() {\n this.$capibara.addEventListener(\"click\", this.hideContextMenu.bind(this));\n this.$capibara.addEventListener(\"contextmenu\", this.rightClickOnCapibara.bind(this));\n this.$capibara.addEventListener(\"toggleDark\", this.toggleDark.bind(this));\n this.$capibara.addEventListener(\"toggleHeader\", this.toggleHeader.bind(this));\n this.$capibara.addEventListener(\"toggleSidebar\", this.toggleSidebar.bind(this));\n this.$capibara.addEventListener(\"toggleSidebarRight\", this.toggleSidebarRight.bind(this));\n this.$capibara.addEventListener(\"saveMultiInput\", this.saveInputsNavRight.bind(this));\n this.$capibara.addEventListener(\"cancelMultiInput\", this.cancelMultiInput.bind(this));\n this.$capibara.addEventListener(\"overNavItem\", this.overNavItem.bind(this));\n this.$capibara.addEventListener(\"leaveNavItem\", this.leaveNavItem.bind(this));\n this.$capibara.addEventListener(\"clickNavLeftTreeIcon\", this.clickNavLeftTreeIcon.bind(this));\n this.$capibara.addEventListener(\"mouseOverFloatBox\", this.mouseOverFloatBox.bind(this));\n this.$capibara.addEventListener(\"selectTabHeader\", e => {\n this.selectTab(e.detail.tab);\n });\n this.$elements.$floatBoxContainer.addEventListener(\"mousemove\", this.mouseMoveOnFlexBoxContainer.bind(this));\n this.$elements.$floatBoxContainer.addEventListener(\"mouseleave\", this.mouseLeaveOnFloatBoxContainer.bind(this));\n this.$elements.$table.addEventListener(\"mousemove\", this.mouseMoveOnTable.bind(this));\n this.$elements.$table.addEventListener(\"click\", this.clickOnTable.bind(this));\n this.$elements.$table.addEventListener(\"contextmenu\", this.rightClickOnTable.bind(this));\n this.$elements.$container.addEventListener(\"scroll\", this.hideContextMenu.bind(this));\n this.$elements.$container.addEventListener(\"clickDate\", this.clickDateHeader.bind(this));\n window.addEventListener('resize', this.onWindowResize.bind(this));\n }\n /**\n * Funcion para redibujar partes de la planilla, indicado segun parametro\n *\n * options : {\n * floatBox: Boolean,\n * plots: Boolean,\n * header: Boolean,\n * navLeft: Boolean,\n * navRight: Boolean,\n * }\n *\n *\n * @param {Object} options - objecto de configuracion\n */\n\n\n redraw(options) {\n if (options.floatBox) {\n _util_tableElements__WEBPACK_IMPORTED_MODULE_3__[\"default\"].redrawFloatBox(this.config, this.tabSelected, this.$elements.$floatBoxContainer);\n _util_tableElements__WEBPACK_IMPORTED_MODULE_3__[\"default\"].redrawBackground(this.config, this.$elements.$background);\n _util_tableElements__WEBPACK_IMPORTED_MODULE_3__[\"default\"].redrawPlotVerticalContainer(this.config, this.$elements.$plotVerticalContainer);\n _util_tableElements__WEBPACK_IMPORTED_MODULE_3__[\"default\"].redrawPlotHorizontalContainer(this.config, this.$elements.$plotHorizontalContainer);\n _util_tableElements__WEBPACK_IMPORTED_MODULE_3__[\"default\"].redrawTodayLine(this.config, this.$elements.$todayLine);\n }\n\n if (options.plots) {\n _util_tableElements__WEBPACK_IMPORTED_MODULE_3__[\"default\"].redrawPlotVerticalContainer(this.config, this.$elements.$plotVerticalContainer);\n _util_tableElements__WEBPACK_IMPORTED_MODULE_3__[\"default\"].redrawPlotHorizontalContainer(this.config, this.$elements.$plotHorizontalContainer);\n }\n\n if (options.header) {\n _util_tableElements__WEBPACK_IMPORTED_MODULE_3__[\"default\"].redrawHeader(this.config, this.$elements.$header);\n\n if (this.config.timeline.header.extend.enabled !== false) {\n let $headerExtended = _util_tableElements__WEBPACK_IMPORTED_MODULE_3__[\"default\"].createHeaderExtended(this.config);\n\n if ($headerExtended) {\n this.$elements.$header.append($headerExtended);\n }\n }\n }\n\n if (options.detailDay) {\n this.hideDetailDay();\n this.lastDataDay = null;\n }\n\n if (options.navLeft) {\n _util_tableElements__WEBPACK_IMPORTED_MODULE_3__[\"default\"].redrawNavLeft(this.$elements.$navLeft, this.config, this.tabSelected);\n _util_styleUtils__WEBPACK_IMPORTED_MODULE_4__[\"default\"].setNavStyle(this.config);\n _util_styleUtils__WEBPACK_IMPORTED_MODULE_4__[\"default\"].setNavLeftInitialStyle(this.config, this.isShowNavInitial, this.tabSelected);\n _util_styleUtils__WEBPACK_IMPORTED_MODULE_4__[\"default\"].setNavLeftExtendedStyle(this.config, this.isShowNavExtended, this.tabSelected);\n }\n\n if (options.cornerLeft) {\n _util_tableElements__WEBPACK_IMPORTED_MODULE_3__[\"default\"].redrawCorner(this.$elements.$corner, this.config, this.tabSelected);\n }\n\n if (options.navRight) {\n let {\n inputs,\n element\n } = _util_tableElements__WEBPACK_IMPORTED_MODULE_3__[\"default\"].redrawNavRight(this.config, this.$elements.$navRight, this.tabSelected);\n this.$elements.$navRight = element;\n this.$inputsNavRight = inputs;\n }\n }\n /**\n * Mueve el Scroll de la planilla al inicio\n */\n\n\n scrollToStart() {\n this.$elements.$container.scrollLeft = 0;\n }\n /**\n * Mueve el Scroll de la planilla al inicio\n */\n\n\n scrollToEnd() {\n this.$elements.$container.scrollLeft = this.$elements.$container.scrollWidth;\n }\n /**\n * Mueve el Scroll de la planilla a la tercera parte\n * TODO mejorar logica de esta funcion\n */\n\n\n scrollToMiddle() {\n this.$elements.$container.scrollLeft = this.$elements.$container.scrollWidth / 3;\n }\n\n focusOnFloatBox({\n pos,\n evt\n }) {\n if (this.isMobile) {\n let containerWidth = this.$elements.$container.clientWidth;\n let dayWidth = parseFloat(_util_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getCSSVariable(this.config, \"--day-width\"));\n let navWidth = parseFloat(_util_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getCSSVariable(this.config, \"--nav-width\"));\n let left = pos.left - containerWidth + 1.5 * dayWidth + navWidth; //let containerHeight = this.$elements.$container.clientHeight;\n\n let itemHeight = parseFloat(_util_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getCSSVariable(this.config, \"--item-height\")); //let headerHeight = parseFloat(utils.getCSSVariable(this.config, \"--header-height\"));\n\n let top = pos.top - 0.5 * itemHeight;\n let position = _util_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].eventToPosition(this.config, evt, this.$elements.$table);\n this.refreshDetailDayPosition({ ...position,\n topClient: position.yInnerPercent >= 70 ? position.topClient : 0,\n // fuerza posicion de arrow en detailday\n xPercent: position.x < 4 ? 0 : 100 // fuerza arrow right\n\n });\n this.$elements.$container.scroll({\n top,\n left,\n behavior: 'smooth'\n });\n }\n }\n /**\n * Fija las variables de CSs segun Config\n */\n\n\n setAllCSSVariables() {\n let config = this.config; //styleUtils.cleanStyle(config);\n\n _util_styleUtils__WEBPACK_IMPORTED_MODULE_4__[\"default\"].setHeaderStyle(config);\n _util_styleUtils__WEBPACK_IMPORTED_MODULE_4__[\"default\"].setNavStyle(config);\n _util_styleUtils__WEBPACK_IMPORTED_MODULE_4__[\"default\"].setNavLeftInitialStyle(config, this.isShowNavInitial, this.tabSelected);\n _util_styleUtils__WEBPACK_IMPORTED_MODULE_4__[\"default\"].setNavLeftExtendedStyle(config, this.isShowNavExtended, this.tabSelected);\n _util_styleUtils__WEBPACK_IMPORTED_MODULE_4__[\"default\"].setNavLeftButtonsStyle(config, this.isShowNavButtons, this.tabSelected);\n _util_styleUtils__WEBPACK_IMPORTED_MODULE_4__[\"default\"].setTableStyle(config);\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbGliL2NhcGliYXJhLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQ2FwaWJhcmEvLi9zcmMvbGliL2NhcGliYXJhLmpzPzBmMGQiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGRvbSAgICAgICAgICAgZnJvbSAnLi4vdXRpbC9kb21VdGlscyc7XG5pbXBvcnQgdXRpbHMgICAgICAgICBmcm9tICcuLi91dGlsL3V0aWxzJztcbmltcG9ydCBkYXRlVXRpbHMgICAgIGZyb20gJy4uL3V0aWwvZGF0ZVV0aWxzJztcbmltcG9ydCB0YWJsZUVsZW1lbnRzIGZyb20gJy4uL3V0aWwvdGFibGVFbGVtZW50cyc7XG5pbXBvcnQgc3R5bGVVdGlscyAgICBmcm9tICcuLi91dGlsL3N0eWxlVXRpbHMnO1xuXG4vKipcbiAqIENhcGliYXJhLCBwbGFuaWxsYSBwYXJhIGRlc3BsaWVndWUgZGUgZGF0b3MgcG9yIGZlY2hhIGNvbW8gR0FOVFRcbiAqIG9yaWVudGFkbyBpbmljaWFsbWVudGUgYSBkYXRvcyBkaWFyaW9zIGRlIGl0ZW1zXG4gKlxuICogQGF1dGhvciBQYXRyaWNpby4gTS4gUm9qYXMuIDxwYXRyaWNpb0BpcnJpY3JvcHMuY29tPlxuICovXG5leHBvcnQgY2xhc3MgQ2FwaWJhcmF7XG5cblxuICAvKipcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEluc3RhbmNpYSB2YXJpYWJsZXMgZGUgcGxhbmlsbGEgQ2FwaWJhcmEsIGNvbiBjb25maWd1cmFjaW9uXG4gICAqIENyZWEgZWwgZWxlbWVudG8gY29udGVuZWRvciB7Y29udGFpbmVyRWxlbWVudH0gc2VndW4gc2VsZWN0b3JcbiAgICpcbiAgICogQHBhcmFtIHtPYmplY3R9IGF0dHJpYnV0ZXMgLSBhdHJpYnV0b3MgcXVlIHNlIHVzYXJhbiBhbCBpbmljaWFyIGxhIHBsYW5pbGxhXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBhdHRyaWJ1dGVzLmNvbmZpZyAtIENvbmZpZ3VyYWNpb24gZGUgcGxhbmlsbGFcbiAgICovXG4gIGNvbnN0cnVjdG9yKHtjb25maWd9KXtcbiAgICBpZihjb25maWcgPT0gbnVsbCkgY29uc29sZS5lcnJvcihcImNvbmZpZyBubyBlY29udHJhZG9cIik7XG5cbiAgICB0aGlzLmNvbnRhaW5lckVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGNvbmZpZy5zZWxlY3Rvcik7XG5cbiAgICBpZih0aGlzLmNvbnRhaW5lckVsZW1lbnQgPT0gbnVsbCkgY29uc29sZS5lcnJvcihcIkVsZW1lbnRvIGRvbSBzZWd1biBjb25maWcuc2VsZWN0b3IsIG5vIGVuY29udHJhZG9cIik7XG5cbiAgICB0aGlzLmluaXRpYWxpemVkICAgICAgICAgID0gZmFsc2U7XG4gICAgdGhpcy4kY2FwaWJhcmEgICAgICAgICAgICA9IG51bGw7XG4gICAgdGhpcy4kZWxlbWVudHMgICAgICAgICAgICA9IHt9O1xuICAgIHRoaXMudGFiU2VsZWN0ZWQgICAgICAgICAgPSBudWxsO1xuICAgIHRoaXMuJGlucHV0c05hdlJpZ2h0ICAgICAgPSBbXTtcbiAgICB0aGlzLnNlbGVjdGVkICAgICAgICAgICAgID0gW107XG4gICAgdGhpcy5jb25maWcgICAgICAgICAgICAgICA9IGNvbmZpZztcbiAgICB0aGlzLmxhc3REYXRhRGF5ICAgICAgICAgID0gbnVsbDtcbiAgICB0aGlzLmlzU2hvd05hdkV4dGVuZGVkICAgID0gZmFsc2U7XG4gICAgdGhpcy5pc1Nob3dOYXZJbml0aWFsICAgICA9IHRydWU7XG4gICAgdGhpcy5pc1Nob3dOYXZCdXR0b25zICAgICA9IHRydWU7XG4gICAgdGhpcy5pc01vYmlsZSAgICAgICAgICAgICA9IGZhbHNlO1xuICAgIHRoaXMubGFzdE1vdXNlUG9zaXRpb24gICAgPSBudWxsO1xuICAgIHRoaXMuaXNWaXNpYmxlQ29udGV4dE1lbnUgPSBmYWxzZTtcblxuICB9XG5cblxuXG5cblxuXG4gIC8qKlxuICAgKiBJbmljaWFsaXphIFBsYW5pbGxhOlxuICAgKiAgLSB2YWNpYSB2YXJpYWJsZXMgbmVjZXNhcmlhc1xuICAgKiAgLSBjcmVhIHBsYW5pbGxhIGxsYW1hbmRvIGEgZHJhd1RhYmxlXG4gICAqICAtIEFncmVnYSBldmVudG9zIGEgcGxhbmlsbGFcbiAgICogIC0gbXVldmUgc2Nyb2xsIGFsIG1lZGlvIGRlIGxhIHRhYmxhXG4gICAqL1xuICBpbml0KCl7XG5cbiAgICB0aGlzLnRhYlNlbGVjdGVkID0gbnVsbDtcbiAgICB0aGlzLiRjYXBpYmFyYSAgID0gbnVsbDtcbiAgICB0aGlzLiRlbGVtZW50cyAgID0ge307XG4gICAgdGhpcy4kaW5wdXRzTmF2UmlnaHQgPSBbXTtcbiAgICB0aGlzLnNlbGVjdGVkICAgID0gW107XG4gICAgdGhpcy5sYXN0RGF0YURheSA9IG51bGw7XG4gICAgdGhpcy5pc01vYmlsZSAgICA9IHV0aWxzLmNoZWNrSXNNb2JpbGUoKTtcbiAgICB0aGlzLmlzVmlzaWJsZUNvbnRleHRNZW51ID0gZmFsc2U7XG5cbiAgICB0aGlzLnNldEFsbENTU1ZhcmlhYmxlcygpO1xuICAgIHRoaXMuZHJhd1RhYmxlKCk7XG4gICAgdGhpcy5hZGRFdmVudHMoKTtcbiAgICB0aGlzLnNjcm9sbFRvTWlkZGxlKCk7XG4gICAgdGhpcy50b2dnbGVTaWRlYmFyTW9iaWxlKCk7XG4gICAgdGhpcy5pbml0aWFsaXplZCA9IHRydWU7XG4gIH1cblxuXG5cbiAgLyoqXG4gICAqIENhbWJpYSBjb25maWd1cmFjaW9uIGRlIHBsYW5pbGxhXG4gICAqXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBjb25maWcgLSBDb25maWd1cmFjaW9uIG51ZXZhIHBhcmEgcGxhbmlsbGFcbiAgICovXG4gIHNldENvbmZpZyhjb25maWcpe1xuICAgIHRoaXMuY29uZmlnID0gY29uZmlnO1xuICB9XG5cblxuICAvKipcbiAgICogQ3JlYSBsYSBwbGFuaWxsYVxuICAgKiBhZ3JlZ2FuZG8gdG9kb3MgbG9zIGVsZW1lbnRvcyBlbiBvcmRlbiBkZW50cm9cbiAgICpcbiAgICogQHJldHVybiB7IERvbUVsZW1lbnQgfSAkY2FwaWJhcmEgLSBlbGVtZW50byBkZWwgRG9tIHF1ZSBjb250aWVuZSB0b2RhIGxhIHBsYW5pbGxhXG4gICAqL1xuICBkcmF3VGFibGUoKXtcbiAgICBsZXQgY29uZmlnICAgICA9IHRoaXMuY29uZmlnXG4gICAgbGV0IGluaXRpYWxUYWIgPSBjb25maWcudGltZWxpbmUudGFic1swXTtcblxuICAgIGxldCAkY2FwaWJhcmEgICAgICAgICAgPSB0YWJsZUVsZW1lbnRzLmNyZWF0ZUFnVGFibGUoY29uZmlnKTtcbiAgICBsZXQgJGNvcm5lciAgICAgICAgICAgID0gdGFibGVFbGVtZW50cy5jcmVhdGVDb3JuZXIoY29uZmlnLCBpbml0aWFsVGFiKTtcbiAgICBsZXQgJGNvcm5lclJpZ2h0ICAgICAgID0gdGFibGVFbGVtZW50cy5jcmVhdGVDb3JuZXJSaWdodChjb25maWcpO1xuICAgIGxldCAkaGVhZGVyVG9wICAgICAgICAgPSB0YWJsZUVsZW1lbnRzLmNyZWF0ZUhlYWRlclRvcChjb25maWcpO1xuICAgIGxldCAkaGVhZGVyICAgICAgICAgICAgPSB0YWJsZUVsZW1lbnRzLmNyZWF0ZUhlYWRlcihjb25maWcpO1xuICAgIGxldCAkdG9kYXlMaW5lICAgICAgICAgPSB0YWJsZUVsZW1lbnRzLmNyZWF0ZVRvZGF5TGluZShjb25maWcpO1xuICAgIGxldCAkaGVhZGVyRXh0ZW5kZWQgICAgPSB0YWJsZUVsZW1lbnRzLmNyZWF0ZUhlYWRlckV4dGVuZGVkKGNvbmZpZyk7XG4gICAgbGV0ICRuYXZMZWZ0ICAgICAgICAgICA9IHRhYmxlRWxlbWVudHMuY3JlYXRlTmF2TGVmdChjb25maWcpXG4gICAgbGV0ICRjb3JuZXJGb290ZXIgICAgICA9IHRhYmxlRWxlbWVudHMuY3JlYXRlQ29ybmVyRm9vdGVyKGNvbmZpZyk7XG4gICAgbGV0ICRmb290ZXIgICAgICAgICAgICA9IHRhYmxlRWxlbWVudHMuY3JlYXRlRm9vdGVyKGNvbmZpZyk7XG4gICAgbGV0ICRmbG9hdEJveENvbnRhaW5lciA9IHRhYmxlRWxlbWVudHMuY3JlYXRlRmxvYXRCb3goY29uZmlnLCBpbml0aWFsVGFiKTtcbiAgICBsZXQgJHNlbGVjdENvbnRhaW5lciAgID0gdGFibGVFbGVtZW50cy5jcmVhdGVTZWxlY3RCb2FyZChjb25maWcpO1xuICAgIGxldCAkcGxvdFZlcnRpY2FsQ29udGFpbmVyICAgICA9IHRhYmxlRWxlbWVudHMuY3JlYXRlUGxvdFZlcnRpY2FsQ29udGFpbmVyKGNvbmZpZyk7XG4gICAgbGV0ICRwbG90SG9yaXpvbnRhbENvbnRhaW5lciAgID0gdGFibGVFbGVtZW50cy5jcmVhdGVQbG90SG9yaXpvbnRhbENvbnRhaW5lcihjb25maWcpO1xuICAgIGxldCAkZGV0YWlsRGF5ICAgICAgICAgPSB0YWJsZUVsZW1lbnRzLmNyZWF0ZURldGFpbERheShjb25maWcsY29uZmlnLmRhdGFbMF0uY2hpbGRyZW5bMF0pO1xuXG4gICAgbGV0IHsgZWxlbTokY29udGV4dE1lbnUsIGlzVmlzaWJsZSB9ICA9IHRhYmxlRWxlbWVudHMuY3JlYXRlQ29udGV4dE1lbnUoe2NvbmZpZ30pO1xuICAgIHRoaXMuaXNWaXNpYmxlQ29udGV4dE1lbnUgPSBpc1Zpc2libGU7XG5cbiAgICBsZXQgJG5hdlJpZ2h0LCBpbnB1dHM7XG4gICAgKHtlbGVtZW50OiRuYXZSaWdodCwgaW5wdXRzfSA9IHRhYmxlRWxlbWVudHMuY3JlYXRlTmF2UmlnaHQoY29uZmlnKSk7XG5cbiAgICBsZXQgc3RhcnQgPSBuZXcgRGF0ZShjb25maWcudGltZWxpbmUuc3RhcnQpO1xuICAgIGxldCBlbmQgICA9IG5ldyBEYXRlKGNvbmZpZy50aW1lbGluZS5lbmQpO1xuXG4gICAgLy9zZSBhZ3JlZ2EgMSBkaWEgKGVuIG1pbGlzZWd1bmRvcyksIHlhIHF1ZSBsYSBmZWNoYSBkZSB0ZXJtaW5vIGVzIGluY2x1c2l2YVxuICAgIGVuZC5zZXRUaW1lKGVuZC5nZXRUaW1lKCkgKyBkYXRlVXRpbHMuZGF5SW5NaWxsaXNlY29uZHMpO1xuXG4gICAgbGV0IGRpZmZfdGltZSA9IGVuZC5nZXRUaW1lKCkgLSBzdGFydC5nZXRUaW1lKCk7XG4gICAgbGV0IGRheXMgICAgICA9IGRpZmZfdGltZSAvIGRhdGVVdGlscy5kYXlJbk1pbGxpc2Vjb25kcztcbiAgICBsZXQgd2lkdGggICAgID0gZGF5cyAqIGNvbmZpZy50aW1lbGluZS5kYXkud2lkdGg7XG5cblxuICAgIGxldCAkYmFja2dyb3VuZCAgID0gdGFibGVFbGVtZW50cy5jcmVhdGVCYWNrZ3JvdW5kKGNvbmZpZyk7XG4gICAgbGV0ICRjb250YWluZXIgICAgPSBkb20uY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTpcImNvbnRhaW5lci10bFwifSk7XG4gICAgbGV0ICRkYXlNb3VzZU92ZXIgPSBkb20uY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogXCJkYXktbW91c2Utb3ZlclwifSk7XG5cbiAgICBsZXQgJHRhYmxlICAgICAgICA9IGRvbS5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBcInRhYmxlXCJ9LCB7c3R5bGU6e3dpZHRoOndpZHRofX0pO1xuXG4gICAgJHRhYmxlLmFwcGVuZENoaWxkKCRiYWNrZ3JvdW5kKTtcbiAgICAkdGFibGUuYXBwZW5kQ2hpbGQoJGRheU1vdXNlT3Zlcik7XG4gICAgJHRhYmxlLmFwcGVuZENoaWxkKCRkZXRhaWxEYXkpO1xuICAgICR0YWJsZS5hcHBlbmRDaGlsZCgkc2VsZWN0Q29udGFpbmVyKTtcbiAgICAkdGFibGUuYXBwZW5kQ2hpbGQoJGZsb2F0Qm94Q29udGFpbmVyICk7XG5cbiAgICBpZigkaGVhZGVyRXh0ZW5kZWQpe1xuICAgICAgJGhlYWRlci5hcHBlbmRDaGlsZCgkaGVhZGVyRXh0ZW5kZWQpO1xuICAgIH1cblxuICAgICRjb250YWluZXIuYXBwZW5kQ2hpbGQoJGhlYWRlcik7XG4gICAgJGNvbnRhaW5lci5hcHBlbmRDaGlsZCgkcGxvdFZlcnRpY2FsQ29udGFpbmVyKTtcbiAgICAkY29udGFpbmVyLmFwcGVuZENoaWxkKCRwbG90SG9yaXpvbnRhbENvbnRhaW5lcik7XG4gICAgJGNvbnRhaW5lci5hcHBlbmRDaGlsZCgkdG9kYXlMaW5lKTtcbiAgICAkY29udGFpbmVyLmFwcGVuZENoaWxkKCRuYXZMZWZ0KTtcbiAgICAkY29udGFpbmVyLmFwcGVuZENoaWxkKCR0YWJsZSk7XG5cbiAgICBpZigkY29ybmVyRm9vdGVyKSAkY29udGFpbmVyLmFwcGVuZENoaWxkKCRjb3JuZXJGb290ZXIpO1xuXG4gICAgaWYoJGZvb3RlcikgJGNvbnRhaW5lci5hcHBlbmRDaGlsZCgkZm9vdGVyKTtcblxuICAgICRjYXBpYmFyYS5hcHBlbmRDaGlsZCgkaGVhZGVyVG9wKTtcbiAgICAkY2FwaWJhcmEuYXBwZW5kQ2hpbGQoJGNvcm5lcik7XG4gICAgJGNhcGliYXJhLmFwcGVuZENoaWxkKCRjb3JuZXJSaWdodCk7XG4gICAgJGNhcGliYXJhLmFwcGVuZENoaWxkKCRjb250YWluZXIpO1xuICAgICRjYXBpYmFyYS5hcHBlbmRDaGlsZCgkbmF2UmlnaHQpO1xuICAgIGlmKCRjb250ZXh0TWVudSkgJGNhcGliYXJhLmFwcGVuZENoaWxkKCRjb250ZXh0TWVudSk7XG5cblxuICAgIHRoaXMuJGlucHV0c05hdlJpZ2h0ICAgPSBpbnB1dHM7XG4gICAgdGhpcy4kY2FwaWJhcmEgPSAkY2FwaWJhcmE7XG4gICAgdGhpcy4kZWxlbWVudHMgPSB7XG4gICAgICAkZGV0YWlsRGF5LFxuICAgICAgJGNvbnRleHRNZW51LFxuICAgICAgJGZsb2F0Qm94Q29udGFpbmVyLFxuICAgICAgJHNlbGVjdENvbnRhaW5lcixcbiAgICAgICR0YWJsZSxcbiAgICAgICRiYWNrZ3JvdW5kLFxuICAgICAgJHBsb3RWZXJ0aWNhbENvbnRhaW5lcixcbiAgICAgICRwbG90SG9yaXpvbnRhbENvbnRhaW5lcixcbiAgICAgICRkYXlNb3VzZU92ZXIsXG4gICAgICAkY29udGFpbmVyLFxuICAgICAgJG5hdlJpZ2h0LFxuICAgICAgJG5hdkxlZnQsXG4gICAgICAkaGVhZGVyLFxuICAgICAgJHRvZGF5TGluZSxcbiAgICAgICRjb3JuZXJcbiAgICB9XG5cbiAgICB0aGlzLmNvbnRhaW5lckVsZW1lbnQuaW5uZXJIVE1MID0gXCJcIjtcbiAgICB0aGlzLmNvbnRhaW5lckVsZW1lbnQuYXBwZW5kQ2hpbGQoJGNhcGliYXJhKTtcblxuICAgIGlmKGNvbmZpZy50aW1lbGluZS50YWJzKXtcbiAgICAgIHRoaXMuc2VsZWN0VGFiKGluaXRpYWxUYWIsIGZhbHNlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gJGNhcGliYXJhO1xuICB9XG5cblxuXG5cblxuXG5cbiAgLyoqXG4gICAqIENhbWJpYSBlbCBtb2RvIG9zY3Vybywgc2VndW4gZWwgZXN0YWRvIGFjdHVhbFxuICAgKi9cbiAgdG9nZ2xlRGFyaygpe1xuICAgIHRoaXMuc2V0RGFyayghQm9vbGVhbih0aGlzLmNvbmZpZy50aW1lbGluZS5kYXJrKSk7XG4gIH1cblxuXG4gIC8qKlxuICAgKiBDYW1iaWEgZWwgbW9kbyBvc2N1cm8sIHNlZ3VuIHBhcmFtZXRyb29cbiAgICpcbiAgICogQHBhcmFtIHtCb29sZWFufSBbaXNEYXJrID0gZmFsc2VdIC0gaW5kaWNhIHNpIHNlIGFjdGl2YSBlbCBtb2RvIG9zY3VybyBvIG5vXG4gICAqL1xuICBzZXREYXJrKCBpc0RhcmsgPSBmYWxzZSl7XG4gICAgbGV0IGRhcmtDbGFzc05hbWUgPSBcImRhcmstdGhlbWVcIjtcbiAgICB0aGlzLmNvbmZpZy50aW1lbGluZS5kYXJrID0gaXNEYXJrO1xuXG4gICAgaWYoaXNEYXJrKXtcbiAgICAgIHRoaXMuJGNhcGliYXJhLmNsYXNzTGlzdC5hZGQoZGFya0NsYXNzTmFtZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuJGNhcGliYXJhLmNsYXNzTGlzdC5yZW1vdmUoZGFya0NsYXNzTmFtZSk7XG4gICAgfVxuICB9XG5cblxuXG4gIC8qKlxuICAgKiBDYW1iaWEgZWwgdGVtYSBkZSBjb2xvciBzZWN1bmRhcmlvLCBzZWd1biBwYXJhbWV0cm9cbiAgICogIC1RdWl0YSB0b2RvcyBsb3MgcG9zaWJsZXMgY29sb3JlcyBkZSBsYSBwbGFuaWxsYSwgb2J0ZW5pZW5kb2xvcyBkZSBUYWJzXG4gICAqICAtQWdyZWdhIGVsIGNvbG9yIGVudmlhZG8gcG9yIHBhcmFtZXRybyBjb21vIGNsYXNlIGRlbCBkb21FbGVtZW50ICRjYXBpYmFyYVxuICAgKlxuICAgKiBAcGFyYW0ge1N0cmluZ30gY29sb3IgLSBjb2xvciwgY29tbyBub21icmUgZGUgY2xhc2UsIHBhcmEgYWdyZWdhciBcbiAgICovXG4gIGNoYW5nZUNvbG9yVGhlbWUoY29sb3Ipe1xuICAgIHRoaXMuY29uZmlnLnRpbWVsaW5lLnRhYnMuZm9yRWFjaCh0YWIgPT4ge1xuICAgICAgdGhpcy4kY2FwaWJhcmEuY2xhc3NMaXN0LnJlbW92ZSh0YWIuY29sb3IpO1xuICAgIH0pO1xuICAgIHRoaXMuJGNhcGliYXJhLmNsYXNzTGlzdC5hZGQoY29sb3IpO1xuICB9XG5cblxuXG4gIC8qKlxuICAgKiBTZWxlY2Npb25hIHRhYiBlbiBwbGFuaWxsYVxuICAgKiBzaSByZWRyYXcgPT0gdHJ1ZSAsIHJlZGlidWphIG5hdlJpZ2h0IHkgZmxvYXRCb3hcbiAgICogeWEgcXVlIHNvbiBpbnB1dHMgeSBlc3RldGljYXMgcGVyc29uYWxpemFkYXMgcG9yIFRhYlxuICAgKlxuICAgKiBAcGFyYW0ge09iamVjdH0gdGFiIC0gdGFiLCBvYnRlbmlkYSBkZXNkZSBjb25maWd1cmFjaW9uXG4gICAqIEBwYXJhbSB7Qm9vbGVhbn0gW3JlZHJhdz10cnVlXSAtIG9wY2lvbiBkZSByZWRpYnVqYWRvXG4gICAqL1xuICBzZWxlY3RUYWIodGFiLCByZWRyYXcgPSB0cnVlKXtcblxuICAgIGxldCAkdGFiID0gdGhpcy4kY2FwaWJhcmEucXVlcnlTZWxlY3RvcignLnRhYltpbnB1dC1rZXk9XCInK3RhYi5pZCsnXCJdJyk7XG5cbiAgICBpZigkdGFiKXtcbiAgICAgIHRoaXMudGFiU2VsZWN0ZWQgPSB0YWI7XG4gICAgICB0aGlzLiRjYXBpYmFyYS5xdWVyeVNlbGVjdG9yKFwiLnRhYnMtc2VsZWN0XCIpLnZhbHVlID0gdGFiLmlkO1xuICAgICAgdGhpcy4kY2FwaWJhcmEucXVlcnlTZWxlY3RvckFsbChcIi50YWJcIikuZm9yRWFjaCh0ID0+IHt0LmNsYXNzTGlzdC5yZW1vdmUoXCJhY3RpdmVcIil9KTtcbiAgICAgICR0YWIuY2xhc3NMaXN0LmFkZChcImFjdGl2ZVwiKTtcblxuICAgICAgdGhpcy5jbGVhbk11bHRpSW5wdXQoKTtcblxuICAgICAgaWYocmVkcmF3KXtcbiAgICAgICAgdGhpcy5yZWRyYXcoe1xuICAgICAgICAgIGNvcm5lckxlZnQ6IHRydWUsXG4gICAgICAgICAgbmF2TGVmdDogdHJ1ZSxcbiAgICAgICAgICBuYXZSaWdodDogdHJ1ZSxcbiAgICAgICAgICBmbG9hdEJveDp0cnVlXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIHRoaXMuY2hhbmdlQ29sb3JUaGVtZSh0YWIuY29sb3IpO1xuXG4gICAgICB0aGlzLiRjYXBpYmFyYS5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudChcInNlbGVjdFRhYlwiLCB7XG4gICAgICAgIGJ1YmJsZXM6IHRydWUsXG4gICAgICAgIGNhbmNlbGFibGU6IGZhbHNlLFxuICAgICAgICBkZXRhaWw6e1xuICAgICAgICAgIHRhYlNlbGVjdGVkIDogdGhpcy50YWJTZWxlY3RlZFxuICAgICAgICB9XG4gICAgICB9KSk7XG5cbiAgICB9ZWxzZXtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCJ0YWIgbm8gZW5jb250cmFkYVwiKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogbXVlc3RyYSBhbHRlcm5hZGFtZW50ZSBsb3Mgc2lkZWJhciBpbml0aWFsIHkgZXh0ZW5kZWRcbiAgICovXG4gIHRvZ2dsZVNpZGViYXIoKXtcbiAgICB0aGlzLnNldFNob3dOYXZJbml0aWFsKCF0aGlzLmlzU2hvd05hdkluaXRpYWwpO1xuICAgIHRoaXMuc2V0U2hvd05hdkV4dGVuZGVkKCF0aGlzLmlzU2hvd05hdkV4dGVuZGVkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPY3VsdGEgbmF2IGluaXRpYWwgLCBleHRlbmRlZCB5IGJ1dHRvblxuICAgKi9cbiAgaGlkZVNpZGViYXJzKCl7XG4gICAgdGhpcy5zZXRTaG93TmF2SW5pdGlhbChmYWxzZSk7XG4gICAgdGhpcy5zZXRTaG93TmF2RXh0ZW5kZWQoZmFsc2UpO1xuICAgIHRoaXMuc2V0U2hvd05hdkJ1dHRvbnMoZmFsc2UpO1xuICB9XG5cblxuXG4gIC8qKlxuICAgKiBNdWVzdHJhL09jdWx0YSBTaWRlYmFyIGluaWNpYWxcbiAgICovXG4gIHNldFNob3dOYXZJbml0aWFsKGlzU2hvd05hdkluaXRpYWwpe1xuICAgIHRoaXMuaXNTaG93TmF2SW5pdGlhbCAgPSBpc1Nob3dOYXZJbml0aWFsO1xuICAgIHN0eWxlVXRpbHMuc2V0TmF2TGVmdEluaXRpYWxTdHlsZSh0aGlzLmNvbmZpZywgdGhpcy5pc1Nob3dOYXZJbml0aWFsLCB0aGlzLnRhYlNlbGVjdGVkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNdWVzdHJhL09jdWx0YSBTaWRlYmFyIGV4dGVuZGlkb1xuICAgKi9cbiAgc2V0U2hvd05hdkV4dGVuZGVkKGlzU2hvd05hdkV4dGVuZGVkKXtcbiAgICB0aGlzLmlzU2hvd05hdkV4dGVuZGVkID0gaXNTaG93TmF2RXh0ZW5kZWQ7XG4gICAgc3R5bGVVdGlscy5zZXROYXZMZWZ0RXh0ZW5kZWRTdHlsZSh0aGlzLmNvbmZpZywgdGhpcy5pc1Nob3dOYXZFeHRlbmRlZCwgdGhpcy50YWJTZWxlY3RlZCk7XG4gIH1cbiAgLyoqXG4gICAqIE11ZXN0cmEvT2N1bHRhIFNpZGViYXIgYnV0dG9uc1xuICAgKi9cbiAgc2V0U2hvd05hdkJ1dHRvbnMoaXNTaG93TmF2QnV0dG9ucyl7XG4gICAgdGhpcy5pc1Nob3dOYXZCdXR0b25zID0gaXNTaG93TmF2QnV0dG9ucztcbiAgICBzdHlsZVV0aWxzLnNldE5hdkxlZnRCdXR0b25zU3R5bGUodGhpcy5jb25maWcsIHRoaXMuaXNTaG93TmF2QnV0dG9ucywgdGhpcy50YWJTZWxlY3RlZCk7XG4gIH1cblxuXG5cbiAgLyoqXG4gICAqIE11ZXN0cmEvb2N1bHRhIFNpZGViYXIgRGVyZWNob1xuICAgKi9cbiAgdG9nZ2xlU2lkZWJhclJpZ2h0KCl7XG4gICAgbGV0IGlzSGlkZGVuID0gIXRoaXMuJGNhcGliYXJhLmNsYXNzTGlzdC5jb250YWlucyhcImV4dGVuZGVkLXJpZ2h0XCIpO1xuICAgIHRoaXMuc2V0VmlzaWJsZVNpZGViYXJSaWdodCghaXNIaWRkZW4pO1xuICB9XG5cbiAgLyoqXG4gICAqIE1vZGlmaWNhIGxhIG9wY2lvbiBkZSBtb3N0cmFyIHkgb2N1bHRhciBzaWRlYmFyIGRlcmVjaG9cbiAgICpcbiAgICogQHBhcmFtICB7Qm9vbGVhbn0gW3Nob3cgPSB0cnVlXSAtIGluZGljYSBzaSBkZWJlIG1vc3RyYXJzZSB1IG9jdWx0YXJzZVxuICAgKi9cbiAgc2V0VmlzaWJsZVNpZGViYXJSaWdodChzaG93ID0gdHJ1ZSl7XG4gICAgbGV0IGZuID0gc2hvdyA/IFwiYWRkXCIgOiBcInJlbW92ZVwiO1xuICAgIHRoaXMuJGNhcGliYXJhLmNsYXNzTGlzdFtmbl0oXCJleHRlbmRlZC1yaWdodFwiKTtcbiAgfVxuXG5cbiAgLyoqXG4gICAqIE11ZXN0cmEvb2N1bHRhIEhlYWRlciBleHRlbmRpZG8gKGlucHV0cylcbiAgICovXG4gIHRvZ2dsZUhlYWRlcigpe1xuICAgIHRoaXMuJGNhcGliYXJhLmNsYXNzTGlzdC50b2dnbGUoXCJoZWFkZXItZXh0ZW5kZWRcIik7XG4gIH1cblxuXG5cbiAgLyoqXG4gICAqIE11ZXN0cmEvb2N1bHRhIGJhcnJhIGRlIGNhcmdhIGRlIHBsYW5pbGxhIFxuICAgKiBTaSBzZSBsbGFtYSBzaW4gcGFyYW1ldHJvcywgcG9yIGRlZmVjdG8gbXVlc3RyYSBlbCBsb2FkaW5nIGRlcmVjaG9cbiAgICogcXVlIGNvcnJlc3BvbmRlIGFsIHNpZGViYXItcmlnaHRcbiAgICpcbiAgICogQHBhcmFtIHtTdHJpbmd9IFtwb3NpdGlvbiA9IFwicmlnaHRcIl0gLSBlc2NvZ2UgbG9hZGluZywgcHVlZGUgc2VyIFwibGVmdFwiIHwgXCJyaWdodFwiXG4gICAqIEBwYXJhbSB7Qm9vbGVhbn0gW3Nob3cgPSB0cnVlXSAtIGluZGljYSBzaSBtb3N0cmFyIHUgb2N1bHRhciBsb2FkaW5nXG4gICAqL1xuICBsb2FkaW5nKHBvc2l0aW9uID0gXCJyaWdodFwiLCBzaG93ID0gdHJ1ZSl7XG4gICAgbGV0IGZuICAgICAgPSBzaG93ID8gXCJyZW1vdmVcIiA6IFwiYWRkXCI7XG4gICAgbGV0IGVsZW1lbnQgPSB0aGlzLiRjYXBpYmFyYS5xdWVyeVNlbGVjdG9yKFwiLnByb2dyZXNzLWJhci1cIitwb3NpdGlvbik7XG4gICAgZWxlbWVudC5jbGFzc0xpc3RbZm5dKFwiaGlkZS1wcm9ncmVzc1wiKTtcbiAgfVxuXG5cblxuICAvKipcbiAgICogQnVzY2EgdW4gYm90b24gc2VndW4gc2VsZWN0b3IsIHkgbGUgYWdyZWdhIGxhIGNsYXNlIFwibG9hZGluZ1wiXG4gICAqIHkgZGVzaGFiaWxpdGEgZWwgYm90b25cbiAgICpcbiAgICogQHBhcmFtIHsgU3RyaW5nIH0gWyBzZWxlY3RvciA9ICdbYnRuLWNhbGVuZGFyXScgXSAtIHNlbGVjdG9yIGRlIGJvdG9uXG4gICAqIEBwYXJhbSB7IEJvb2xlYW4gfSBbaXNMb2FkaW5nICA9IHRydWVdIC0gZGVmaW5lIHNpIGVzdGEgY2FyZ2FuZG8gbyBub1xuICAgKi9cbiAgbG9hZGluZ0J0bihzZWxlY3Rvcj0gXCJbYnRuLWNhbGVuZGFyXVwiLCBpc0xvYWRpbmcgPSB0cnVlKXtcbiAgICBsZXQgZWxlbWVudCA9IHRoaXMuJGNhcGliYXJhLnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3IpO1xuICAgIGxldCBmbiA9IGlzTG9hZGluZyA/IFwiYWRkXCIgOiBcInJlbW92ZVwiO1xuICAgIGVsZW1lbnQuY2xhc3NMaXN0W2ZuXShcImxvYWRpbmdcIik7XG4gICAgaWYoaXNMb2FkaW5nKXtcbiAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKFwiZGlzYWJsZWRcIixcIlwiKTtcbiAgICB9ZWxzZXtcbiAgICAgIGVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKFwiZGlzYWJsZWRcIik7XG4gICAgfVxuICB9XG5cblxuXG5cbiAgLyoqXG4gICAqIENyZWEgRXZlbnRvIGRlIGd1YXJkYWRvIGRlIGxvcyBpbnB1dHMgZGVsIFNpZGViYXIgUmlnaHRcbiAgICogb2J0aWVuZSB0b2RvcyBsb3MgdmFsb3JlcyBkZSBsb3MgaW5wdXRzIHJlZ2lzdHJhZG9zIGVuIHRoaXMuJGlucHV0cyB5IFxuICAgKiBsb3MgcmV0b3JuYSBjcmVhbmRvIGVsIGV2ZW50byBcInNhdmVcIlxuICAgKlxuICAgKi9cbiAgc2F2ZUlucHV0c05hdlJpZ2h0KCl7XG5cbiAgICBsZXQgaW5wdXRWYWx1ZXMgPSBbXTtcblxuICAgIHRoaXMuJGlucHV0c05hdlJpZ2h0LmZvckVhY2goJGlucHV0ID0+IHtcbiAgICAgIGxldCBrZXkgPSAkaW5wdXQuZ2V0QXR0cmlidXRlKFwiaW5wdXQta2V5XCIpO1xuICAgICAgbGV0IGlucHV0Q29uZmlnID0gdGhpcy50YWJTZWxlY3RlZC5pbnB1dHMuZmluZCh0ID0+IHQua2V5ID09IGtleSk7XG4gICAgICBpbnB1dFZhbHVlcy5wdXNoKHtcbiAgICAgICAga2V5ICAgICAgICAgOiBrZXksXG4gICAgICAgIGlucHV0Q29uZmlnIDogaW5wdXRDb25maWcsXG4gICAgICAgIGVsICAgICAgICAgIDogJGlucHV0LFxuICAgICAgICB2YWx1ZSAgICAgICA6IHRoaXMuZ2V0SW5wdXRWYWx1ZSgkaW5wdXQsIGlucHV0Q29uZmlnKVxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLiRjYXBpYmFyYS5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudChcInNhdmVcIiwge1xuICAgICAgYnViYmxlczogdHJ1ZSxcbiAgICAgIGNhbmNlbGFibGU6IGZhbHNlLFxuICAgICAgZGV0YWlsOntcbiAgICAgICAgaW5wdXRWYWx1ZXMgOiBpbnB1dFZhbHVlcyxcbiAgICAgICAgc2VsZWN0ZWQgICAgOiB0aGlzLnNlbGVjdGVkLFxuICAgICAgICB0YWJTZWxlY3RlZCA6IHRoaXMudGFiU2VsZWN0ZWRcbiAgICAgIH1cbiAgICB9KSk7XG5cblxuICB9XG5cblxuXG4gIC8qKlxuICAgKiBDYW5jZWxhIGZvcm11bGFyaW8gZGUgc2lkZWJhciByaWdodFxuICAgKi9cbiAgY2FuY2VsTXVsdGlJbnB1dCgpe1xuICAgIHRoaXMuY2xlYW5NdWx0aUlucHV0KCk7XG4gIH1cblxuXG5cbiAgLyoqXG4gICAqIExpbXBpYSBlbCBmb3JtdWxhcmlvIGVuIGVsIHNpZGViYXIgcmlnaHRcbiAgICogb2N1bHRhIGVsIHNpZGViYXIgcmlnaHRcbiAgICovXG4gIGNsZWFuTXVsdGlJbnB1dCgpe1xuICAgIHRoaXMuJGNhcGliYXJhLmNsYXNzTGlzdC5yZW1vdmUoXCJleHRlbmRlZC1yaWdodFwiKTtcbiAgICB0aGlzLnNlbGVjdGVkID0gW107XG4gICAgdGhpcy5yZWRyYXdTZWxlY3Rpb24oKTtcbiAgfVxuXG5cblxuXG5cbiAgLyoqXG4gICAqIE9idGllbmUgZWwgdmFsb3IgZGUgdW4gaW5wdXRcbiAgICpcbiAgICogQHBhcmFtIHtPYmplY3R9IGVsZW0gLSBlbGVtZW50byBkZWwgZG9tIHF1ZSByZXByZXNlbnRhIGFsIGlucHV0LCBubyBuZWNlc2FyaWFtZW50ZSBpbnB1dFxuICAgKiBAcGFyYW0ge09iamVjdH0gY29uZmlnIC0gY29uZmlndXJhY2lvbiBkZSBpbnB1dFxuICAgKiBAcmV0dXJuIHsqfSB2YWxvciBkZWwgSW5wdXRcbiAgICovXG4gIGdldElucHV0VmFsdWUoZWxlbSwgaW5wdXRDb25maWcpe1xuICAgIGxldCB2YWx1ZSAgICAgICAgID0gbnVsbDtcbiAgICBsZXQgaW5wdXRFbGVtZW50ICA9IG51bGw7XG4gICAgbGV0IGlucHV0c0VsZW1lbnQgPSBudWxsO1xuXG4gICAgc3dpdGNoIChpbnB1dENvbmZpZy50eXBlKSB7XG5cbiAgICAgIGNhc2UgJ3RpbWUnOlxuICAgICAgICBsZXQgaGhFbGVtZW50PSBlbGVtLnF1ZXJ5U2VsZWN0b3IoXCIuaG91clwiKTtcbiAgICAgICAgbGV0IG1tRWxlbWVudD0gZWxlbS5xdWVyeVNlbGVjdG9yKFwiLm1pbnV0ZXNcIik7XG4gICAgICAgIGxldCBoaFZhbHVlID0gaGhFbGVtZW50LnZhbHVlO1xuICAgICAgICBsZXQgbW1WYWx1ZSA9IG1tRWxlbWVudC52YWx1ZTtcbiAgICAgICAgaWYoaGhWYWx1ZSl7XG4gICAgICAgICAgaGhWYWx1ZSA9IHBhcnNlRmxvYXQoaGhWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYobW1WYWx1ZSl7XG4gICAgICAgICAgbW1WYWx1ZSA9IHBhcnNlRmxvYXQobW1WYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgdmFsdWUgPSB7aGg6aGhWYWx1ZSwgbW06IG1tVmFsdWV9O1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnbWVzc2FnZSc6XG4gICAgICBjYXNlICd0ZXh0YXJlYSc6XG4gICAgICAgIGlucHV0RWxlbWVudCA9IGVsZW0ucXVlcnlTZWxlY3RvcihcInRleHRhcmVhXCIpO1xuICAgICAgICB2YWx1ZSA9IGlucHV0RWxlbWVudC52YWx1ZSB8fCAnJztcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgXCJpbnB1dExpc3RcIjpcbiAgICAgICAgbGV0IHZhbHVlc0lucHV0cyA9IFtdO1xuICAgICAgICBpbnB1dHNFbGVtZW50ID0gZWxlbS5xdWVyeVNlbGVjdG9yQWxsKFwiaW5wdXRbdHlwZT0nbnVtYmVyJ11cIik7XG4gICAgICAgIGlucHV0c0VsZW1lbnQuZm9yRWFjaChpbnB1dEVsZW1lbnQgPT4ge1xuICAgICAgICAgIGxldCB2YWx1ZUlucHV0ID0gaW5wdXRFbGVtZW50LnZhbHVlO1xuICAgICAgICAgIGlmKHZhbHVlSW5wdXQpe1xuICAgICAgICAgICAgdmFsdWVJbnB1dCA9IHBhcnNlRmxvYXQodmFsdWVJbnB1dCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGxldCBsYWJlbCA9IGlucHV0RWxlbWVudC5nZXRBdHRyaWJ1dGUoXCJpbnB1dC1sYWJlbFwiKTtcbiAgICAgICAgICBsZXQgaWQgPSBpbnB1dEVsZW1lbnQuZ2V0QXR0cmlidXRlKFwiaW5wdXQtaWRcIik7XG4gICAgICAgICAgdmFsdWVzSW5wdXRzLnB1c2goe2xhYmVsOmxhYmVsLCB2YWx1ZTp2YWx1ZUlucHV0ICwgaWQ6IGlkfSk7XG4gICAgICAgIH0pXG4gICAgICAgIHZhbHVlID0gdmFsdWVzSW5wdXRzO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgICAgaW5wdXRFbGVtZW50ID0gZWxlbS5xdWVyeVNlbGVjdG9yKFwiaW5wdXRbdHlwZT0nbnVtYmVyJ11cIik7XG4gICAgICAgIHZhbHVlID0gaW5wdXRFbGVtZW50LnZhbHVlO1xuICAgICAgICBpZih2YWx1ZSl7XG4gICAgICAgICAgdmFsdWUgPSBwYXJzZUZsb2F0KHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnY2hlY2tib3gnOlxuICAgICAgICBpbnB1dEVsZW1lbnQgPSBlbGVtLnF1ZXJ5U2VsZWN0b3IoXCJpbnB1dFt0eXBlPSdjaGVja2JveCddXCIpO1xuICAgICAgICB2YWx1ZSA9IGlucHV0RWxlbWVudC5jaGVja2VkO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnaW5wdXQtYm94JzpcbiAgICAgICAgaW5wdXRzRWxlbWVudCA9IGVsZW0ucXVlcnlTZWxlY3RvckFsbChcIi5taW5pLWlucHV0LXNlY3Rpb24gaW5wdXRcIik7XG4gICAgICAgIHZhbHVlID0gW107XG4gICAgICAgIGlucHV0c0VsZW1lbnQuZm9yRWFjaChpID0+IHtcbiAgICAgICAgICBsZXQgdiA9IGkudmFsdWU7XG4gICAgICAgICAgaWYodil7XG4gICAgICAgICAgICB2ID0gcGFyc2VGbG9hdCh2KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdmFsdWUucHVzaCh7XG4gICAgICAgICAgICBpZCAgICA6IGkuZ2V0QXR0cmlidXRlKFwiaW5wdXQtaWRcIiksXG4gICAgICAgICAgICBrZXkgICA6IGkuZ2V0QXR0cmlidXRlKFwiaW5wdXQta2V5XCIpLFxuICAgICAgICAgICAgdmFsdWUgOiB2LFxuICAgICAgICAgIH0pXG4gICAgICAgIH0pO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAndGl0bGUnOlxuICAgICAgICAvL25vIGVzIHJlYWxtZW50ZSB1biBpbnB1dCwgZXMgc29sbyB1biB0ZXh0b1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAndGV4dCc6XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBpbnB1dEVsZW1lbnQgPSBlbGVtLnF1ZXJ5U2VsZWN0b3IoXCJpbnB1dFwiKTtcbiAgICAgICAgdmFsdWUgPSBpbnB1dEVsZW1lbnQudmFsdWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cblxuXG5cblxuXG5cblxuICAvKipcbiAgICogRnVuY2lvbiBsbGFtYWRhIGFsIHBhc2FyIHNvYnJlIHVuIGl0ZW0gZGVsIHNpZGViYXIgaXpxdWllcmRvLCBcbiAgICogcGFyYSBtb3N0cmFyIHVuIGRldGFsbGUgZGVsIGl0ZW1cbiAgICogXG4gICAqIEVsIGRldGFsbGUgZGVsIGl0ZW0gc2UgYW5jbGEgZGUgbWFuZXJhIHN1cGVyaW9yIG8gaW5mZXJpb3IgZGVwZW5kaWVuZG8gZGUgXG4gICAqIGxhIHBvc2ljaW9uIGVsIG1vdXNlIGVuIHBhbnRhbGxhLCBwYXJhIG5vIHNhbGlyIGRlbCBjYW1wbyB2aXN1YWwgXG4gICAqXG4gICAqXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBldnQgLSAgRXZlbnRvIHJldG9ybmFkbyBwb3IgdW4gbW91c2VvdmVyXG4gICAqL1xuICBvdmVyTmF2SXRlbShldnQpe1xuICAgIGxldCBwb3MgICAgID0gZXZ0LmRldGFpbC5wb3M7XG4gICAgbGV0IGl0ZW0gICAgPSBldnQuZGV0YWlsLml0ZW07XG4gICAgLy9sZXQgZGF0YURheSA9IGV2dC5kZXRhaWwuZGF0YTtcbiAgICBsZXQgJGRldGFpbCA9IHRoaXMuJGVsZW1lbnRzLiRuYXZMZWZ0LnF1ZXJ5U2VsZWN0b3IoXCIuZGV0YWlsLW5hdi1pdGVtXCIpO1xuXG4gICAgaWYoJGRldGFpbC5jbGFzc0xpc3QuY29udGFpbnMoXCJoaWRlXCIpKXtcbiAgICAgICRkZXRhaWwuY2xhc3NMaXN0LnJlbW92ZShcImhpZGVcIik7XG4gICAgfTtcblxuICAgICRkZXRhaWwuaW5uZXJIVE1MID0gdGFibGVFbGVtZW50cy5nZXREZXRhaWxOYXZJdGVtQ29udGVudChpdGVtKTtcblxuICAgIGlmKHBvcy55UGVyY2VudCA+IDUwKXsgLy9tYXlvciBhIDUwJVxuICAgICAgaWYoISRkZXRhaWwuY2xhc3NMaXN0LmNvbnRhaW5zKFwidG8tYm90dG9tXCIpKXtcbiAgICAgICAgJGRldGFpbC5jbGFzc0xpc3QuYWRkKFwidG8tYm90dG9tXCIpO1xuICAgICAgfVxuICAgIH1lbHNle1xuICAgICAgaWYoJGRldGFpbC5jbGFzc0xpc3QuY29udGFpbnMoXCJ0by1ib3R0b21cIikpe1xuICAgICAgICAkZGV0YWlsLmNsYXNzTGlzdC5yZW1vdmUoXCJ0by1ib3R0b21cIik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJGRldGFpbC5zdHlsZS50b3AgPSBwb3MudG9wK1wicHhcIjtcbiAgfVxuXG4gIC8qKlxuICAgKiBPY3VsdGEgZGV0YWxsZSBkZSBpdGVtIGVuIHNpZGViYXIgaXpxdWllcmRvIFxuICAgKlxuICAgKiBAcGFyYW0ge09iamVjdH0gZXZ0IC0gIEV2ZW50byByZXRvcm5hZG8gcG9yIHVuIG1vdXNlb3ZlclxuICAgKi9cbiAgbGVhdmVOYXZJdGVtKCl7XG4gICAgdGhpcy4kZWxlbWVudHMuJG5hdkxlZnQucXVlcnlTZWxlY3RvcihcIi5kZXRhaWwtbmF2LWl0ZW1cIikuY2xhc3NMaXN0LmFkZChcImhpZGVcIik7XG4gIH1cblxuXG5cblxuICAvKipcbiAgICogQ2FwdHVyYSBldmVudG8gbW91c2Vtb3ZlIGRlIGZsb2F0Qm94Q29udGFpbmVyXG4gICAqIHBhcmEgcmVmcmVzY2FyIGxhIHBvc2ljaW9uIHkgZGV0ZW5lciBwb3N0ZXJpb3JlcyBldmVudG9zXG4gICAqXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBldnQgLSBFdmVudG8gZGUgbW91c2Vtb3ZlXG4gICAqL1xuICBtb3VzZU1vdmVPbkZsZXhCb3hDb250YWluZXIoZXZ0KXtcbiAgICBsZXQgcG9zaXRpb24gPSB1dGlscy5ldmVudFRvUG9zaXRpb24odGhpcy5jb25maWcsIGV2dCwgdGhpcy4kZWxlbWVudHMuJHRhYmxlKTtcbiAgICB0aGlzLnJlZnJlc2hEZXRhaWxEYXlQb3NpdGlvbihwb3NpdGlvbik7XG4gICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gIH1cblxuICAvKipcbiAgICogQ2FwdHVyYSBldmVudG8gbW91c2VsZWF2ZSBkZSBmbG9hdEJveENvbnRhaW5lclxuICAgKiBwYXJhIG9jdWx0YXIgZGV0YWlsRGF5XG4gICAqXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBldnQgLSBFdmVudG8gZGUgbW91c2VsZWF2ZVxuICAgKi9cbiAgbW91c2VMZWF2ZU9uRmxvYXRCb3hDb250YWluZXIoZXZ0KXtcbiAgICB0aGlzLmhpZGVEZXRhaWxEYXkoKTtcbiAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgfVxuXG5cbiAgLyoqXG4gICAqIENhcHR1cmEgZWwgZXZlbnRvIG1vdXNlbW92ZSBlbiAkdGFibGUsIHBhcmEgaW5kaWNhciBsYSBwb3NpY2lvbiBkZSAkZGF5TW91c2VPdmVyXG4gICAqXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBldnQgLSBFdmVudG8gZGUgbW91c2VsZWF2ZVxuICAgKi9cbiAgbW91c2VNb3ZlT25UYWJsZShldnQpe1xuICAgIGlmKHRoaXMuaXNWaXNpYmxlQ29udGV4dE1lbnUpIHJldHVybjtcbiAgICBsZXQgcG9zID0gdXRpbHMuZXZlbnRUb1Bvc2l0aW9uKHRoaXMuY29uZmlnLCBldnQsIHRoaXMuJGVsZW1lbnRzLiR0YWJsZSk7XG4gICAgaWYodGhpcy5sYXN0TW91c2VQb3NpdGlvbiA9PSBudWxsIHx8IFxuICAgICAgdGhpcy5sYXN0TW91c2VQb3NpdGlvbi5sZWZ0ICE9IHBvcy5sZWZ0IHx8XG4gICAgICB0aGlzLmxhc3RNb3VzZVBvc2l0aW9uLnRvcCAhPSBwb3MudG9wXG4gICAgKXtcbiAgICAgIHRoaXMuJGVsZW1lbnRzLiRkYXlNb3VzZU92ZXIuc3R5bGUudHJhbnNmb3JtID0gXCJ0cmFuc2xhdGUoXCIrcG9zLmxlZnQrXCJweCAsXCIrcG9zLnRvcCtcInB4KVwiO1xuICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB0aGlzLmxhc3RNb3VzZVBvc2l0aW9uID0gcG9zO1xuICAgIH1cbiAgfTtcblxuXG5cbiAgcmlnaHRDbGlja09uQ2FwaWJhcmEoZXZ0KXtcbiAgICBpZih0aGlzLmNvbmZpZy50aW1lbGluZS5jb250ZXh0TWVudSl7XG4gICAgICB0aGlzLmhpZGVEZXRhaWxEYXkoKTtcbiAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbiAgfTtcblxuICByaWdodENsaWNrT25UYWJsZShldnQpe1xuICAgIGlmKHRoaXMuY29uZmlnLnRpbWVsaW5lLmNvbnRleHRNZW51KXtcbiAgICAgIHRoaXMuaGlkZURldGFpbERheSgpO1xuICAgICAgdGhpcy5zaG93Q29udGV4dE1lbnUoZXZ0KTtcbiAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbiAgfTtcblxuICBzaG93Q29udGV4dE1lbnUoZXZ0KXtcblxuICAgIGxldCBkYXRlICA9IHV0aWxzLmdldERheUJ5RXZlbnQodGhpcy5jb25maWcsIGV2dCwgdGhpcy4kZWxlbWVudHMuJHRhYmxlKTtcbiAgICBsZXQgaXRlbSAgPSB1dGlscy5nZXRJdGVtQnlFdmVudCh0aGlzLmNvbmZpZywgZXZ0LCB0aGlzLiRlbGVtZW50cy4kdGFibGUpO1xuXG4gICAgaWYodGhpcy5pc1Zpc2libGVDb250ZXh0TWVudSkge1xuICAgICAgdGhpcy5oaWRlQ29udGV4dE1lbnUoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgcG9zaXRpb24gPSB1dGlscy5ldmVudFRvUG9zaXRpb24odGhpcy5jb25maWcsIGV2dCwgdGhpcy4kZWxlbWVudHMuJHRhYmxlKTtcbiAgICBsZXQgeyBlbGVtOiRlbGVtLCBpc1Zpc2libGUgfSA9IHRhYmxlRWxlbWVudHMuY3JlYXRlQ29udGV4dE1lbnUoe1xuICAgICAgY29uZmlnOiB0aGlzLmNvbmZpZyxcbiAgICAgIGV2dCxcbiAgICAgIHBvc2l0aW9uLFxuICAgICAgZGF0ZSxcbiAgICAgIGl0ZW0sXG4gICAgICBzZWxlY3RlZDogdGhpcy5zZWxlY3RlZFxuICAgIH0pO1xuXG4gICAgaWYoJGVsZW0pe1xuICAgICAgdGhpcy5pc1Zpc2libGVDb250ZXh0TWVudSA9IGlzVmlzaWJsZTtcbiAgICAgIHRoaXMuJGVsZW1lbnRzLiRjb250ZXh0TWVudS5yZXBsYWNlV2l0aCgkZWxlbSk7XG4gICAgICB0aGlzLiRlbGVtZW50cy4kY29udGV4dE1lbnUgPSAkZWxlbTtcbiAgICB9XG4gICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gIH1cblxuICAvKipcbiAgICogQ2FwdHVyYSBlbCBldmVudG8gY2xpY2sgZW4gJHRhYmxlLCBwYXJhIHNlbGVjY2lvbmFyIGRpYXNcbiAgICogbG9zIGRpYXMgc2VsZWNjaW9uYWRvcyBzZSByZWdpc3RyYW4gZW4gdGhpcy5zZWxlY3RlZFtdXG4gICAqXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBldnQgLSBFdmVudG8gZGUgbW91c2VsZWF2ZVxuICAgKi9cbiAgY2xpY2tPblRhYmxlKGV2dCl7XG5cbiAgICBsZXQgZGF0ZSAgPSB1dGlscy5nZXREYXlCeUV2ZW50KHRoaXMuY29uZmlnLCBldnQsIHRoaXMuJGVsZW1lbnRzLiR0YWJsZSk7XG4gICAgbGV0IHBvcyAgID0gdXRpbHMuZXZlbnRUb1Bvc2l0aW9uKHRoaXMuY29uZmlnLCBldnQsIHRoaXMuJGVsZW1lbnRzLiR0YWJsZSk7XG4gICAgbGV0IGl0ZW0gID0gdXRpbHMuZ2V0SXRlbUJ5RXZlbnQodGhpcy5jb25maWcsIGV2dCwgdGhpcy4kZWxlbWVudHMuJHRhYmxlKTtcblxuICAgIGlmKGl0ZW0gPT0gbnVsbCkgcmV0dXJuOyAvLyBjdWFubyBzZSBzZWxlY2Npb25hIHVuIGVzcGFjaW8gbm8gc2VsZWNjaW9uYWJsZVxuXG4gICAgLy9zaSBlcyBtb2JpbGUsIG5vIHNlbGVjY2lvbmEsIHNvbG8gbXVlc3RyYSBkZXRhbGxlc1xuICAgIGxldCBkYXRhQnlEYXRlID0gXy5maW5kKGl0ZW0uZGF0YSwge2RhdGV9KTtcbiAgICBpZih0aGlzLmlzTW9iaWxlICYmIGRhdGFCeURhdGUpe1xuICAgICAgaWYoKCFkYXRhQnlEYXRlLm1lc3NhZ2UgfHwgZGF0YUJ5RGF0ZS5tZXNzYWdlLnZhbHVlID09IG51bGwpICYmIE9iamVjdC5lbnRyaWVzKGRhdGFCeURhdGUudmFsdWVzKS5sZW5ndGggPT09IDAgKSByZXR1cm47XG4gICAgICB0aGlzLmZvY3VzT25GbG9hdEJveCh7cG9zLCBldnR9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZighdGhpcy5pc1NlbGVjdGFibGUoaXRlbSkpe1xuICAgICAgdGhpcy4kY2FwaWJhcmEuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoXCJzZWxlY3ROb1NlbGVjdGFibGVcIiwge1xuICAgICAgICBidWJibGVzOiB0cnVlLFxuICAgICAgICBjYW5jZWxhYmxlOiBmYWxzZSxcbiAgICAgICAgZGV0YWlsOntcbiAgICAgICAgICBzZWxlY3RlZCAgICA6IHRoaXMuc2VsZWN0ZWQsXG4gICAgICAgICAgdGFiU2VsZWN0ZWQgOiB0aGlzLnRhYlNlbGVjdGVkXG4gICAgICAgIH1cbiAgICAgIH0pKTtcbiAgICAgIHJldHVybjsgLy8gY3VhbmRvIHNlIHNlbGVjY2lvbmEgdW4gZXNwYWNpbyBubyBzZWxlY2Npb25hYmxlXG4gICAgfSBcblxuICAgIGxldCBldmVudE5hbWUgPSBcImRlc2VsZWN0XCI7XG5cbiAgICBpZih0aGlzLnRvZ2dsZVNlbGVjdChkYXRlLCBpdGVtLCBwb3MpKXtcbiAgICAgIGV2ZW50TmFtZSA9IFwic2VsZWN0XCI7XG4gICAgfVxuXG4gICAgdGhpcy4kY2FwaWJhcmEuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoZXZlbnROYW1lLCB7XG4gICAgICBidWJibGVzOiB0cnVlLFxuICAgICAgY2FuY2VsYWJsZTogZmFsc2UsXG4gICAgICBkZXRhaWw6e1xuICAgICAgICBjb25maWc6IHRoaXMuY29uZmlnLFxuICAgICAgICBsYXN0U2VsZWN0aW9uIDoge2RhdGUsIGl0ZW0sIHBvc30sXG4gICAgICAgIHNlbGVjdGVkICAgIDogdGhpcy5zZWxlY3RlZCxcbiAgICAgICAgdGFiU2VsZWN0ZWQgOiB0aGlzLnRhYlNlbGVjdGVkXG4gICAgICB9XG4gICAgfSkpO1xuXG4gIH07XG5cblxuXG5cblxuICB0b2dnbGVTZWxlY3QoZGF0ZSwgaXRlbSwgcG9zKXtcbiAgICBpZih0aGlzLmlzU2VsZWN0ZWQoZGF0ZSwgaXRlbSkpe1xuICAgICAgdGhpcy5kZXNlbGVjdChkYXRlLCBpdGVtKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9ZWxzZXtcbiAgICAgIHRoaXMuc2VsZWN0KGRhdGUsIGl0ZW0sIHBvcyk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH07XG5cblxuXG5cblxuICBpc1NlbGVjdGVkKGRhdGUsIGl0ZW0pe1xuICAgIGxldCBpbmRleCA9IHV0aWxzLmluZGV4U2VsZWN0ZWREYXkodGhpcy5zZWxlY3RlZCwge2RhdGUsIGl0ZW19KTtcbiAgICByZXR1cm4gaW5kZXggPiAtMTtcbiAgfTtcblxuXG5cbiAgaXNTZWxlY3RhYmxlKGl0ZW0pe1xuICAgIGlmKCF0aGlzLmNvbmZpZy50aW1lbGluZS5zZWxlY3RhYmxlKXtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBsZXQgaXRlbUlzU2VsZWN0YWJsZSA9IHRydWU7XG4gICAgaWYodGhpcy50YWJTZWxlY3RlZCAmJiB0aGlzLnRhYlNlbGVjdGVkLnNlbGVjdGFibGVJZkhhcyl7XG4gICAgICBpZighaXRlbS52YWx1ZXNbdGhpcy50YWJTZWxlY3RlZC5zZWxlY3RhYmxlSWZIYXNdKXtcbiAgICAgICAgaXRlbUlzU2VsZWN0YWJsZSA9IGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gaXRlbUlzU2VsZWN0YWJsZTtcbiAgfTtcblxuICByZWRyYXdTZWxlY3Rpb24oKXtcbiAgICAgIHRoaXMuY2hlY2tDbGFzc1NpZGViYXJFeHRlbmRlZFJpZ2h0KCk7XG4gICAgICB0YWJsZUVsZW1lbnRzLnJlZHJhd1NlbGVjdEJvYXJkKHRoaXMuJGVsZW1lbnRzLiRzZWxlY3RDb250YWluZXIsIHRoaXMuc2VsZWN0ZWQpO1xuICB9O1xuXG5cblxuXG5cblxuICBkZXNlbGVjdChkYXRlLCBpdGVtLCByZWRyYXcgPSB0cnVlKXtcbiAgICBpZih0aGlzLmlzU2VsZWN0ZWQoZGF0ZSwgaXRlbSkgICl7XG4gICAgICBsZXQgaW5kZXggPSB1dGlscy5pbmRleFNlbGVjdGVkRGF5KHRoaXMuc2VsZWN0ZWQsIHtkYXRlLCBpdGVtfSk7XG4gICAgICB0aGlzLnNlbGVjdGVkLnNwbGljZShpbmRleCwgMSk7XG4gICAgfVxuXG4gICAgdGhpcy5zZWxlY3RlZC5mb3JFYWNoKChzLCBpbmRleCkgPT4ge1xuICAgICAgcy5pbmRleCA9IGluZGV4KzE7XG4gICAgfSlcblxuICAgIGlmKHJlZHJhdyl7XG4gICAgICB0aGlzLnJlZHJhd1NlbGVjdGlvbigpXG4gICAgfVxuICB9O1xuXG5cblxuXG5cblxuXG4gIHNlbGVjdChkYXRlLCBpdGVtLCBwb3MsIHJlZHJhdyA9IHRydWUpe1xuICAgIGxldCBpbmRleCA9IHV0aWxzLmluZGV4U2VsZWN0ZWREYXkodGhpcy5zZWxlY3RlZCwge2RhdGUsIGl0ZW19KTtcblxuICAgIGlmKGluZGV4IDwgMCl7XG5cbiAgICAgIHRoaXMuc2VsZWN0ZWQucHVzaCh7XG4gICAgICAgIGluZGV4OiAwLFxuICAgICAgICBkYXRlLFxuICAgICAgICBpdGVtLFxuICAgICAgICBwb3MsXG4gICAgICB9KTtcblxuICAgICAgbGV0IGRhdGFEYXkgPSBudWxsO1xuICAgICAgaWYoaXRlbS5kYXRhKXtcbiAgICAgICAgICBkYXRhRGF5ID0gaXRlbS5kYXRhLmZpbmQoZCA9PiB7XG4gICAgICAgICAgcmV0dXJuIGQuZGF0ZSA9PSBkYXRlO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgLy8gc2kgZXMgZWwgcHJpbWVyIGl0ZW0gc2VsZWNjaW9uYWRvLCBzZSBhdXRvcnJlbGxlbmEgZWwgZm9ybXVsYXJpbyBkZSBuYXZSaWdodFxuICAgICAgaWYodGhpcy5zZWxlY3RlZC5sZW5ndGggPT0gMSl7XG4gICAgICAgIGxldCB7aW5wdXRzLCBlbGVtZW50fSA9IHRhYmxlRWxlbWVudHMucmVkcmF3TmF2UmlnaHQodGhpcy5jb25maWcsIHRoaXMuJGVsZW1lbnRzLiRuYXZSaWdodCwgdGhpcy50YWJTZWxlY3RlZCwgZGF0YURheSwgdGhpcy5zZWxlY3RlZFswXSk7XG4gICAgICAgIHRoaXMuJGVsZW1lbnRzLiRuYXZSaWdodCA9IGVsZW1lbnQ7XG4gICAgICAgIHRoaXMuJGlucHV0c05hdlJpZ2h0ID0gaW5wdXRzO1xuXG5cbiAgICAgIH1cblxuICAgIH1cblxuXG4gICAgbGV0IGZvY3VzZWQgPSBmYWxzZTtcbiAgICB0aGlzLiRpbnB1dHNOYXZSaWdodC5mb3JFYWNoKGlucHV0TmF2UmlnaHQgPT4ge1xuICAgICAgaWYoIWZvY3VzZWQpe1xuICAgICAgICBsZXQgdmFsaWRJbnB1dHMgPSBpbnB1dE5hdlJpZ2h0LnF1ZXJ5U2VsZWN0b3JBbGwoXCJpbnB1dFwiKTtcbiAgICAgICAgaWYodmFsaWRJbnB1dHMgJiYgdmFsaWRJbnB1dHMubGVuZ3RoID4gMCl7XG4gICAgICAgICAgbGV0IGZpcnN0VmFsaWRJbnB1dCA9IF8uZmlyc3QodmFsaWRJbnB1dHMpO1xuXG4gICAgICAgICAgd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeyBcbiAgICAgICAgICAgIGZpcnN0VmFsaWRJbnB1dC5mb2N1cygpO1xuICAgICAgICAgIH0sIDApO1xuXG4gICAgICAgICAgZm9jdXNlZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KVxuXG4gICAgdGhpcy5zZWxlY3RlZC5mb3JFYWNoKChzLCBpbmRleCkgPT4ge1xuICAgICAgcy5pbmRleCA9IGluZGV4KzE7XG4gICAgfSlcblxuICAgIGlmKHJlZHJhdyl7XG4gICAgICB0aGlzLnJlZHJhd1NlbGVjdGlvbigpXG4gICAgfVxuICB9O1xuXG5cblxuXG4gIHNlbGVjdEJ5SXRlbURhdGUoZGF0ZSwgaXRlbSwgcmVkcmF3ID0gdHJ1ZSl7XG4gICAgaWYoIXRoaXMuaXNTZWxlY3RlZChkYXRlLCBpdGVtKSl7XG4gICAgICBsZXQgcG9zID0gdXRpbHMuZ2V0UG9zaXRpb25CeUl0ZW1EYXRlKHRoaXMuY29uZmlnLCBpdGVtLCBkYXRlKTtcbiAgICAgIHRoaXMuc2VsZWN0KGRhdGUsIGl0ZW0sIHBvcywgcmVkcmF3KTtcbiAgICB9XG4gIH07XG5cblxuICBkZXNlbGVjdEJ5SXRlbURhdGUoZGF0ZSwgaXRlbSwgcmVkcmF3ID0gdHJ1ZSl7XG4gICAgaWYodGhpcy5pc1NlbGVjdGVkKGRhdGUsIGl0ZW0pKXtcbiAgICAgIHRoaXMuZGVzZWxlY3QoZGF0ZSwgaXRlbSwgcmVkcmF3KTtcbiAgICB9XG4gIH07XG5cblxuXG5cblxuXG4gIGNoZWNrQ2xhc3NTaWRlYmFyRXh0ZW5kZWRSaWdodCgpe1xuICAgIGlmKHRoaXMuc2VsZWN0ZWQubGVuZ3RoID4gMCl7XG4gICAgICB0aGlzLiRjYXBpYmFyYS5jbGFzc0xpc3QuYWRkKFwiZXh0ZW5kZWQtcmlnaHRcIik7XG4gICAgfWVsc2V7XG4gICAgICB0aGlzLiRjYXBpYmFyYS5jbGFzc0xpc3QucmVtb3ZlKFwiZXh0ZW5kZWQtcmlnaHRcIik7XG4gICAgfVxuXG4gIH07XG5cblxuXG5cbiAgLyoqXG4gICAqIG9jdWx0YSBkZXRhaWxEYXkgZW4gZWwgZG9tLCB1c2FuZG8gbGEgY2xhc2UgZGQtaGlkZVxuICAgKi9cbiAgaGlkZURldGFpbERheSgpe1xuICAgIHRoaXMuJGVsZW1lbnRzLiRkZXRhaWxEYXkuY2xhc3NMaXN0LmFkZChcImRkLWhpZGVcIik7XG4gIH07XG5cbiAgaGlkZUNvbnRleHRNZW51KCl7XG4gICAgdGhpcy4kZWxlbWVudHMuJGNvbnRleHRNZW51LmNsYXNzTGlzdC5hZGQoXCJjbS1oaWRlXCIpO1xuICAgIHRoaXMuaXNWaXNpYmxlQ29udGV4dE1lbnUgPSBmYWxzZTtcbiAgfTtcblxuXG5cblxuXG4gIC8qKlxuICAgKiBNdWVzdHJhIERldGFpbCBkaWFsb2cgeSBSZWZyZXNjYSBzdSBwb3NpY2lvbiBcbiAgICogdXNhbmRvIGVsIGV2ZW50byBkZWwgbW91c2VcbiAgICpcbiAgICogQHBhcmFtIHtPYmplY3R9IGV2dCAtIGV2ZW50byBkZSBtb3VzZW1vdmUsIHBhcmEgcG9zaWNpb25lcyBlbiBwYW50YWxsYVxuICAgKi9cbiAgcmVmcmVzaERldGFpbERheVBvc2l0aW9uKHBvc2l0aW9uKXtcbiAgICBsZXQgZGF5V2lkdGggPSBwYXJzZUZsb2F0KHV0aWxzLmdldENTU1ZhcmlhYmxlKHRoaXMuY29uZmlnLCBcIi0tZGF5LXdpZHRoXCIpKTtcbiAgICBsZXQgaXRlbUhlaWdodCA9IHBhcnNlRmxvYXQodXRpbHMuZ2V0Q1NTVmFyaWFibGUodGhpcy5jb25maWcsIFwiLS1pdGVtLWhlaWdodFwiKSk7XG5cbiAgICB0aGlzLiRlbGVtZW50cy4kZGV0YWlsRGF5LnN0eWxlLnRvcCAgPSBwb3NpdGlvbi50b3AgKyBcInB4XCI7XG4gICAgdGhpcy4kZWxlbWVudHMuJGRldGFpbERheS5zdHlsZS5sZWZ0ID0gcG9zaXRpb24ubGVmdCArIGRheVdpZHRoICsgXCJweFwiO1xuXG4gICAgbGV0IHlQb3NpdGlvbkNsYXNzID0gXCJoYXMtdG9wLWFycm93XCI7XG4gICAgbGV0IHhQb3NpdGlvbkNsYXNzID0gXCJcIjtcblxuICAgIC8vY29uZGljaW9uIHBhcmEgcHJpbWVyYXMgMiBmaWxhc1xuICAgIGlmKHBvc2l0aW9uLnRvcENsaWVudCA8PSBpdGVtSGVpZ2h0ICoyICl7XG4gICAgICB5UG9zaXRpb25DbGFzcyA9IFwiaGFzLWNlaWwtYXJyb3dcIjtcbiAgICB9ZWxzZSBpZiggcG9zaXRpb24ueVBlcmNlbnQgPiAyMCAmJlxuICAgICAgcG9zaXRpb24ueVBlcmNlbnQgPD0gNTApeyAvL2VudHJlIDIwIHkgNTAgJVxuICAgICAgeVBvc2l0aW9uQ2xhc3MgPSBcImhhcy1taWRkbGUtYXJyb3dcIjtcbiAgICB9ZWxzZSBpZihwb3NpdGlvbi55UGVyY2VudCA+IDUwKXtcbiAgICAgIHlQb3NpdGlvbkNsYXNzID0gXCJoYXMtYm90dG9tLWFycm93XCI7XG4gICAgfVxuXG4gICAgaWYocG9zaXRpb24ueFBlcmNlbnQgPiAzMCApe1xuICAgICAgeFBvc2l0aW9uQ2xhc3MgPSBcImhhcy1yaWdodC1hcnJvd1wiO1xuICAgIH1cblxuICAgIC8vcXVpdGEgZGQtaGlkZSwgc29icmVlc2NyaWJpZW5kbyB0b2RhcyBsYXMgY2xhc2VzXG4gICAgdGhpcy4kZWxlbWVudHMuJGRldGFpbERheS5jbGFzc05hbWUgPSBcImRldGFpbC1kYXkgXCIrIHlQb3NpdGlvbkNsYXNzICsgXCIgXCIgKyB4UG9zaXRpb25DbGFzcztcbiAgfVxuXG5cblxuICAvKipcbiAgICogQ2FwdHVyYSBldmVudG8gY2xpY2sgZW4gYm90b24gcGFyYSBhYnJpciBhcmJvbCwgZW4gc2lkZWJhciBpenF1aWVyZG9cbiAgICpcbiAgICogQHBhcmFtIHtPYmplY3R9IGV2dCAtIG9iamV0byBldmVudG8gY2xpY2tcbiAgICovXG4gIGNsaWNrTmF2TGVmdFRyZWVJY29uKCl7XG4gICAgICB0YWJsZUVsZW1lbnRzLnJlZHJhd0JhY2tncm91bmQodGhpcy5jb25maWcsIHRoaXMuJGVsZW1lbnRzLiRiYWNrZ3JvdW5kKTtcbiAgICAgIHRhYmxlRWxlbWVudHMucmVwb3NpdGlvbkZsb2F0Qm94KHRoaXMuY29uZmlnLCB0aGlzLiRlbGVtZW50cy4kZmxvYXRCb3hDb250YWluZXIgKTtcbiAgICAgIHRhYmxlRWxlbWVudHMucmVkcmF3UGxvdEhvcml6b250YWxDb250YWluZXIodGhpcy5jb25maWcsIHRoaXMuJGVsZW1lbnRzLiRwbG90SG9yaXpvbnRhbENvbnRhaW5lcik7XG4gIH1cblxuXG5cbiAgLyoqXG4gICAqIENhcHR1cmEgZXZlbnRvIG1vdXNlb3ZlciBzb2JyZSBlbGVtZW50byBmbG9hdEJveFxuICAgKiB1c2FkYSBwYXJhIG1vc3RyYXIgZGV0YWxsZSBkZSBkaWEvaXRlbSBkZWwgZmxvYXRib3hcbiAgICovXG4gIG1vdXNlT3ZlckZsb2F0Qm94KGV2dCwgZm9yY2Upe1xuICAgICAgbGV0IGl0ZW0gICAgPSBldnQuZGV0YWlsLml0ZW07XG4gICAgICBsZXQgZGF0YURheSA9IGV2dC5kZXRhaWwuZGF0YTtcblxuICAgICAgLy92ZXJpZmljYSBxdWUgc2VhbiBkaWFzIGRpc3RpbnRvcywgY29tcGFyYW5kb2xvIGNvbiBlbCBhbnRlcmlvcixcbiAgICAgIC8vIHBhcmEgbm8gY3JlYXIgbnVldmFtZW50ZSBlbCBtaXNtbyBkZXRhaWwtZGF5LCBjb24gbG9zIG1pc21vcyBkYXRvc1xuICAgICAgaWYoZGF0YURheSAhPT0gdGhpcy5sYXN0RGF0YURheSB8fCBmb3JjZSl7XG4gICAgICAgIGxldCBuZXdERENvbnRlbnRTdHJpbmcgPSB0YWJsZUVsZW1lbnRzLnJlZHJhd0RldGFpbERheSh0aGlzLmNvbmZpZywgaXRlbSwgZGF0YURheSk7XG4gICAgICAgIGlmKG5ld0REQ29udGVudFN0cmluZyl7XG4gICAgICAgICAgdGhpcy4kZWxlbWVudHMuJGRldGFpbERheS5pbm5lckhUTUwgPSBuZXdERENvbnRlbnRTdHJpbmc7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5sYXN0RGF0YURheSA9IGRhdGFEYXk7XG4gICAgICB9XG4gIH1cblxuICBjbGlja0RhdGVIZWFkZXIoZXZ0KXtcbiAgICBsZXQgZGF0ZSA9IGV2dC5kZXRhaWwuZGF0ZTtcbiAgICB0aGlzLnNlbGVjdGVkID0gW107XG4gICAgdGhpcy5jb25maWcuZGF0YS5mb3JFYWNoKHBhcmVudCA9PiB7XG4gICAgICBwYXJlbnQuY2hpbGRyZW4uZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgdGhpcy5zZWxlY3RCeUl0ZW1EYXRlKGRhdGUsIGl0ZW0sIGZhbHNlKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIHRoaXMucmVkcmF3U2VsZWN0aW9uKCk7XG4gIH1cblxuICAvKipcbiAgICogQ2FwdHVyYSBldmVudG8gd2luZG93IHJlc2l6ZVxuICAgKiBwYXJhIHZlcmlmaWNhciBzaSBlcyBtb2JpbGUgbyBub1xuICAgKi9cbiAgb25XaW5kb3dSZXNpemUoKXtcbiAgICBsZXQgb2xkVmFsdWUgPSB0aGlzLmlzTW9iaWxlO1xuICAgIGxldCBuZXdWYWx1ZSA9IHV0aWxzLmNoZWNrSXNNb2JpbGUoKTtcbiAgICBpZihvbGRWYWx1ZSAhPSBuZXdWYWx1ZSApe1xuICAgICAgdGhpcy5pc01vYmlsZSA9IG5ld1ZhbHVlO1xuICAgICAgdGhpcy50b2dnbGVTaWRlYmFyTW9iaWxlKCk7XG4gICAgICB0aGlzLnNldEFsbENTU1ZhcmlhYmxlcygpO1xuICAgICAgdGhpcy5yZWRyYXcoeyBmbG9hdEJveDp0cnVlLCBuYXZMZWZ0OnRydWUgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENhbWJpYSBzaWRlYmFyIHBhcmEgbW9iaWxlLCBzZWd1biB2YXJpYWJsZSB0aGlzLmlzTW9iaWxlXG4gICAqL1xuICB0b2dnbGVTaWRlYmFyTW9iaWxlKCl7XG4gICAgICBpZih0aGlzLmlzTW9iaWxlKXtcbiAgICAgICAgdGhpcy5zZXRTaG93TmF2SW5pdGlhbChmYWxzZSk7XG4gICAgICAgIHRoaXMuc2V0U2hvd05hdkV4dGVuZGVkKGZhbHNlKTtcbiAgICAgICAgdGhpcy5zZXRTaG93TmF2QnV0dG9ucyhmYWxzZSk7XG4gICAgICAgIHRoaXMuc2V0RWRpdGFibGUoZmFsc2UpO1xuICAgICAgICB0aGlzLnNldFNlbGVjdGFibGUoZmFsc2UpO1xuICAgICAgfWVsc2V7XG4gICAgICAgIHRoaXMuc2V0U2hvd05hdkluaXRpYWwodHJ1ZSk7XG4gICAgICAgIHRoaXMuc2V0U2hvd05hdkV4dGVuZGVkKGZhbHNlKTtcbiAgICAgICAgdGhpcy5zZXRTaG93TmF2QnV0dG9ucyh0cnVlKTtcbiAgICAgICAgdGhpcy5zZXRFZGl0YWJsZSh0cnVlKTtcbiAgICAgICAgdGhpcy5zZXRTZWxlY3RhYmxlKHRydWUpO1xuICAgICAgfVxuICB9XG5cbiAgc2V0RWRpdGFibGUobmV3RWRpdGFibGUpe1xuICAgIGlmKHRoaXMuY29uZmlnLnRpbWVsaW5lLmVkaXRhYmxlICE9IG5ld0VkaXRhYmxlKXtcbiAgICAgIHRoaXMuY29uZmlnLnRpbWVsaW5lLmVkaXRhYmxlID0gbmV3RWRpdGFibGU7XG4gICAgICB0aGlzLnJlZHJhdyh7bmF2TGVmdDp0cnVlLCBoZWFkZXI6dHJ1ZX0pO1xuICAgIH1cbiAgfVxuXG4gIHNldFNlbGVjdGFibGUobmV3U2VsZWN0YWJsZSl7XG4gICAgaWYodGhpcy5jb25maWcudGltZWxpbmUuc2VsZWN0YWJsZSAhPSBuZXdTZWxlY3RhYmxlKXtcbiAgICAgIHRoaXMuY29uZmlnLnRpbWVsaW5lLnNlbGVjdGFibGUgPSBuZXdTZWxlY3RhYmxlO1xuICAgICAgdGhpcy5jbGVhbk11bHRpSW5wdXQoKTtcbiAgICB9XG4gIH1cblxuXG4gIC8qKlxuICAgKiBBZ3JlZ2EgZXZlbnRvcyBhIGxvcyBlbGVtZW50b3MgZGVsIGRvbSBkZSBsYSBwbGFuaWxsYVxuICAgKiB1c2FuZG8gZWwgb2JqZWN0byAkY2FwaWJhcmFcbiAgICovXG4gIGFkZEV2ZW50cygpe1xuICAgIHRoaXMuJGNhcGliYXJhLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiICAgICAgICAgICAgICAgICwgdGhpcy5oaWRlQ29udGV4dE1lbnUuYmluZCh0aGlzKSk7XG4gICAgdGhpcy4kY2FwaWJhcmEuYWRkRXZlbnRMaXN0ZW5lcihcImNvbnRleHRtZW51XCIgICAgICAgICAgLCB0aGlzLnJpZ2h0Q2xpY2tPbkNhcGliYXJhLmJpbmQodGhpcykpO1xuICAgIHRoaXMuJGNhcGliYXJhLmFkZEV2ZW50TGlzdGVuZXIoXCJ0b2dnbGVEYXJrXCIgICAgICAgICAgICwgdGhpcy50b2dnbGVEYXJrLmJpbmQodGhpcykpO1xuICAgIHRoaXMuJGNhcGliYXJhLmFkZEV2ZW50TGlzdGVuZXIoXCJ0b2dnbGVIZWFkZXJcIiAgICAgICAgICwgdGhpcy50b2dnbGVIZWFkZXIuYmluZCh0aGlzKSk7XG4gICAgdGhpcy4kY2FwaWJhcmEuYWRkRXZlbnRMaXN0ZW5lcihcInRvZ2dsZVNpZGViYXJcIiAgICAgICAgLCB0aGlzLnRvZ2dsZVNpZGViYXIuYmluZCh0aGlzKSk7XG4gICAgdGhpcy4kY2FwaWJhcmEuYWRkRXZlbnRMaXN0ZW5lcihcInRvZ2dsZVNpZGViYXJSaWdodFwiICAgLCB0aGlzLnRvZ2dsZVNpZGViYXJSaWdodC5iaW5kKHRoaXMpKTtcbiAgICB0aGlzLiRjYXBpYmFyYS5hZGRFdmVudExpc3RlbmVyKFwic2F2ZU11bHRpSW5wdXRcIiAgICAgICAsIHRoaXMuc2F2ZUlucHV0c05hdlJpZ2h0LmJpbmQodGhpcykpO1xuICAgIHRoaXMuJGNhcGliYXJhLmFkZEV2ZW50TGlzdGVuZXIoXCJjYW5jZWxNdWx0aUlucHV0XCIgICAgICwgdGhpcy5jYW5jZWxNdWx0aUlucHV0LmJpbmQodGhpcykpO1xuICAgIHRoaXMuJGNhcGliYXJhLmFkZEV2ZW50TGlzdGVuZXIoXCJvdmVyTmF2SXRlbVwiICAgICAgICAgICwgdGhpcy5vdmVyTmF2SXRlbS5iaW5kKHRoaXMpKTtcbiAgICB0aGlzLiRjYXBpYmFyYS5hZGRFdmVudExpc3RlbmVyKFwibGVhdmVOYXZJdGVtXCIgICAgICAgICAsIHRoaXMubGVhdmVOYXZJdGVtLmJpbmQodGhpcykpO1xuICAgIHRoaXMuJGNhcGliYXJhLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja05hdkxlZnRUcmVlSWNvblwiICwgdGhpcy5jbGlja05hdkxlZnRUcmVlSWNvbi5iaW5kKHRoaXMpKTtcbiAgICB0aGlzLiRjYXBpYmFyYS5hZGRFdmVudExpc3RlbmVyKFwibW91c2VPdmVyRmxvYXRCb3hcIiAgICAsIHRoaXMubW91c2VPdmVyRmxvYXRCb3guYmluZCh0aGlzKSk7XG4gICAgdGhpcy4kY2FwaWJhcmEuYWRkRXZlbnRMaXN0ZW5lcihcInNlbGVjdFRhYkhlYWRlclwiICAgICAgLCBlID0+IHsgdGhpcy5zZWxlY3RUYWIoZS5kZXRhaWwudGFiKTsgfSk7XG5cbiAgICB0aGlzLiRlbGVtZW50cy4kZmxvYXRCb3hDb250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlbW92ZVwiLCB0aGlzLm1vdXNlTW92ZU9uRmxleEJveENvbnRhaW5lci5iaW5kKHRoaXMpKTtcbiAgICB0aGlzLiRlbGVtZW50cy4kZmxvYXRCb3hDb250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlbGVhdmVcIiwgdGhpcy5tb3VzZUxlYXZlT25GbG9hdEJveENvbnRhaW5lci5iaW5kKHRoaXMpKTtcblxuICAgIHRoaXMuJGVsZW1lbnRzLiR0YWJsZS5hZGRFdmVudExpc3RlbmVyKFwibW91c2Vtb3ZlXCIsIHRoaXMubW91c2VNb3ZlT25UYWJsZS5iaW5kKHRoaXMpICk7XG4gICAgdGhpcy4kZWxlbWVudHMuJHRhYmxlLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCB0aGlzLmNsaWNrT25UYWJsZS5iaW5kKHRoaXMpKTtcbiAgICB0aGlzLiRlbGVtZW50cy4kdGFibGUuYWRkRXZlbnRMaXN0ZW5lcihcImNvbnRleHRtZW51XCIsIHRoaXMucmlnaHRDbGlja09uVGFibGUuYmluZCh0aGlzKSk7XG5cbiAgICB0aGlzLiRlbGVtZW50cy4kY29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoXCJzY3JvbGxcIiwgdGhpcy5oaWRlQ29udGV4dE1lbnUuYmluZCh0aGlzKSk7XG5cbiAgICB0aGlzLiRlbGVtZW50cy4kY29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja0RhdGVcIiwgdGhpcy5jbGlja0RhdGVIZWFkZXIuYmluZCh0aGlzKSk7XG5cbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJyx0aGlzLm9uV2luZG93UmVzaXplLmJpbmQodGhpcykpO1xuXG4gIH1cblxuXG5cbiAgLyoqXG4gICAqIEZ1bmNpb24gcGFyYSByZWRpYnVqYXIgcGFydGVzIGRlIGxhIHBsYW5pbGxhLCBpbmRpY2FkbyBzZWd1biBwYXJhbWV0cm9cbiAgICpcbiAgICogICAgb3B0aW9ucyA6IHtcbiAgICogICAgICAgICAgICBmbG9hdEJveDogQm9vbGVhbixcbiAgICogICAgICAgICAgICBwbG90czogQm9vbGVhbixcbiAgICogICAgICAgICAgICBoZWFkZXI6IEJvb2xlYW4sXG4gICAqICAgICAgICAgICAgbmF2TGVmdDogQm9vbGVhbixcbiAgICogICAgICAgICAgICBuYXZSaWdodDogQm9vbGVhbixcbiAgICogICAgfVxuICAgKlxuICAgKlxuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0aW9ucyAtIG9iamVjdG8gZGUgY29uZmlndXJhY2lvblxuICAgKi9cbiAgcmVkcmF3KG9wdGlvbnMpe1xuXG4gICAgaWYob3B0aW9ucy5mbG9hdEJveCl7XG4gICAgICB0YWJsZUVsZW1lbnRzLnJlZHJhd0Zsb2F0Qm94KHRoaXMuY29uZmlnLCB0aGlzLnRhYlNlbGVjdGVkLCB0aGlzLiRlbGVtZW50cy4kZmxvYXRCb3hDb250YWluZXIpO1xuICAgICAgdGFibGVFbGVtZW50cy5yZWRyYXdCYWNrZ3JvdW5kKHRoaXMuY29uZmlnLCB0aGlzLiRlbGVtZW50cy4kYmFja2dyb3VuZCk7XG4gICAgICB0YWJsZUVsZW1lbnRzLnJlZHJhd1Bsb3RWZXJ0aWNhbENvbnRhaW5lcih0aGlzLmNvbmZpZywgdGhpcy4kZWxlbWVudHMuJHBsb3RWZXJ0aWNhbENvbnRhaW5lcik7XG4gICAgICB0YWJsZUVsZW1lbnRzLnJlZHJhd1Bsb3RIb3Jpem9udGFsQ29udGFpbmVyKHRoaXMuY29uZmlnLCB0aGlzLiRlbGVtZW50cy4kcGxvdEhvcml6b250YWxDb250YWluZXIpO1xuICAgICAgdGFibGVFbGVtZW50cy5yZWRyYXdUb2RheUxpbmUodGhpcy5jb25maWcsIHRoaXMuJGVsZW1lbnRzLiR0b2RheUxpbmUpO1xuICAgIH1cblxuICAgIGlmKG9wdGlvbnMucGxvdHMpe1xuICAgICAgdGFibGVFbGVtZW50cy5yZWRyYXdQbG90VmVydGljYWxDb250YWluZXIodGhpcy5jb25maWcsIHRoaXMuJGVsZW1lbnRzLiRwbG90VmVydGljYWxDb250YWluZXIpO1xuICAgICAgdGFibGVFbGVtZW50cy5yZWRyYXdQbG90SG9yaXpvbnRhbENvbnRhaW5lcih0aGlzLmNvbmZpZywgdGhpcy4kZWxlbWVudHMuJHBsb3RIb3Jpem9udGFsQ29udGFpbmVyKTtcbiAgICB9XG5cbiAgICBpZihvcHRpb25zLmhlYWRlcil7XG4gICAgICB0YWJsZUVsZW1lbnRzLnJlZHJhd0hlYWRlcih0aGlzLmNvbmZpZywgdGhpcy4kZWxlbWVudHMuJGhlYWRlcik7XG4gICAgICBpZih0aGlzLmNvbmZpZy50aW1lbGluZS5oZWFkZXIuZXh0ZW5kLmVuYWJsZWQgIT09IGZhbHNlKXtcbiAgICAgICAgbGV0ICRoZWFkZXJFeHRlbmRlZCA9IHRhYmxlRWxlbWVudHMuY3JlYXRlSGVhZGVyRXh0ZW5kZWQodGhpcy5jb25maWcpO1xuICAgICAgICBpZigkaGVhZGVyRXh0ZW5kZWQpe1xuICAgICAgICAgIHRoaXMuJGVsZW1lbnRzLiRoZWFkZXIuYXBwZW5kKCRoZWFkZXJFeHRlbmRlZCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZihvcHRpb25zLmRldGFpbERheSl7XG4gICAgICB0aGlzLmhpZGVEZXRhaWxEYXkoKTtcbiAgICAgIHRoaXMubGFzdERhdGFEYXkgPSBudWxsO1xuICAgIH1cblxuICAgIGlmKG9wdGlvbnMubmF2TGVmdCl7XG4gICAgICB0YWJsZUVsZW1lbnRzLnJlZHJhd05hdkxlZnQodGhpcy4kZWxlbWVudHMuJG5hdkxlZnQsIHRoaXMuY29uZmlnLCB0aGlzLnRhYlNlbGVjdGVkKTtcbiAgICAgIHN0eWxlVXRpbHMuc2V0TmF2U3R5bGUodGhpcy5jb25maWcpO1xuICAgICAgc3R5bGVVdGlscy5zZXROYXZMZWZ0SW5pdGlhbFN0eWxlKHRoaXMuY29uZmlnLCB0aGlzLmlzU2hvd05hdkluaXRpYWwsIHRoaXMudGFiU2VsZWN0ZWQpO1xuICAgICAgc3R5bGVVdGlscy5zZXROYXZMZWZ0RXh0ZW5kZWRTdHlsZSh0aGlzLmNvbmZpZywgdGhpcy5pc1Nob3dOYXZFeHRlbmRlZCwgdGhpcy50YWJTZWxlY3RlZCk7XG4gICAgfVxuXG4gICAgaWYob3B0aW9ucy5jb3JuZXJMZWZ0KXtcbiAgICAgIHRhYmxlRWxlbWVudHMucmVkcmF3Q29ybmVyKHRoaXMuJGVsZW1lbnRzLiRjb3JuZXIsIHRoaXMuY29uZmlnLCB0aGlzLnRhYlNlbGVjdGVkKTtcbiAgICB9XG5cbiAgICBpZihvcHRpb25zLm5hdlJpZ2h0KXtcbiAgICAgICAgbGV0IHtpbnB1dHMsIGVsZW1lbnR9ICAgID0gdGFibGVFbGVtZW50cy5yZWRyYXdOYXZSaWdodCh0aGlzLmNvbmZpZywgdGhpcy4kZWxlbWVudHMuJG5hdlJpZ2h0LCB0aGlzLnRhYlNlbGVjdGVkKTtcbiAgICAgICAgdGhpcy4kZWxlbWVudHMuJG5hdlJpZ2h0ID0gZWxlbWVudDtcbiAgICAgICAgdGhpcy4kaW5wdXRzTmF2UmlnaHQgICAgID0gaW5wdXRzO1xuICAgIH1cblxuICB9XG5cblxuICAvKipcbiAgICogTXVldmUgZWwgU2Nyb2xsIGRlIGxhIHBsYW5pbGxhIGFsIGluaWNpb1xuICAgKi9cbiAgc2Nyb2xsVG9TdGFydCgpe1xuICAgIHRoaXMuJGVsZW1lbnRzLiRjb250YWluZXIuc2Nyb2xsTGVmdCA9IDA7XG4gIH1cblxuICAvKipcbiAgICogTXVldmUgZWwgU2Nyb2xsIGRlIGxhIHBsYW5pbGxhIGFsIGluaWNpb1xuICAgKi9cbiAgc2Nyb2xsVG9FbmQoKXtcbiAgICB0aGlzLiRlbGVtZW50cy4kY29udGFpbmVyLnNjcm9sbExlZnQgPSB0aGlzLiRlbGVtZW50cy4kY29udGFpbmVyLnNjcm9sbFdpZHRoO1xuICB9XG5cbiAgLyoqXG4gICAqIE11ZXZlIGVsIFNjcm9sbCBkZSBsYSBwbGFuaWxsYSBhIGxhIHRlcmNlcmEgcGFydGVcbiAgICogVE9ETyBtZWpvcmFyIGxvZ2ljYSBkZSBlc3RhIGZ1bmNpb25cbiAgICovXG4gIHNjcm9sbFRvTWlkZGxlKCl7XG4gICAgdGhpcy4kZWxlbWVudHMuJGNvbnRhaW5lci5zY3JvbGxMZWZ0ID0gdGhpcy4kZWxlbWVudHMuJGNvbnRhaW5lci5zY3JvbGxXaWR0aCAvIDM7XG4gIH1cblxuXG4gIGZvY3VzT25GbG9hdEJveCh7cG9zLCBldnR9KXtcbiAgICBpZih0aGlzLmlzTW9iaWxlKXtcbiAgICAgIGxldCBjb250YWluZXJXaWR0aCA9IHRoaXMuJGVsZW1lbnRzLiRjb250YWluZXIuY2xpZW50V2lkdGg7XG4gICAgICBsZXQgZGF5V2lkdGggPSBwYXJzZUZsb2F0KHV0aWxzLmdldENTU1ZhcmlhYmxlKHRoaXMuY29uZmlnLCBcIi0tZGF5LXdpZHRoXCIpKTtcbiAgICAgIGxldCBuYXZXaWR0aCA9IHBhcnNlRmxvYXQodXRpbHMuZ2V0Q1NTVmFyaWFibGUodGhpcy5jb25maWcsIFwiLS1uYXYtd2lkdGhcIikpO1xuICAgICAgbGV0IGxlZnQgPSBwb3MubGVmdCAtIGNvbnRhaW5lcldpZHRoICsgMS41ICogZGF5V2lkdGggKyBuYXZXaWR0aDtcblxuICAgICAgLy9sZXQgY29udGFpbmVySGVpZ2h0ID0gdGhpcy4kZWxlbWVudHMuJGNvbnRhaW5lci5jbGllbnRIZWlnaHQ7XG4gICAgICBsZXQgaXRlbUhlaWdodCA9IHBhcnNlRmxvYXQodXRpbHMuZ2V0Q1NTVmFyaWFibGUodGhpcy5jb25maWcsIFwiLS1pdGVtLWhlaWdodFwiKSk7XG4gICAgICAvL2xldCBoZWFkZXJIZWlnaHQgPSBwYXJzZUZsb2F0KHV0aWxzLmdldENTU1ZhcmlhYmxlKHRoaXMuY29uZmlnLCBcIi0taGVhZGVyLWhlaWdodFwiKSk7XG4gICAgICBsZXQgdG9wID0gcG9zLnRvcCAtIDAuNSAqIGl0ZW1IZWlnaHQ7XG5cbiAgICAgIGxldCBwb3NpdGlvbiA9IHV0aWxzLmV2ZW50VG9Qb3NpdGlvbih0aGlzLmNvbmZpZywgZXZ0LCB0aGlzLiRlbGVtZW50cy4kdGFibGUpO1xuICAgICAgdGhpcy5yZWZyZXNoRGV0YWlsRGF5UG9zaXRpb24oe1xuICAgICAgICAuLi5wb3NpdGlvbixcbiAgICAgICAgdG9wQ2xpZW50IDogcG9zaXRpb24ueUlubmVyUGVyY2VudCA+PSA3MCA/IHBvc2l0aW9uLnRvcENsaWVudCA6IDAsIC8vIGZ1ZXJ6YSBwb3NpY2lvbiBkZSBhcnJvdyBlbiBkZXRhaWxkYXlcbiAgICAgICAgeFBlcmNlbnQgIDogcG9zaXRpb24ueCA8IDQgPyAwOiAxMDAgIC8vIGZ1ZXJ6YSBhcnJvdyByaWdodFxuICAgICAgfSk7XG4gICAgICB0aGlzLiRlbGVtZW50cy4kY29udGFpbmVyLnNjcm9sbCh7XG4gICAgICAgIHRvcCwgbGVmdCxcbiAgICAgICAgYmVoYXZpb3I6ICdzbW9vdGgnXG4gICAgICB9KTtcblxuICAgIH1cbiAgfVxuXG5cbiAgLyoqXG4gICAqIEZpamEgbGFzIHZhcmlhYmxlcyBkZSBDU3Mgc2VndW4gQ29uZmlnXG4gICAqL1xuICBzZXRBbGxDU1NWYXJpYWJsZXMoKXtcbiAgICBsZXQgY29uZmlnID0gdGhpcy5jb25maWc7XG4gICAgLy9zdHlsZVV0aWxzLmNsZWFuU3R5bGUoY29uZmlnKTtcbiAgICBzdHlsZVV0aWxzLnNldEhlYWRlclN0eWxlKGNvbmZpZyk7XG4gICAgc3R5bGVVdGlscy5zZXROYXZTdHlsZShjb25maWcpO1xuICAgIHN0eWxlVXRpbHMuc2V0TmF2TGVmdEluaXRpYWxTdHlsZShjb25maWcsIHRoaXMuaXNTaG93TmF2SW5pdGlhbCwgdGhpcy50YWJTZWxlY3RlZCk7XG4gICAgc3R5bGVVdGlscy5zZXROYXZMZWZ0RXh0ZW5kZWRTdHlsZShjb25maWcsIHRoaXMuaXNTaG93TmF2RXh0ZW5kZWQsIHRoaXMudGFiU2VsZWN0ZWQpO1xuICAgIHN0eWxlVXRpbHMuc2V0TmF2TGVmdEJ1dHRvbnNTdHlsZShjb25maWcsIHRoaXMuaXNTaG93TmF2QnV0dG9ucywgdGhpcy50YWJTZWxlY3RlZCk7XG4gICAgc3R5bGVVdGlscy5zZXRUYWJsZVN0eWxlKGNvbmZpZyk7XG4gIH1cblxufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBRUE7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQU9BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBZkE7QUFrQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBUUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUpBO0FBTUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBSEE7QUFRQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSkE7QUFNQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUFIQTtBQVdBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQXpFQTtBQUNBO0FBMkVBO0FBQ0E7QUFTQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFOQTtBQUNBO0FBUUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUhBO0FBUUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBSkE7QUFIQTtBQVdBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFNQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFPQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFKQTtBQU9BO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBR0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFFQTtBQUVBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFBQTtBQUNBO0FBQ0E7QUFKQTtBQUtBO0FBQ0E7QUFBQTtBQUNBO0FBRkE7QUFLQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUE5cUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/lib/capibara.js\n");
|
|
187
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Capibara\", function() { return Capibara; });\n/* harmony import */ var _util_domUtils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util/domUtils */ \"./src/util/domUtils.js\");\n/* harmony import */ var _util_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/utils */ \"./src/util/utils.js\");\n/* harmony import */ var _util_dateUtils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/dateUtils */ \"./src/util/dateUtils.js\");\n/* harmony import */ var _util_tableElements__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/tableElements */ \"./src/util/tableElements.js\");\n/* harmony import */ var _util_styleUtils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/styleUtils */ \"./src/util/styleUtils.js\");\n\n\n\n\n\n/**\n * Capibara, planilla para despliegue de datos por fecha como GANTT\n * orientado inicialmente a datos diarios de items\n *\n * @author Patricio. M. Rojas. <patricio@irricrops.com>\n */\n\nclass Capibara {\n /**\n * @constructor\n * Instancia variables de planilla Capibara, con configuracion\n * Crea el elemento contenedor {containerElement} segun selector\n *\n * @param {Object} attributes - atributos que se usaran al iniciar la planilla\n * @param {Object} attributes.config - Configuracion de planilla\n */\n constructor({\n config\n }) {\n if (config == null) console.error(\"config no econtrado\");\n this.containerElement = document.querySelector(config.selector);\n if (this.containerElement == null) console.error(\"Elemento dom segun config.selector, no encontrado\");\n this.initialized = false;\n this.$capibara = null;\n this.$elements = {};\n this.tabSelected = null;\n this.$inputsNavRight = [];\n this.selected = [];\n this.config = config;\n this.lastDataDay = null;\n this.isShowNavExtended = false;\n this.isShowNavInitial = true;\n this.isShowNavButtons = true;\n this.isMobile = false;\n this.lastMousePosition = null;\n this.isVisibleContextMenu = false;\n }\n /**\n * Inicializa Planilla:\n * - vacia variables necesarias\n * - crea planilla llamando a drawTable\n * - Agrega eventos a planilla\n * - mueve scroll al medio de la tabla\n */\n\n\n init() {\n this.tabSelected = null;\n this.$capibara = null;\n this.$elements = {};\n this.$inputsNavRight = [];\n this.selected = [];\n this.lastDataDay = null;\n this.isMobile = _util_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].checkIsMobile();\n this.isVisibleContextMenu = false;\n this.setAllCSSVariables();\n this.drawTable();\n this.addEvents();\n this.scrollToMiddle();\n this.toggleSidebarMobile();\n this.initialized = true;\n }\n /**\n * Cambia configuracion de planilla\n *\n * @param {Object} config - Configuracion nueva para planilla\n */\n\n\n setConfig(config) {\n this.config = config;\n }\n /**\n * Crea la planilla\n * agregando todos los elementos en orden dentro\n *\n * @return { DomElement } $capibara - elemento del Dom que contiene toda la planilla\n */\n\n\n drawTable() {\n let config = this.config;\n let initialTab = config.timeline.tabs[0];\n let $capibara = _util_tableElements__WEBPACK_IMPORTED_MODULE_3__[\"default\"].createAgTable(config);\n let $corner = _util_tableElements__WEBPACK_IMPORTED_MODULE_3__[\"default\"].createCorner(config, initialTab);\n let $cornerRight = _util_tableElements__WEBPACK_IMPORTED_MODULE_3__[\"default\"].createCornerRight(config);\n let $headerTop = _util_tableElements__WEBPACK_IMPORTED_MODULE_3__[\"default\"].createHeaderTop(config);\n let $header = _util_tableElements__WEBPACK_IMPORTED_MODULE_3__[\"default\"].createHeader(config);\n let $todayLine = _util_tableElements__WEBPACK_IMPORTED_MODULE_3__[\"default\"].createTodayLine(config);\n let $headerExtended = _util_tableElements__WEBPACK_IMPORTED_MODULE_3__[\"default\"].createHeaderExtended(config);\n let $navLeft = _util_tableElements__WEBPACK_IMPORTED_MODULE_3__[\"default\"].createNavLeft(config);\n let $cornerFooter = _util_tableElements__WEBPACK_IMPORTED_MODULE_3__[\"default\"].createCornerFooter(config);\n let $footer = _util_tableElements__WEBPACK_IMPORTED_MODULE_3__[\"default\"].createFooter(config);\n let $floatBoxContainer = _util_tableElements__WEBPACK_IMPORTED_MODULE_3__[\"default\"].createFloatBox(config, initialTab);\n let $selectContainer = _util_tableElements__WEBPACK_IMPORTED_MODULE_3__[\"default\"].createSelectBoard(config);\n let $plotVerticalContainer = _util_tableElements__WEBPACK_IMPORTED_MODULE_3__[\"default\"].createPlotVerticalContainer(config);\n let $plotHorizontalContainer = _util_tableElements__WEBPACK_IMPORTED_MODULE_3__[\"default\"].createPlotHorizontalContainer(config);\n let $detailDay = _util_tableElements__WEBPACK_IMPORTED_MODULE_3__[\"default\"].createDetailDay(config, config.data[0].children[0]);\n let {\n elem: $contextMenu,\n isVisible\n } = _util_tableElements__WEBPACK_IMPORTED_MODULE_3__[\"default\"].createContextMenu({\n config\n });\n this.isVisibleContextMenu = isVisible;\n let $navRight, inputs;\n ({\n element: $navRight,\n inputs\n } = _util_tableElements__WEBPACK_IMPORTED_MODULE_3__[\"default\"].createNavRight(config));\n let start = new Date(config.timeline.start);\n let end = new Date(config.timeline.end); //se agrega 1 dia (en milisegundos), ya que la fecha de termino es inclusiva\n\n end.setTime(end.getTime() + _util_dateUtils__WEBPACK_IMPORTED_MODULE_2__[\"default\"].dayInMilliseconds);\n let diff_time = end.getTime() - start.getTime();\n let days = diff_time / _util_dateUtils__WEBPACK_IMPORTED_MODULE_2__[\"default\"].dayInMilliseconds;\n let width = days * config.timeline.day.width;\n let $background = _util_tableElements__WEBPACK_IMPORTED_MODULE_3__[\"default\"].createBackground(config);\n let $container = _util_domUtils__WEBPACK_IMPORTED_MODULE_0__[\"default\"].createElement(\"div\", {\n className: \"container-tl\"\n });\n let $dayMouseOver = _util_domUtils__WEBPACK_IMPORTED_MODULE_0__[\"default\"].createElement(\"div\", {\n className: \"day-mouse-over\"\n });\n let $table = _util_domUtils__WEBPACK_IMPORTED_MODULE_0__[\"default\"].createElement(\"div\", {\n className: \"table\"\n }, {\n style: {\n width: width\n }\n });\n $table.appendChild($background);\n $table.appendChild($dayMouseOver);\n $table.appendChild($detailDay);\n $table.appendChild($selectContainer);\n $table.appendChild($floatBoxContainer);\n\n if ($headerExtended) {\n $header.appendChild($headerExtended);\n }\n\n $container.appendChild($header);\n $container.appendChild($plotVerticalContainer);\n $container.appendChild($plotHorizontalContainer);\n $container.appendChild($todayLine);\n $container.appendChild($navLeft);\n $container.appendChild($table);\n if ($cornerFooter) $container.appendChild($cornerFooter);\n if ($footer) $container.appendChild($footer);\n $capibara.appendChild($headerTop);\n $capibara.appendChild($corner);\n $capibara.appendChild($cornerRight);\n $capibara.appendChild($container);\n $capibara.appendChild($navRight);\n if ($contextMenu) $capibara.appendChild($contextMenu);\n this.$inputsNavRight = inputs;\n this.$capibara = $capibara;\n this.$elements = {\n $headerTop,\n $detailDay,\n $contextMenu,\n $floatBoxContainer,\n $selectContainer,\n $table,\n $background,\n $plotVerticalContainer,\n $plotHorizontalContainer,\n $dayMouseOver,\n $container,\n $navRight,\n $navLeft,\n $header,\n $todayLine,\n $corner\n };\n this.containerElement.innerHTML = \"\";\n this.containerElement.appendChild($capibara);\n this.selectTab(initialTab);\n return $capibara;\n }\n /**\n * Cambia el modo oscuro, segun el estado actual\n */\n\n\n toggleDark() {\n this.setDark(!Boolean(this.config.timeline.dark));\n }\n /**\n * Cambia el modo oscuro, segun parametroo\n *\n * @param {Boolean} [isDark = false] - indica si se activa el modo oscuro o no\n */\n\n\n setDark(isDark = false) {\n let darkClassName = \"dark-theme\";\n this.config.timeline.dark = isDark;\n\n if (isDark) {\n this.$capibara.classList.add(darkClassName);\n } else {\n this.$capibara.classList.remove(darkClassName);\n }\n }\n /**\n * Cambia el tema de color secundario, segun parametro\n * -Quita todos los posibles colores de la planilla, obteniendolos de Tabs\n * -Agrega el color enviado por parametro como clase del domElement $capibara\n *\n * @param {String} color - color, como nombre de clase, para agregar \n */\n\n\n changeColorTheme(color) {\n this.config.timeline.tabs.forEach(tab => {\n this.$capibara.classList.remove(tab.color);\n });\n this.$capibara.classList.add(color);\n }\n /**\n * Selecciona tab en planilla\n * si redraw == true , redibuja navRight y floatBox\n * ya que son inputs y esteticas personalizadas por Tab\n *\n * @param {Object} tab - tab, obtenida desde configuracion\n * @param {Boolean} [redraw=true] - opcion de redibujado\n */\n\n\n selectTab(tab, redraw = true) {\n //let $tab = this.$capibara.querySelector('.tab[input-key=\"'+tab.id+'\"]');\n if (tab) {\n this.tabSelected = tab;\n /*\n this.$capibara.querySelector(\".tabs-select\").value = tab.id;\n this.$capibara.querySelectorAll(\".tab\").forEach(t => {t.classList.remove(\"active\")});\n $tab.classList.add(\"active\");\n */\n\n this.cleanMultiInput();\n\n if (redraw) {\n this.redraw({\n headerTop: true,\n cornerLeft: true,\n navLeft: true,\n navRight: true,\n floatBox: true\n });\n }\n\n this.changeColorTheme(tab.color);\n this.$capibara.dispatchEvent(new CustomEvent(\"selectTab\", {\n bubbles: true,\n cancelable: false,\n detail: {\n tabSelected: this.tabSelected\n }\n }));\n } else {\n console.error(\"tab no encontrada\");\n }\n }\n\n selectLegend(evt) {\n let legend = evt.detail.legend;\n\n if (legend) {\n legend.active = !legend.active;\n }\n\n this.redraw({\n headerTop: true,\n floatBox: true,\n detailDay: true\n });\n }\n /**\n * muestra alternadamente los sidebar initial y extended\n */\n\n\n toggleSidebar() {\n this.setShowNavInitial(!this.isShowNavInitial);\n this.setShowNavExtended(!this.isShowNavExtended);\n }\n /**\n * Oculta nav initial , extended y button\n */\n\n\n hideSidebars() {\n this.setShowNavInitial(false);\n this.setShowNavExtended(false);\n this.setShowNavButtons(false);\n }\n /**\n * Muestra/Oculta Sidebar inicial\n */\n\n\n setShowNavInitial(isShowNavInitial) {\n this.isShowNavInitial = isShowNavInitial;\n _util_styleUtils__WEBPACK_IMPORTED_MODULE_4__[\"default\"].setNavLeftInitialStyle(this.config, this.isShowNavInitial, this.tabSelected);\n }\n /**\n * Muestra/Oculta Sidebar extendido\n */\n\n\n setShowNavExtended(isShowNavExtended) {\n this.isShowNavExtended = isShowNavExtended;\n _util_styleUtils__WEBPACK_IMPORTED_MODULE_4__[\"default\"].setNavLeftExtendedStyle(this.config, this.isShowNavExtended, this.tabSelected);\n }\n /**\n * Muestra/Oculta Sidebar buttons\n */\n\n\n setShowNavButtons(isShowNavButtons) {\n this.isShowNavButtons = isShowNavButtons;\n _util_styleUtils__WEBPACK_IMPORTED_MODULE_4__[\"default\"].setNavLeftButtonsStyle(this.config, this.isShowNavButtons, this.tabSelected);\n }\n /**\n * Muestra/oculta Sidebar Derecho\n */\n\n\n toggleSidebarRight() {\n let isHidden = !this.$capibara.classList.contains(\"extended-right\");\n this.setVisibleSidebarRight(!isHidden);\n }\n /**\n * Modifica la opcion de mostrar y ocultar sidebar derecho\n *\n * @param {Boolean} [show = true] - indica si debe mostrarse u ocultarse\n */\n\n\n setVisibleSidebarRight(show = true) {\n let fn = show ? \"add\" : \"remove\";\n this.$capibara.classList[fn](\"extended-right\");\n }\n /**\n * Muestra/oculta Header extendido (inputs)\n */\n\n\n toggleHeader() {\n this.$capibara.classList.toggle(\"header-extended\");\n }\n /**\n * Muestra/oculta barra de carga de planilla \n * Si se llama sin parametros, por defecto muestra el loading derecho\n * que corresponde al sidebar-right\n *\n * @param {String} [position = \"right\"] - escoge loading, puede ser \"left\" | \"right\"\n * @param {Boolean} [show = true] - indica si mostrar u ocultar loading\n */\n\n\n loading(position = \"right\", show = true) {\n let fn = show ? \"remove\" : \"add\";\n let element = this.$capibara.querySelector(\".progress-bar-\" + position);\n element.classList[fn](\"hide-progress\");\n }\n /**\n * Busca un boton segun selector, y le agrega la clase \"loading\"\n * y deshabilita el boton\n *\n * @param { String } [ selector = '[btn-calendar]' ] - selector de boton\n * @param { Boolean } [isLoading = true] - define si esta cargando o no\n */\n\n\n loadingBtn(selector = \"[btn-calendar]\", isLoading = true) {\n let element = this.$capibara.querySelector(selector);\n let fn = isLoading ? \"add\" : \"remove\";\n element.classList[fn](\"loading\");\n\n if (isLoading) {\n element.setAttribute(\"disabled\", \"\");\n } else {\n element.removeAttribute(\"disabled\");\n }\n }\n /**\n * Crea Evento de guardado de los inputs del Sidebar Right\n * obtiene todos los valores de los inputs registrados en this.$inputs y \n * los retorna creando el evento \"save\"\n *\n */\n\n\n saveInputsNavRight() {\n let inputValues = [];\n this.$inputsNavRight.forEach($input => {\n let key = $input.getAttribute(\"input-key\");\n let inputConfig = this.tabSelected.inputs.find(t => t.key == key);\n inputValues.push({\n key: key,\n inputConfig: inputConfig,\n el: $input,\n value: this.getInputValue($input, inputConfig)\n });\n });\n this.$capibara.dispatchEvent(new CustomEvent(\"save\", {\n bubbles: true,\n cancelable: false,\n detail: {\n inputValues: inputValues,\n selected: this.selected,\n tabSelected: this.tabSelected\n }\n }));\n }\n /**\n * Cancela formulario de sidebar right\n */\n\n\n cancelMultiInput() {\n this.cleanMultiInput();\n }\n /**\n * Limpia el formulario en el sidebar right\n * oculta el sidebar right\n */\n\n\n cleanMultiInput() {\n this.$capibara.classList.remove(\"extended-right\");\n this.selected = [];\n this.redrawSelection();\n }\n /**\n * Obtiene el valor de un input\n *\n * @param {Object} elem - elemento del dom que representa al input, no necesariamente input\n * @param {Object} config - configuracion de input\n * @return {*} valor del Input\n */\n\n\n getInputValue(elem, inputConfig) {\n let value = null;\n let inputElement = null;\n let inputsElement = null;\n\n switch (inputConfig.type) {\n case 'time':\n let hhElement = elem.querySelector(\".hour\");\n let mmElement = elem.querySelector(\".minutes\");\n let hhValue = hhElement.value;\n let mmValue = mmElement.value;\n\n if (hhValue) {\n hhValue = parseFloat(hhValue);\n }\n\n if (mmValue) {\n mmValue = parseFloat(mmValue);\n }\n\n value = {\n hh: hhValue,\n mm: mmValue\n };\n break;\n\n case 'message':\n case 'textarea':\n inputElement = elem.querySelector(\"textarea\");\n value = inputElement.value || '';\n break;\n\n case \"inputList\":\n let valuesInputs = [];\n inputsElement = elem.querySelectorAll(\"input[type='number']\");\n inputsElement.forEach(inputElement => {\n let valueInput = inputElement.value;\n\n if (valueInput) {\n valueInput = parseFloat(valueInput);\n }\n\n let label = inputElement.getAttribute(\"input-label\");\n let id = inputElement.getAttribute(\"input-id\");\n valuesInputs.push({\n label: label,\n value: valueInput,\n id: id\n });\n });\n value = valuesInputs;\n break;\n\n case 'number':\n inputElement = elem.querySelector(\"input[type='number']\");\n value = inputElement.value;\n\n if (value) {\n value = parseFloat(value);\n }\n\n break;\n\n case 'checkbox':\n inputElement = elem.querySelector(\"input[type='checkbox']\");\n value = inputElement.checked;\n break;\n\n case 'input-box':\n inputsElement = elem.querySelectorAll(\".mini-input-section input\");\n value = [];\n inputsElement.forEach(i => {\n let v = i.value;\n\n if (v) {\n v = parseFloat(v);\n }\n\n value.push({\n id: i.getAttribute(\"input-id\"),\n key: i.getAttribute(\"input-key\"),\n value: v\n });\n });\n break;\n\n case 'title':\n //no es realmente un input, es solo un texto\n break;\n\n case 'text':\n default:\n inputElement = elem.querySelector(\"input\");\n value = inputElement.value;\n }\n\n return value;\n }\n /**\n * Funcion llamada al pasar sobre un item del sidebar izquierdo, \n * para mostrar un detalle del item\n * \n * El detalle del item se ancla de manera superior o inferior dependiendo de \n * la posicion el mouse en pantalla, para no salir del campo visual \n *\n *\n * @param {Object} evt - Evento retornado por un mouseover\n */\n\n\n overNavItem(evt) {\n let pos = evt.detail.pos;\n let item = evt.detail.item; //let dataDay = evt.detail.data;\n\n let $detail = this.$elements.$navLeft.querySelector(\".detail-nav-item\");\n\n if ($detail.classList.contains(\"hide\")) {\n $detail.classList.remove(\"hide\");\n }\n\n ;\n $detail.innerHTML = _util_tableElements__WEBPACK_IMPORTED_MODULE_3__[\"default\"].getDetailNavItemContent(item);\n\n if (pos.yPercent > 50) {\n //mayor a 50%\n if (!$detail.classList.contains(\"to-bottom\")) {\n $detail.classList.add(\"to-bottom\");\n }\n } else {\n if ($detail.classList.contains(\"to-bottom\")) {\n $detail.classList.remove(\"to-bottom\");\n }\n }\n\n $detail.style.top = pos.top + \"px\";\n }\n /**\n * Oculta detalle de item en sidebar izquierdo \n *\n * @param {Object} evt - Evento retornado por un mouseover\n */\n\n\n leaveNavItem() {\n this.$elements.$navLeft.querySelector(\".detail-nav-item\").classList.add(\"hide\");\n }\n /**\n * Captura evento mousemove de floatBoxContainer\n * para refrescar la posicion y detener posteriores eventos\n *\n * @param {Object} evt - Evento de mousemove\n */\n\n\n mouseMoveOnFlexBoxContainer(evt) {\n let position = _util_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].eventToPosition(this.config, evt, this.$elements.$table);\n this.refreshDetailDayPosition(position);\n evt.preventDefault();\n }\n /**\n * Captura evento mouseleave de floatBoxContainer\n * para ocultar detailDay\n *\n * @param {Object} evt - Evento de mouseleave\n */\n\n\n mouseLeaveOnFloatBoxContainer(evt) {\n this.hideDetailDay();\n evt.preventDefault();\n }\n /**\n * Captura el evento mousemove en $table, para indicar la posicion de $dayMouseOver\n *\n * @param {Object} evt - Evento de mouseleave\n */\n\n\n mouseMoveOnTable(evt) {\n if (this.isVisibleContextMenu) return;\n let pos = _util_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].eventToPosition(this.config, evt, this.$elements.$table);\n\n if (this.lastMousePosition == null || this.lastMousePosition.left != pos.left || this.lastMousePosition.top != pos.top) {\n this.$elements.$dayMouseOver.style.transform = \"translate(\" + pos.left + \"px ,\" + pos.top + \"px)\";\n evt.preventDefault();\n this.lastMousePosition = pos;\n }\n }\n\n rightClickOnCapibara(evt) {\n if (this.config.timeline.contextMenu) {\n this.hideDetailDay();\n evt.preventDefault();\n }\n }\n\n rightClickOnTable(evt) {\n if (this.config.timeline.contextMenu) {\n this.hideDetailDay();\n this.showContextMenuOnTable(evt);\n evt.preventDefault();\n }\n }\n\n showContextMenuOnTable(evt) {\n let date = _util_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getDayByEvent(this.config, evt, this.$elements.$table);\n let item = _util_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getItemByEvent(this.config, evt, this.$elements.$table);\n\n if (this.isVisibleContextMenu) {\n this.hideContextMenu();\n return;\n } //let position = utils.eventToPosition(this.config, evt, this.$elements.$table);\n\n\n let {\n elem: $elem,\n isVisible\n } = _util_tableElements__WEBPACK_IMPORTED_MODULE_3__[\"default\"].createContextMenu({\n tabSelected: this.tabSelected,\n $capibaraElem: this.$capibara,\n config: this.config,\n evt,\n //position,\n date,\n item,\n selected: this.selected,\n name: \"onTable\"\n });\n\n if ($elem) {\n this.isVisibleContextMenu = isVisible;\n this.$elements.$contextMenu.replaceWith($elem);\n this.$elements.$contextMenu = $elem;\n }\n\n evt.preventDefault();\n }\n /**\n * Captura el evento click en $table, para seleccionar dias\n * los dias seleccionados se registran en this.selected[]\n *\n * @param {Object} evt - Evento de mouseleave\n */\n\n\n clickOnTable(evt) {\n let date = _util_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getDayByEvent(this.config, evt, this.$elements.$table);\n let pos = _util_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].eventToPosition(this.config, evt, this.$elements.$table);\n let item = _util_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getItemByEvent(this.config, evt, this.$elements.$table);\n if (item == null) return; // cuano se selecciona un espacio no seleccionable\n //si es mobile, no selecciona, solo muestra detalles\n\n let dataByDate = _.find(item.data, {\n date\n });\n\n if (this.isMobile && dataByDate) {\n if ((!dataByDate.message || dataByDate.message.value == null) && Object.entries(dataByDate.values).length === 0) return;\n this.focusOnFloatBox({\n pos,\n evt\n });\n return;\n }\n\n if (!this.isSelectable(item)) {\n this.$capibara.dispatchEvent(new CustomEvent(\"selectNoSelectable\", {\n bubbles: true,\n cancelable: false,\n detail: {\n selected: this.selected,\n tabSelected: this.tabSelected\n }\n }));\n return; // cuando se selecciona un espacio no seleccionable\n }\n\n let eventName = \"deselect\";\n\n if (this.toggleSelect(date, item, pos)) {\n eventName = \"select\";\n }\n\n this.$capibara.dispatchEvent(new CustomEvent(eventName, {\n bubbles: true,\n cancelable: false,\n detail: {\n config: this.config,\n lastSelection: {\n date,\n item,\n pos\n },\n selected: this.selected,\n tabSelected: this.tabSelected\n }\n }));\n }\n\n toggleSelect(date, item, pos) {\n if (this.isSelected(date, item)) {\n this.deselect(date, item);\n return false;\n } else {\n this.select(date, item, pos);\n return true;\n }\n }\n\n isSelected(date, item) {\n let index = _util_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].indexSelectedDay(this.selected, {\n date,\n item\n });\n return index > -1;\n }\n\n isSelectable(item) {\n if (!this.config.timeline.selectable) {\n return false;\n }\n\n let itemIsSelectable = true;\n\n if (this.tabSelected && this.tabSelected.selectableIfHas) {\n if (!item.values[this.tabSelected.selectableIfHas]) {\n itemIsSelectable = false;\n }\n }\n\n return itemIsSelectable;\n }\n\n redrawSelection() {\n this.checkClassSidebarExtendedRight();\n _util_tableElements__WEBPACK_IMPORTED_MODULE_3__[\"default\"].redrawSelectBoard(this.$elements.$selectContainer, this.selected);\n }\n\n deselect(date, item, redraw = true) {\n if (this.isSelected(date, item)) {\n let index = _util_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].indexSelectedDay(this.selected, {\n date,\n item\n });\n this.selected.splice(index, 1);\n }\n\n this.setIndexToSelected();\n\n if (redraw) {\n this.redrawSelection();\n }\n }\n\n select(date, item, pos, redraw = true) {\n if (!this.isSelected(date, item)) {\n this.selected.push({\n index: 0,\n date,\n item,\n pos\n });\n let dataDay = null;\n\n if (item.data) {\n dataDay = item.data.find(d => {\n return d.date == date;\n });\n } // si es el primer item seleccionado, se autorrellena el formulario de navRight\n\n\n if (this.selected.length == 1) {\n let {\n inputs,\n element\n } = _util_tableElements__WEBPACK_IMPORTED_MODULE_3__[\"default\"].redrawNavRight(this.config, this.$elements.$navRight, this.tabSelected, dataDay, this.selected[0]);\n this.$elements.$navRight = element;\n this.$inputsNavRight = inputs;\n }\n }\n\n let focused = false;\n this.$inputsNavRight.forEach(inputNavRight => {\n if (!focused) {\n let validInputs = inputNavRight.querySelectorAll(\"input\");\n\n if (validInputs && validInputs.length > 0) {\n let firstValidInput = _.first(validInputs);\n\n window.setTimeout(function () {\n firstValidInput.focus();\n }, 0);\n focused = true;\n }\n }\n });\n this.setIndexToSelected();\n\n if (redraw) {\n this.redrawSelection();\n }\n }\n\n setIndexToSelected() {\n this.selected.forEach((s, index) => {\n s.index = index + 1;\n });\n }\n\n isSelectedAllDate(date) {\n let isAllSelected = true;\n this.config.data.forEach(parent => {\n parent.children.forEach(item => {\n if (!this.isSelected(date, item)) {\n isAllSelected = false;\n }\n });\n });\n return isAllSelected;\n }\n\n selectByDate(date) {\n this.config.data.forEach(parent => {\n parent.children.forEach(item => {\n this.selectByItemDate(date, item, false);\n });\n });\n }\n\n deselectByDate(date) {\n this.config.data.forEach(parent => {\n parent.children.forEach(item => {\n this.deselectByItemDate(date, item, false);\n });\n });\n }\n\n selectByItemDate(date, item, redraw = true) {\n if (!this.isSelected(date, item)) {\n let pos = _util_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getPositionByItemDate(this.config, item, date);\n this.select(date, item, pos, redraw);\n }\n }\n\n deselectByItemDate(date, item, redraw = true) {\n if (this.isSelected(date, item)) {\n this.deselect(date, item, redraw);\n }\n }\n\n checkClassSidebarExtendedRight() {\n if (this.selected.length > 0) {\n this.$capibara.classList.add(\"extended-right\");\n } else {\n this.$capibara.classList.remove(\"extended-right\");\n }\n }\n\n /**\n * oculta detailDay en el dom, usando la clase dd-hide\n */\n hideDetailDay() {\n this.$elements.$detailDay.classList.add(\"dd-hide\");\n }\n\n hideContextMenu() {\n if (this.$elements.$contextMenu) {\n this.$elements.$contextMenu.classList.add(\"cm-hide\");\n }\n\n this.isVisibleContextMenu = false;\n }\n\n /**\n * Muestra Detail dialog y Refresca su posicion \n * usando el evento del mouse\n *\n * @param {Object} evt - evento de mousemove, para posiciones en pantalla\n */\n refreshDetailDayPosition(position) {\n let dayWidth = parseFloat(_util_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getCSSVariable(this.config, \"--day-width\"));\n let itemHeight = parseFloat(_util_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getCSSVariable(this.config, \"--item-height\"));\n this.$elements.$detailDay.style.top = position.top + \"px\";\n this.$elements.$detailDay.style.left = position.left + dayWidth + \"px\";\n let yPositionClass = \"has-top-arrow\";\n let xPositionClass = \"\"; //condicion para primeras 3 filas\n\n if (position.topClient <= itemHeight * 3) {\n yPositionClass = \"has-ceil-arrow\";\n } else if (position.yPercent > 20 && position.yPercent <= 70) {\n //entre 20 y 50 %\n yPositionClass = \"has-middle-arrow\";\n } else if (position.yPercent > 70) {\n yPositionClass = \"has-bottom-arrow\";\n }\n\n if (position.xPercent > 30) {\n xPositionClass = \"has-right-arrow\";\n } //quita dd-hide, sobreescribiendo todas las clases\n\n\n this.$elements.$detailDay.className = \"detail-day \" + yPositionClass + \" \" + xPositionClass;\n }\n /**\n * Captura evento click en boton para abrir arbol, en sidebar izquierdo\n *\n * @param {Object} evt - objeto evento click\n */\n\n\n clickNavLeftTreeIcon() {\n _util_tableElements__WEBPACK_IMPORTED_MODULE_3__[\"default\"].redrawBackground(this.config, this.$elements.$background);\n _util_tableElements__WEBPACK_IMPORTED_MODULE_3__[\"default\"].repositionFloatBox(this.config, this.$elements.$floatBoxContainer);\n _util_tableElements__WEBPACK_IMPORTED_MODULE_3__[\"default\"].redrawPlotHorizontalContainer(this.config, this.$elements.$plotHorizontalContainer);\n }\n /**\n * Captura evento mouseover sobre elemento floatBox\n * usada para mostrar detalle de dia/item del floatbox\n */\n\n\n mouseOverFloatBox(evt, force) {\n let item = evt.detail.item;\n let dataDay = evt.detail.data; //verifica que sean dias distintos, comparandolo con el anterior,\n // para no crear nuevamente el mismo detail-day, con los mismos datos\n\n if (dataDay !== this.lastDataDay || force) {\n let newDDContentString = _util_tableElements__WEBPACK_IMPORTED_MODULE_3__[\"default\"].redrawDetailDay(this.config, item, dataDay);\n\n if (newDDContentString) {\n this.$elements.$detailDay.innerHTML = newDDContentString;\n }\n\n this.lastDataDay = dataDay;\n }\n }\n\n clickDateHeader(evt) {\n let date = evt.detail.date;\n this.toggleSelectByDate(date);\n this.redrawSelection();\n }\n\n toggleSelectByDate(date) {\n if (this.isSelectedAllDate(date)) {\n this.deselectByDate(date);\n } else {\n this.selectByDate(date);\n }\n\n this.selected = this.selected.sort((s, n) => {\n return new Date(s.date) - new Date(n.date);\n });\n this.setIndexToSelected();\n }\n\n contextMenuDateHeader(evt) {\n let left = evt.detail.clientX;\n let top = evt.detail.clientY - this.$capibara.getBoundingClientRect().top;\n let date = evt.detail.date;\n let {\n elem: $elem,\n isVisible\n } = _util_tableElements__WEBPACK_IMPORTED_MODULE_3__[\"default\"].createContextMenu({\n tabSelected: this.tabSelected,\n $capibaraElem: this.$capibara,\n config: this.config,\n selected: this.selected,\n date,\n left,\n top,\n name: \"onDateHeader\"\n });\n\n if ($elem) {\n this.isVisibleContextMenu = isVisible;\n this.$elements.$contextMenu.replaceWith($elem);\n this.$elements.$contextMenu = $elem;\n }\n }\n /**\n * Captura evento window resize\n * para verificar si es mobile o no\n */\n\n\n onWindowResize() {\n let oldValue = this.isMobile;\n let newValue = _util_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].checkIsMobile();\n\n if (oldValue != newValue) {\n this.isMobile = newValue;\n this.toggleSidebarMobile();\n this.setAllCSSVariables();\n this.redraw({\n floatBox: true,\n navLeft: true\n });\n }\n }\n /**\n * Cambia sidebar para mobile, segun variable this.isMobile\n */\n\n\n toggleSidebarMobile() {\n if (this.isMobile) {\n this.setShowNavInitial(false);\n this.setShowNavExtended(false);\n this.setShowNavButtons(false);\n this.setEditable(false);\n this.setSelectable(false);\n } else {\n this.setShowNavInitial(true);\n this.setShowNavExtended(false);\n this.setShowNavButtons(true);\n this.setEditable(true);\n this.setSelectable(true);\n }\n }\n\n setEditable(newEditable) {\n if (this.config.timeline.editable != newEditable) {\n this.config.timeline.editable = newEditable;\n this.redraw({\n navLeft: true,\n header: true\n });\n }\n }\n\n setSelectable(newSelectable) {\n if (this.config.timeline.selectable != newSelectable) {\n this.config.timeline.selectable = newSelectable;\n this.cleanMultiInput();\n }\n }\n /**\n * Agrega eventos a los elementos del dom de la planilla\n * usando el objecto $capibara\n */\n\n\n addEvents() {\n this.$capibara.addEventListener(\"click\", this.hideContextMenu.bind(this));\n this.$capibara.addEventListener(\"contextmenu\", this.rightClickOnCapibara.bind(this));\n this.$capibara.addEventListener(\"toggleDark\", this.toggleDark.bind(this));\n this.$capibara.addEventListener(\"toggleHeader\", this.toggleHeader.bind(this));\n this.$capibara.addEventListener(\"toggleSidebar\", this.toggleSidebar.bind(this));\n this.$capibara.addEventListener(\"toggleSidebarRight\", this.toggleSidebarRight.bind(this));\n this.$capibara.addEventListener(\"saveMultiInput\", this.saveInputsNavRight.bind(this));\n this.$capibara.addEventListener(\"cancelMultiInput\", this.cancelMultiInput.bind(this));\n this.$capibara.addEventListener(\"overNavItem\", this.overNavItem.bind(this));\n this.$capibara.addEventListener(\"leaveNavItem\", this.leaveNavItem.bind(this));\n this.$capibara.addEventListener(\"clickNavLeftTreeIcon\", this.clickNavLeftTreeIcon.bind(this));\n this.$capibara.addEventListener(\"mouseOverFloatBox\", this.mouseOverFloatBox.bind(this));\n this.$capibara.addEventListener(\"selectTabHeader\", e => {\n this.selectTab(e.detail.tab);\n });\n this.$capibara.addEventListener(\"selectLegendHeader\", this.selectLegend.bind(this));\n this.$elements.$floatBoxContainer.addEventListener(\"mousemove\", this.mouseMoveOnFlexBoxContainer.bind(this));\n this.$elements.$floatBoxContainer.addEventListener(\"mouseleave\", this.mouseLeaveOnFloatBoxContainer.bind(this));\n this.$elements.$table.addEventListener(\"mousemove\", this.mouseMoveOnTable.bind(this));\n this.$elements.$table.addEventListener(\"click\", this.clickOnTable.bind(this));\n this.$elements.$table.addEventListener(\"contextmenu\", this.rightClickOnTable.bind(this));\n this.$elements.$container.addEventListener(\"scroll\", this.hideContextMenu.bind(this));\n this.$elements.$container.addEventListener(\"clickDate\", this.clickDateHeader.bind(this));\n this.$elements.$container.addEventListener(\"contextMenuDate\", this.contextMenuDateHeader.bind(this));\n window.addEventListener('resize', this.onWindowResize.bind(this));\n }\n /**\n * Funcion para redibujar partes de la planilla, indicado segun parametro\n *\n * options : {\n * floatBox: Boolean,\n * plots: Boolean,\n * header: Boolean,\n * navLeft: Boolean,\n * navRight: Boolean,\n * }\n *\n *\n * @param {Object} options - objecto de configuracion\n */\n\n\n redraw(options) {\n if (options.floatBox) {\n _util_tableElements__WEBPACK_IMPORTED_MODULE_3__[\"default\"].redrawFloatBox(this.config, this.tabSelected, this.$elements.$floatBoxContainer);\n _util_tableElements__WEBPACK_IMPORTED_MODULE_3__[\"default\"].redrawBackground(this.config, this.$elements.$background);\n _util_tableElements__WEBPACK_IMPORTED_MODULE_3__[\"default\"].redrawPlotVerticalContainer(this.config, this.$elements.$plotVerticalContainer);\n _util_tableElements__WEBPACK_IMPORTED_MODULE_3__[\"default\"].redrawPlotHorizontalContainer(this.config, this.$elements.$plotHorizontalContainer);\n _util_tableElements__WEBPACK_IMPORTED_MODULE_3__[\"default\"].redrawTodayLine(this.config, this.$elements.$todayLine);\n }\n\n if (options.plots) {\n _util_tableElements__WEBPACK_IMPORTED_MODULE_3__[\"default\"].redrawPlotVerticalContainer(this.config, this.$elements.$plotVerticalContainer);\n _util_tableElements__WEBPACK_IMPORTED_MODULE_3__[\"default\"].redrawPlotHorizontalContainer(this.config, this.$elements.$plotHorizontalContainer);\n }\n\n if (options.header) {\n _util_tableElements__WEBPACK_IMPORTED_MODULE_3__[\"default\"].redrawHeader(this.config, this.$elements.$header);\n\n if (this.config.timeline.header.extend.enabled !== false) {\n let $headerExtended = _util_tableElements__WEBPACK_IMPORTED_MODULE_3__[\"default\"].createHeaderExtended(this.config);\n\n if ($headerExtended) {\n this.$elements.$header.append($headerExtended);\n }\n }\n }\n\n if (options.headerTop) {\n this.$elements.$headerTop = _util_tableElements__WEBPACK_IMPORTED_MODULE_3__[\"default\"].redrawHeaderTop(this.config, this.tabSelected, this.$elements.$headerTop);\n }\n\n if (options.detailDay) {\n this.hideDetailDay();\n this.lastDataDay = null;\n }\n\n if (options.navLeft) {\n _util_tableElements__WEBPACK_IMPORTED_MODULE_3__[\"default\"].redrawNavLeft(this.$elements.$navLeft, this.config, this.tabSelected);\n _util_styleUtils__WEBPACK_IMPORTED_MODULE_4__[\"default\"].setNavStyle(this.config);\n _util_styleUtils__WEBPACK_IMPORTED_MODULE_4__[\"default\"].setNavLeftInitialStyle(this.config, this.isShowNavInitial, this.tabSelected);\n _util_styleUtils__WEBPACK_IMPORTED_MODULE_4__[\"default\"].setNavLeftExtendedStyle(this.config, this.isShowNavExtended, this.tabSelected);\n }\n\n if (options.cornerLeft) {\n _util_tableElements__WEBPACK_IMPORTED_MODULE_3__[\"default\"].redrawCorner(this.$elements.$corner, this.config, this.tabSelected);\n }\n\n if (options.navRight) {\n let {\n inputs,\n element\n } = _util_tableElements__WEBPACK_IMPORTED_MODULE_3__[\"default\"].redrawNavRight(this.config, this.$elements.$navRight, this.tabSelected);\n this.$elements.$navRight = element;\n this.$inputsNavRight = inputs;\n }\n }\n /**\n * Mueve el Scroll de la planilla al inicio\n */\n\n\n scrollToStart() {\n this.$elements.$container.scrollLeft = 0;\n }\n /**\n * Mueve el Scroll de la planilla al inicio\n */\n\n\n scrollToEnd() {\n this.$elements.$container.scrollLeft = this.$elements.$container.scrollWidth;\n }\n /**\n * Mueve el Scroll de la planilla a la tercera parte\n * TODO mejorar logica de esta funcion\n */\n\n\n scrollToMiddle() {\n this.$elements.$container.scrollLeft = this.$elements.$container.scrollWidth / 3;\n }\n\n focusOnFloatBox({\n pos,\n evt\n }) {\n if (this.isMobile) {\n let containerWidth = this.$elements.$container.clientWidth;\n let dayWidth = parseFloat(_util_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getCSSVariable(this.config, \"--day-width\"));\n let navWidth = parseFloat(_util_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getCSSVariable(this.config, \"--nav-width\"));\n let left = pos.left - containerWidth + 1.5 * dayWidth + navWidth; //let containerHeight = this.$elements.$container.clientHeight;\n\n let itemHeight = parseFloat(_util_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getCSSVariable(this.config, \"--item-height\")); //let headerHeight = parseFloat(utils.getCSSVariable(this.config, \"--header-height\"));\n\n let top = pos.top - 0.5 * itemHeight;\n let position = _util_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].eventToPosition(this.config, evt, this.$elements.$table);\n this.refreshDetailDayPosition({ ...position,\n topClient: position.yInnerPercent >= 70 ? position.topClient : 0,\n // fuerza posicion de arrow en detailday\n xPercent: position.x < 4 ? 0 : 100 // fuerza arrow right\n\n });\n this.$elements.$container.scroll({\n top,\n left,\n behavior: 'smooth'\n });\n }\n }\n /**\n * Fija las variables de CSs segun Config\n */\n\n\n setAllCSSVariables() {\n let config = this.config; //styleUtils.cleanStyle(config);\n\n _util_styleUtils__WEBPACK_IMPORTED_MODULE_4__[\"default\"].setHeaderStyle(config);\n _util_styleUtils__WEBPACK_IMPORTED_MODULE_4__[\"default\"].setNavStyle(config);\n _util_styleUtils__WEBPACK_IMPORTED_MODULE_4__[\"default\"].setNavLeftInitialStyle(config, this.isShowNavInitial, this.tabSelected);\n _util_styleUtils__WEBPACK_IMPORTED_MODULE_4__[\"default\"].setNavLeftExtendedStyle(config, this.isShowNavExtended, this.tabSelected);\n _util_styleUtils__WEBPACK_IMPORTED_MODULE_4__[\"default\"].setNavLeftButtonsStyle(config, this.isShowNavButtons, this.tabSelected);\n _util_styleUtils__WEBPACK_IMPORTED_MODULE_4__[\"default\"].setTableStyle(config);\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbGliL2NhcGliYXJhLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQ2FwaWJhcmEvLi9zcmMvbGliL2NhcGliYXJhLmpzPzBmMGQiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGRvbSAgICAgICAgICAgZnJvbSAnLi4vdXRpbC9kb21VdGlscyc7XG5pbXBvcnQgdXRpbHMgICAgICAgICBmcm9tICcuLi91dGlsL3V0aWxzJztcbmltcG9ydCBkYXRlVXRpbHMgICAgIGZyb20gJy4uL3V0aWwvZGF0ZVV0aWxzJztcbmltcG9ydCB0YWJsZUVsZW1lbnRzIGZyb20gJy4uL3V0aWwvdGFibGVFbGVtZW50cyc7XG5pbXBvcnQgc3R5bGVVdGlscyAgICBmcm9tICcuLi91dGlsL3N0eWxlVXRpbHMnO1xuXG4vKipcbiAqIENhcGliYXJhLCBwbGFuaWxsYSBwYXJhIGRlc3BsaWVndWUgZGUgZGF0b3MgcG9yIGZlY2hhIGNvbW8gR0FOVFRcbiAqIG9yaWVudGFkbyBpbmljaWFsbWVudGUgYSBkYXRvcyBkaWFyaW9zIGRlIGl0ZW1zXG4gKlxuICogQGF1dGhvciBQYXRyaWNpby4gTS4gUm9qYXMuIDxwYXRyaWNpb0BpcnJpY3JvcHMuY29tPlxuICovXG5leHBvcnQgY2xhc3MgQ2FwaWJhcmF7XG5cblxuICAvKipcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEluc3RhbmNpYSB2YXJpYWJsZXMgZGUgcGxhbmlsbGEgQ2FwaWJhcmEsIGNvbiBjb25maWd1cmFjaW9uXG4gICAqIENyZWEgZWwgZWxlbWVudG8gY29udGVuZWRvciB7Y29udGFpbmVyRWxlbWVudH0gc2VndW4gc2VsZWN0b3JcbiAgICpcbiAgICogQHBhcmFtIHtPYmplY3R9IGF0dHJpYnV0ZXMgLSBhdHJpYnV0b3MgcXVlIHNlIHVzYXJhbiBhbCBpbmljaWFyIGxhIHBsYW5pbGxhXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBhdHRyaWJ1dGVzLmNvbmZpZyAtIENvbmZpZ3VyYWNpb24gZGUgcGxhbmlsbGFcbiAgICovXG4gIGNvbnN0cnVjdG9yKHtjb25maWd9KXtcbiAgICBpZihjb25maWcgPT0gbnVsbCkgY29uc29sZS5lcnJvcihcImNvbmZpZyBubyBlY29udHJhZG9cIik7XG5cbiAgICB0aGlzLmNvbnRhaW5lckVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGNvbmZpZy5zZWxlY3Rvcik7XG5cbiAgICBpZih0aGlzLmNvbnRhaW5lckVsZW1lbnQgPT0gbnVsbCkgY29uc29sZS5lcnJvcihcIkVsZW1lbnRvIGRvbSBzZWd1biBjb25maWcuc2VsZWN0b3IsIG5vIGVuY29udHJhZG9cIik7XG5cbiAgICB0aGlzLmluaXRpYWxpemVkICAgICAgICAgID0gZmFsc2U7XG4gICAgdGhpcy4kY2FwaWJhcmEgICAgICAgICAgICA9IG51bGw7XG4gICAgdGhpcy4kZWxlbWVudHMgICAgICAgICAgICA9IHt9O1xuICAgIHRoaXMudGFiU2VsZWN0ZWQgICAgICAgICAgPSBudWxsO1xuICAgIHRoaXMuJGlucHV0c05hdlJpZ2h0ICAgICAgPSBbXTtcbiAgICB0aGlzLnNlbGVjdGVkICAgICAgICAgICAgID0gW107XG4gICAgdGhpcy5jb25maWcgICAgICAgICAgICAgICA9IGNvbmZpZztcbiAgICB0aGlzLmxhc3REYXRhRGF5ICAgICAgICAgID0gbnVsbDtcbiAgICB0aGlzLmlzU2hvd05hdkV4dGVuZGVkICAgID0gZmFsc2U7XG4gICAgdGhpcy5pc1Nob3dOYXZJbml0aWFsICAgICA9IHRydWU7XG4gICAgdGhpcy5pc1Nob3dOYXZCdXR0b25zICAgICA9IHRydWU7XG4gICAgdGhpcy5pc01vYmlsZSAgICAgICAgICAgICA9IGZhbHNlO1xuICAgIHRoaXMubGFzdE1vdXNlUG9zaXRpb24gICAgPSBudWxsO1xuICAgIHRoaXMuaXNWaXNpYmxlQ29udGV4dE1lbnUgPSBmYWxzZTtcblxuICB9XG5cblxuXG5cblxuXG4gIC8qKlxuICAgKiBJbmljaWFsaXphIFBsYW5pbGxhOlxuICAgKiAgLSB2YWNpYSB2YXJpYWJsZXMgbmVjZXNhcmlhc1xuICAgKiAgLSBjcmVhIHBsYW5pbGxhIGxsYW1hbmRvIGEgZHJhd1RhYmxlXG4gICAqICAtIEFncmVnYSBldmVudG9zIGEgcGxhbmlsbGFcbiAgICogIC0gbXVldmUgc2Nyb2xsIGFsIG1lZGlvIGRlIGxhIHRhYmxhXG4gICAqL1xuICBpbml0KCl7XG5cbiAgICB0aGlzLnRhYlNlbGVjdGVkID0gbnVsbDtcbiAgICB0aGlzLiRjYXBpYmFyYSAgID0gbnVsbDtcbiAgICB0aGlzLiRlbGVtZW50cyAgID0ge307XG4gICAgdGhpcy4kaW5wdXRzTmF2UmlnaHQgPSBbXTtcbiAgICB0aGlzLnNlbGVjdGVkICAgID0gW107XG4gICAgdGhpcy5sYXN0RGF0YURheSA9IG51bGw7XG4gICAgdGhpcy5pc01vYmlsZSAgICA9IHV0aWxzLmNoZWNrSXNNb2JpbGUoKTtcbiAgICB0aGlzLmlzVmlzaWJsZUNvbnRleHRNZW51ID0gZmFsc2U7XG5cbiAgICB0aGlzLnNldEFsbENTU1ZhcmlhYmxlcygpO1xuICAgIHRoaXMuZHJhd1RhYmxlKCk7XG4gICAgdGhpcy5hZGRFdmVudHMoKTtcbiAgICB0aGlzLnNjcm9sbFRvTWlkZGxlKCk7XG4gICAgdGhpcy50b2dnbGVTaWRlYmFyTW9iaWxlKCk7XG4gICAgdGhpcy5pbml0aWFsaXplZCA9IHRydWU7XG4gIH1cblxuXG5cbiAgLyoqXG4gICAqIENhbWJpYSBjb25maWd1cmFjaW9uIGRlIHBsYW5pbGxhXG4gICAqXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBjb25maWcgLSBDb25maWd1cmFjaW9uIG51ZXZhIHBhcmEgcGxhbmlsbGFcbiAgICovXG4gIHNldENvbmZpZyhjb25maWcpe1xuICAgIHRoaXMuY29uZmlnID0gY29uZmlnO1xuICB9XG5cblxuICAvKipcbiAgICogQ3JlYSBsYSBwbGFuaWxsYVxuICAgKiBhZ3JlZ2FuZG8gdG9kb3MgbG9zIGVsZW1lbnRvcyBlbiBvcmRlbiBkZW50cm9cbiAgICpcbiAgICogQHJldHVybiB7IERvbUVsZW1lbnQgfSAkY2FwaWJhcmEgLSBlbGVtZW50byBkZWwgRG9tIHF1ZSBjb250aWVuZSB0b2RhIGxhIHBsYW5pbGxhXG4gICAqL1xuICBkcmF3VGFibGUoKXtcbiAgICBsZXQgY29uZmlnICAgICA9IHRoaXMuY29uZmlnXG4gICAgbGV0IGluaXRpYWxUYWIgPSBjb25maWcudGltZWxpbmUudGFic1swXTtcblxuICAgIGxldCAkY2FwaWJhcmEgICAgICAgICAgPSB0YWJsZUVsZW1lbnRzLmNyZWF0ZUFnVGFibGUoY29uZmlnKTtcbiAgICBsZXQgJGNvcm5lciAgICAgICAgICAgID0gdGFibGVFbGVtZW50cy5jcmVhdGVDb3JuZXIoY29uZmlnLCBpbml0aWFsVGFiKTtcbiAgICBsZXQgJGNvcm5lclJpZ2h0ICAgICAgID0gdGFibGVFbGVtZW50cy5jcmVhdGVDb3JuZXJSaWdodChjb25maWcpO1xuICAgIGxldCAkaGVhZGVyVG9wICAgICAgICAgPSB0YWJsZUVsZW1lbnRzLmNyZWF0ZUhlYWRlclRvcChjb25maWcpO1xuICAgIGxldCAkaGVhZGVyICAgICAgICAgICAgPSB0YWJsZUVsZW1lbnRzLmNyZWF0ZUhlYWRlcihjb25maWcpO1xuICAgIGxldCAkdG9kYXlMaW5lICAgICAgICAgPSB0YWJsZUVsZW1lbnRzLmNyZWF0ZVRvZGF5TGluZShjb25maWcpO1xuICAgIGxldCAkaGVhZGVyRXh0ZW5kZWQgICAgPSB0YWJsZUVsZW1lbnRzLmNyZWF0ZUhlYWRlckV4dGVuZGVkKGNvbmZpZyk7XG4gICAgbGV0ICRuYXZMZWZ0ICAgICAgICAgICA9IHRhYmxlRWxlbWVudHMuY3JlYXRlTmF2TGVmdChjb25maWcpXG4gICAgbGV0ICRjb3JuZXJGb290ZXIgICAgICA9IHRhYmxlRWxlbWVudHMuY3JlYXRlQ29ybmVyRm9vdGVyKGNvbmZpZyk7XG4gICAgbGV0ICRmb290ZXIgICAgICAgICAgICA9IHRhYmxlRWxlbWVudHMuY3JlYXRlRm9vdGVyKGNvbmZpZyk7XG4gICAgbGV0ICRmbG9hdEJveENvbnRhaW5lciA9IHRhYmxlRWxlbWVudHMuY3JlYXRlRmxvYXRCb3goY29uZmlnLCBpbml0aWFsVGFiKTtcbiAgICBsZXQgJHNlbGVjdENvbnRhaW5lciAgID0gdGFibGVFbGVtZW50cy5jcmVhdGVTZWxlY3RCb2FyZChjb25maWcpO1xuICAgIGxldCAkcGxvdFZlcnRpY2FsQ29udGFpbmVyICAgICA9IHRhYmxlRWxlbWVudHMuY3JlYXRlUGxvdFZlcnRpY2FsQ29udGFpbmVyKGNvbmZpZyk7XG4gICAgbGV0ICRwbG90SG9yaXpvbnRhbENvbnRhaW5lciAgID0gdGFibGVFbGVtZW50cy5jcmVhdGVQbG90SG9yaXpvbnRhbENvbnRhaW5lcihjb25maWcpO1xuICAgIGxldCAkZGV0YWlsRGF5ICAgICAgICAgPSB0YWJsZUVsZW1lbnRzLmNyZWF0ZURldGFpbERheShjb25maWcsY29uZmlnLmRhdGFbMF0uY2hpbGRyZW5bMF0pO1xuXG4gICAgbGV0IHsgZWxlbTokY29udGV4dE1lbnUsIGlzVmlzaWJsZSB9ICA9IHRhYmxlRWxlbWVudHMuY3JlYXRlQ29udGV4dE1lbnUoe2NvbmZpZ30pO1xuICAgIHRoaXMuaXNWaXNpYmxlQ29udGV4dE1lbnUgPSBpc1Zpc2libGU7XG5cbiAgICBsZXQgJG5hdlJpZ2h0LCBpbnB1dHM7XG4gICAgKHtlbGVtZW50OiRuYXZSaWdodCwgaW5wdXRzfSA9IHRhYmxlRWxlbWVudHMuY3JlYXRlTmF2UmlnaHQoY29uZmlnKSk7XG5cbiAgICBsZXQgc3RhcnQgPSBuZXcgRGF0ZShjb25maWcudGltZWxpbmUuc3RhcnQpO1xuICAgIGxldCBlbmQgICA9IG5ldyBEYXRlKGNvbmZpZy50aW1lbGluZS5lbmQpO1xuXG4gICAgLy9zZSBhZ3JlZ2EgMSBkaWEgKGVuIG1pbGlzZWd1bmRvcyksIHlhIHF1ZSBsYSBmZWNoYSBkZSB0ZXJtaW5vIGVzIGluY2x1c2l2YVxuICAgIGVuZC5zZXRUaW1lKGVuZC5nZXRUaW1lKCkgKyBkYXRlVXRpbHMuZGF5SW5NaWxsaXNlY29uZHMpO1xuXG4gICAgbGV0IGRpZmZfdGltZSA9IGVuZC5nZXRUaW1lKCkgLSBzdGFydC5nZXRUaW1lKCk7XG4gICAgbGV0IGRheXMgICAgICA9IGRpZmZfdGltZSAvIGRhdGVVdGlscy5kYXlJbk1pbGxpc2Vjb25kcztcbiAgICBsZXQgd2lkdGggICAgID0gZGF5cyAqIGNvbmZpZy50aW1lbGluZS5kYXkud2lkdGg7XG5cblxuICAgIGxldCAkYmFja2dyb3VuZCAgID0gdGFibGVFbGVtZW50cy5jcmVhdGVCYWNrZ3JvdW5kKGNvbmZpZyk7XG4gICAgbGV0ICRjb250YWluZXIgICAgPSBkb20uY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTpcImNvbnRhaW5lci10bFwifSk7XG4gICAgbGV0ICRkYXlNb3VzZU92ZXIgPSBkb20uY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogXCJkYXktbW91c2Utb3ZlclwifSk7XG5cbiAgICBsZXQgJHRhYmxlICAgICAgICA9IGRvbS5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBcInRhYmxlXCJ9LCB7c3R5bGU6e3dpZHRoOndpZHRofX0pO1xuXG4gICAgJHRhYmxlLmFwcGVuZENoaWxkKCRiYWNrZ3JvdW5kKTtcbiAgICAkdGFibGUuYXBwZW5kQ2hpbGQoJGRheU1vdXNlT3Zlcik7XG4gICAgJHRhYmxlLmFwcGVuZENoaWxkKCRkZXRhaWxEYXkpO1xuICAgICR0YWJsZS5hcHBlbmRDaGlsZCgkc2VsZWN0Q29udGFpbmVyKTtcbiAgICAkdGFibGUuYXBwZW5kQ2hpbGQoJGZsb2F0Qm94Q29udGFpbmVyICk7XG5cbiAgICBpZigkaGVhZGVyRXh0ZW5kZWQpe1xuICAgICAgJGhlYWRlci5hcHBlbmRDaGlsZCgkaGVhZGVyRXh0ZW5kZWQpO1xuICAgIH1cblxuICAgICRjb250YWluZXIuYXBwZW5kQ2hpbGQoJGhlYWRlcik7XG4gICAgJGNvbnRhaW5lci5hcHBlbmRDaGlsZCgkcGxvdFZlcnRpY2FsQ29udGFpbmVyKTtcbiAgICAkY29udGFpbmVyLmFwcGVuZENoaWxkKCRwbG90SG9yaXpvbnRhbENvbnRhaW5lcik7XG4gICAgJGNvbnRhaW5lci5hcHBlbmRDaGlsZCgkdG9kYXlMaW5lKTtcbiAgICAkY29udGFpbmVyLmFwcGVuZENoaWxkKCRuYXZMZWZ0KTtcbiAgICAkY29udGFpbmVyLmFwcGVuZENoaWxkKCR0YWJsZSk7XG5cbiAgICBpZigkY29ybmVyRm9vdGVyKSAkY29udGFpbmVyLmFwcGVuZENoaWxkKCRjb3JuZXJGb290ZXIpO1xuXG4gICAgaWYoJGZvb3RlcikgJGNvbnRhaW5lci5hcHBlbmRDaGlsZCgkZm9vdGVyKTtcblxuICAgICRjYXBpYmFyYS5hcHBlbmRDaGlsZCgkaGVhZGVyVG9wKTtcbiAgICAkY2FwaWJhcmEuYXBwZW5kQ2hpbGQoJGNvcm5lcik7XG4gICAgJGNhcGliYXJhLmFwcGVuZENoaWxkKCRjb3JuZXJSaWdodCk7XG4gICAgJGNhcGliYXJhLmFwcGVuZENoaWxkKCRjb250YWluZXIpO1xuICAgICRjYXBpYmFyYS5hcHBlbmRDaGlsZCgkbmF2UmlnaHQpO1xuICAgIGlmKCRjb250ZXh0TWVudSkgJGNhcGliYXJhLmFwcGVuZENoaWxkKCRjb250ZXh0TWVudSk7XG5cblxuICAgIHRoaXMuJGlucHV0c05hdlJpZ2h0ICAgPSBpbnB1dHM7XG4gICAgdGhpcy4kY2FwaWJhcmEgPSAkY2FwaWJhcmE7XG4gICAgdGhpcy4kZWxlbWVudHMgPSB7XG4gICAgICAkaGVhZGVyVG9wLFxuICAgICAgJGRldGFpbERheSxcbiAgICAgICRjb250ZXh0TWVudSxcbiAgICAgICRmbG9hdEJveENvbnRhaW5lcixcbiAgICAgICRzZWxlY3RDb250YWluZXIsXG4gICAgICAkdGFibGUsXG4gICAgICAkYmFja2dyb3VuZCxcbiAgICAgICRwbG90VmVydGljYWxDb250YWluZXIsXG4gICAgICAkcGxvdEhvcml6b250YWxDb250YWluZXIsXG4gICAgICAkZGF5TW91c2VPdmVyLFxuICAgICAgJGNvbnRhaW5lcixcbiAgICAgICRuYXZSaWdodCxcbiAgICAgICRuYXZMZWZ0LFxuICAgICAgJGhlYWRlcixcbiAgICAgICR0b2RheUxpbmUsXG4gICAgICAkY29ybmVyXG4gICAgfVxuXG4gICAgdGhpcy5jb250YWluZXJFbGVtZW50LmlubmVySFRNTCA9IFwiXCI7XG4gICAgdGhpcy5jb250YWluZXJFbGVtZW50LmFwcGVuZENoaWxkKCRjYXBpYmFyYSk7XG4gICAgdGhpcy5zZWxlY3RUYWIoaW5pdGlhbFRhYik7XG5cbiAgICByZXR1cm4gJGNhcGliYXJhO1xuICB9XG5cblxuXG5cblxuXG5cbiAgLyoqXG4gICAqIENhbWJpYSBlbCBtb2RvIG9zY3Vybywgc2VndW4gZWwgZXN0YWRvIGFjdHVhbFxuICAgKi9cbiAgdG9nZ2xlRGFyaygpe1xuICAgIHRoaXMuc2V0RGFyayghQm9vbGVhbih0aGlzLmNvbmZpZy50aW1lbGluZS5kYXJrKSk7XG4gIH1cblxuXG4gIC8qKlxuICAgKiBDYW1iaWEgZWwgbW9kbyBvc2N1cm8sIHNlZ3VuIHBhcmFtZXRyb29cbiAgICpcbiAgICogQHBhcmFtIHtCb29sZWFufSBbaXNEYXJrID0gZmFsc2VdIC0gaW5kaWNhIHNpIHNlIGFjdGl2YSBlbCBtb2RvIG9zY3VybyBvIG5vXG4gICAqL1xuICBzZXREYXJrKCBpc0RhcmsgPSBmYWxzZSl7XG4gICAgbGV0IGRhcmtDbGFzc05hbWUgPSBcImRhcmstdGhlbWVcIjtcbiAgICB0aGlzLmNvbmZpZy50aW1lbGluZS5kYXJrID0gaXNEYXJrO1xuXG4gICAgaWYoaXNEYXJrKXtcbiAgICAgIHRoaXMuJGNhcGliYXJhLmNsYXNzTGlzdC5hZGQoZGFya0NsYXNzTmFtZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuJGNhcGliYXJhLmNsYXNzTGlzdC5yZW1vdmUoZGFya0NsYXNzTmFtZSk7XG4gICAgfVxuICB9XG5cblxuXG4gIC8qKlxuICAgKiBDYW1iaWEgZWwgdGVtYSBkZSBjb2xvciBzZWN1bmRhcmlvLCBzZWd1biBwYXJhbWV0cm9cbiAgICogIC1RdWl0YSB0b2RvcyBsb3MgcG9zaWJsZXMgY29sb3JlcyBkZSBsYSBwbGFuaWxsYSwgb2J0ZW5pZW5kb2xvcyBkZSBUYWJzXG4gICAqICAtQWdyZWdhIGVsIGNvbG9yIGVudmlhZG8gcG9yIHBhcmFtZXRybyBjb21vIGNsYXNlIGRlbCBkb21FbGVtZW50ICRjYXBpYmFyYVxuICAgKlxuICAgKiBAcGFyYW0ge1N0cmluZ30gY29sb3IgLSBjb2xvciwgY29tbyBub21icmUgZGUgY2xhc2UsIHBhcmEgYWdyZWdhciBcbiAgICovXG4gIGNoYW5nZUNvbG9yVGhlbWUoY29sb3Ipe1xuICAgIHRoaXMuY29uZmlnLnRpbWVsaW5lLnRhYnMuZm9yRWFjaCh0YWIgPT4ge1xuICAgICAgdGhpcy4kY2FwaWJhcmEuY2xhc3NMaXN0LnJlbW92ZSh0YWIuY29sb3IpO1xuICAgIH0pO1xuICAgIHRoaXMuJGNhcGliYXJhLmNsYXNzTGlzdC5hZGQoY29sb3IpO1xuICB9XG5cblxuXG4gIC8qKlxuICAgKiBTZWxlY2Npb25hIHRhYiBlbiBwbGFuaWxsYVxuICAgKiBzaSByZWRyYXcgPT0gdHJ1ZSAsIHJlZGlidWphIG5hdlJpZ2h0IHkgZmxvYXRCb3hcbiAgICogeWEgcXVlIHNvbiBpbnB1dHMgeSBlc3RldGljYXMgcGVyc29uYWxpemFkYXMgcG9yIFRhYlxuICAgKlxuICAgKiBAcGFyYW0ge09iamVjdH0gdGFiIC0gdGFiLCBvYnRlbmlkYSBkZXNkZSBjb25maWd1cmFjaW9uXG4gICAqIEBwYXJhbSB7Qm9vbGVhbn0gW3JlZHJhdz10cnVlXSAtIG9wY2lvbiBkZSByZWRpYnVqYWRvXG4gICAqL1xuICBzZWxlY3RUYWIodGFiLCByZWRyYXcgPSB0cnVlKXtcblxuICAgIC8vbGV0ICR0YWIgPSB0aGlzLiRjYXBpYmFyYS5xdWVyeVNlbGVjdG9yKCcudGFiW2lucHV0LWtleT1cIicrdGFiLmlkKydcIl0nKTtcblxuICAgIGlmKHRhYil7XG4gICAgICB0aGlzLnRhYlNlbGVjdGVkID0gdGFiO1xuICAgICAgLypcbiAgICAgIHRoaXMuJGNhcGliYXJhLnF1ZXJ5U2VsZWN0b3IoXCIudGFicy1zZWxlY3RcIikudmFsdWUgPSB0YWIuaWQ7XG4gICAgICB0aGlzLiRjYXBpYmFyYS5xdWVyeVNlbGVjdG9yQWxsKFwiLnRhYlwiKS5mb3JFYWNoKHQgPT4ge3QuY2xhc3NMaXN0LnJlbW92ZShcImFjdGl2ZVwiKX0pO1xuICAgICAgJHRhYi5jbGFzc0xpc3QuYWRkKFwiYWN0aXZlXCIpO1xuICAgICAgKi9cblxuICAgICAgdGhpcy5jbGVhbk11bHRpSW5wdXQoKTtcblxuICAgICAgaWYocmVkcmF3KXtcbiAgICAgICAgdGhpcy5yZWRyYXcoe1xuICAgICAgICAgIGhlYWRlclRvcDp0cnVlLFxuICAgICAgICAgIGNvcm5lckxlZnQ6IHRydWUsXG4gICAgICAgICAgbmF2TGVmdDogdHJ1ZSxcbiAgICAgICAgICBuYXZSaWdodDogdHJ1ZSxcbiAgICAgICAgICBmbG9hdEJveDp0cnVlXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIHRoaXMuY2hhbmdlQ29sb3JUaGVtZSh0YWIuY29sb3IpO1xuXG4gICAgICB0aGlzLiRjYXBpYmFyYS5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudChcInNlbGVjdFRhYlwiLCB7XG4gICAgICAgIGJ1YmJsZXM6IHRydWUsXG4gICAgICAgIGNhbmNlbGFibGU6IGZhbHNlLFxuICAgICAgICBkZXRhaWw6e1xuICAgICAgICAgIHRhYlNlbGVjdGVkIDogdGhpcy50YWJTZWxlY3RlZFxuICAgICAgICB9XG4gICAgICB9KSk7XG5cbiAgICB9ZWxzZXtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCJ0YWIgbm8gZW5jb250cmFkYVwiKTtcbiAgICB9XG4gIH1cblxuICBzZWxlY3RMZWdlbmQoZXZ0KXtcbiAgICBsZXQgbGVnZW5kID0gZXZ0LmRldGFpbC5sZWdlbmQ7XG4gICAgaWYobGVnZW5kKXtcbiAgICAgIGxlZ2VuZC5hY3RpdmUgPSAhbGVnZW5kLmFjdGl2ZTtcbiAgICB9XG5cbiAgICB0aGlzLnJlZHJhdyh7XG4gICAgICBoZWFkZXJUb3A6IHRydWUsXG4gICAgICBmbG9hdEJveDogdHJ1ZSxcbiAgICAgIGRldGFpbERheTogdHJ1ZVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIG11ZXN0cmEgYWx0ZXJuYWRhbWVudGUgbG9zIHNpZGViYXIgaW5pdGlhbCB5IGV4dGVuZGVkXG4gICAqL1xuICB0b2dnbGVTaWRlYmFyKCl7XG4gICAgdGhpcy5zZXRTaG93TmF2SW5pdGlhbCghdGhpcy5pc1Nob3dOYXZJbml0aWFsKTtcbiAgICB0aGlzLnNldFNob3dOYXZFeHRlbmRlZCghdGhpcy5pc1Nob3dOYXZFeHRlbmRlZCk7XG4gIH1cblxuICAvKipcbiAgICogT2N1bHRhIG5hdiBpbml0aWFsICwgZXh0ZW5kZWQgeSBidXR0b25cbiAgICovXG4gIGhpZGVTaWRlYmFycygpe1xuICAgIHRoaXMuc2V0U2hvd05hdkluaXRpYWwoZmFsc2UpO1xuICAgIHRoaXMuc2V0U2hvd05hdkV4dGVuZGVkKGZhbHNlKTtcbiAgICB0aGlzLnNldFNob3dOYXZCdXR0b25zKGZhbHNlKTtcbiAgfVxuXG5cblxuICAvKipcbiAgICogTXVlc3RyYS9PY3VsdGEgU2lkZWJhciBpbmljaWFsXG4gICAqL1xuICBzZXRTaG93TmF2SW5pdGlhbChpc1Nob3dOYXZJbml0aWFsKXtcbiAgICB0aGlzLmlzU2hvd05hdkluaXRpYWwgID0gaXNTaG93TmF2SW5pdGlhbDtcbiAgICBzdHlsZVV0aWxzLnNldE5hdkxlZnRJbml0aWFsU3R5bGUodGhpcy5jb25maWcsIHRoaXMuaXNTaG93TmF2SW5pdGlhbCwgdGhpcy50YWJTZWxlY3RlZCk7XG4gIH1cblxuICAvKipcbiAgICogTXVlc3RyYS9PY3VsdGEgU2lkZWJhciBleHRlbmRpZG9cbiAgICovXG4gIHNldFNob3dOYXZFeHRlbmRlZChpc1Nob3dOYXZFeHRlbmRlZCl7XG4gICAgdGhpcy5pc1Nob3dOYXZFeHRlbmRlZCA9IGlzU2hvd05hdkV4dGVuZGVkO1xuICAgIHN0eWxlVXRpbHMuc2V0TmF2TGVmdEV4dGVuZGVkU3R5bGUodGhpcy5jb25maWcsIHRoaXMuaXNTaG93TmF2RXh0ZW5kZWQsIHRoaXMudGFiU2VsZWN0ZWQpO1xuICB9XG4gIC8qKlxuICAgKiBNdWVzdHJhL09jdWx0YSBTaWRlYmFyIGJ1dHRvbnNcbiAgICovXG4gIHNldFNob3dOYXZCdXR0b25zKGlzU2hvd05hdkJ1dHRvbnMpe1xuICAgIHRoaXMuaXNTaG93TmF2QnV0dG9ucyA9IGlzU2hvd05hdkJ1dHRvbnM7XG4gICAgc3R5bGVVdGlscy5zZXROYXZMZWZ0QnV0dG9uc1N0eWxlKHRoaXMuY29uZmlnLCB0aGlzLmlzU2hvd05hdkJ1dHRvbnMsIHRoaXMudGFiU2VsZWN0ZWQpO1xuICB9XG5cblxuXG4gIC8qKlxuICAgKiBNdWVzdHJhL29jdWx0YSBTaWRlYmFyIERlcmVjaG9cbiAgICovXG4gIHRvZ2dsZVNpZGViYXJSaWdodCgpe1xuICAgIGxldCBpc0hpZGRlbiA9ICF0aGlzLiRjYXBpYmFyYS5jbGFzc0xpc3QuY29udGFpbnMoXCJleHRlbmRlZC1yaWdodFwiKTtcbiAgICB0aGlzLnNldFZpc2libGVTaWRlYmFyUmlnaHQoIWlzSGlkZGVuKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNb2RpZmljYSBsYSBvcGNpb24gZGUgbW9zdHJhciB5IG9jdWx0YXIgc2lkZWJhciBkZXJlY2hvXG4gICAqXG4gICAqIEBwYXJhbSAge0Jvb2xlYW59IFtzaG93ID0gdHJ1ZV0gLSBpbmRpY2Egc2kgZGViZSBtb3N0cmFyc2UgdSBvY3VsdGFyc2VcbiAgICovXG4gIHNldFZpc2libGVTaWRlYmFyUmlnaHQoc2hvdyA9IHRydWUpe1xuICAgIGxldCBmbiA9IHNob3cgPyBcImFkZFwiIDogXCJyZW1vdmVcIjtcbiAgICB0aGlzLiRjYXBpYmFyYS5jbGFzc0xpc3RbZm5dKFwiZXh0ZW5kZWQtcmlnaHRcIik7XG4gIH1cblxuXG4gIC8qKlxuICAgKiBNdWVzdHJhL29jdWx0YSBIZWFkZXIgZXh0ZW5kaWRvIChpbnB1dHMpXG4gICAqL1xuICB0b2dnbGVIZWFkZXIoKXtcbiAgICB0aGlzLiRjYXBpYmFyYS5jbGFzc0xpc3QudG9nZ2xlKFwiaGVhZGVyLWV4dGVuZGVkXCIpO1xuICB9XG5cblxuXG4gIC8qKlxuICAgKiBNdWVzdHJhL29jdWx0YSBiYXJyYSBkZSBjYXJnYSBkZSBwbGFuaWxsYSBcbiAgICogU2kgc2UgbGxhbWEgc2luIHBhcmFtZXRyb3MsIHBvciBkZWZlY3RvIG11ZXN0cmEgZWwgbG9hZGluZyBkZXJlY2hvXG4gICAqIHF1ZSBjb3JyZXNwb25kZSBhbCBzaWRlYmFyLXJpZ2h0XG4gICAqXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBbcG9zaXRpb24gPSBcInJpZ2h0XCJdIC0gZXNjb2dlIGxvYWRpbmcsIHB1ZWRlIHNlciBcImxlZnRcIiB8IFwicmlnaHRcIlxuICAgKiBAcGFyYW0ge0Jvb2xlYW59IFtzaG93ID0gdHJ1ZV0gLSBpbmRpY2Egc2kgbW9zdHJhciB1IG9jdWx0YXIgbG9hZGluZ1xuICAgKi9cbiAgbG9hZGluZyhwb3NpdGlvbiA9IFwicmlnaHRcIiwgc2hvdyA9IHRydWUpe1xuICAgIGxldCBmbiAgICAgID0gc2hvdyA/IFwicmVtb3ZlXCIgOiBcImFkZFwiO1xuICAgIGxldCBlbGVtZW50ID0gdGhpcy4kY2FwaWJhcmEucXVlcnlTZWxlY3RvcihcIi5wcm9ncmVzcy1iYXItXCIrcG9zaXRpb24pO1xuICAgIGVsZW1lbnQuY2xhc3NMaXN0W2ZuXShcImhpZGUtcHJvZ3Jlc3NcIik7XG4gIH1cblxuXG5cbiAgLyoqXG4gICAqIEJ1c2NhIHVuIGJvdG9uIHNlZ3VuIHNlbGVjdG9yLCB5IGxlIGFncmVnYSBsYSBjbGFzZSBcImxvYWRpbmdcIlxuICAgKiB5IGRlc2hhYmlsaXRhIGVsIGJvdG9uXG4gICAqXG4gICAqIEBwYXJhbSB7IFN0cmluZyB9IFsgc2VsZWN0b3IgPSAnW2J0bi1jYWxlbmRhcl0nIF0gLSBzZWxlY3RvciBkZSBib3RvblxuICAgKiBAcGFyYW0geyBCb29sZWFuIH0gW2lzTG9hZGluZyAgPSB0cnVlXSAtIGRlZmluZSBzaSBlc3RhIGNhcmdhbmRvIG8gbm9cbiAgICovXG4gIGxvYWRpbmdCdG4oc2VsZWN0b3I9IFwiW2J0bi1jYWxlbmRhcl1cIiwgaXNMb2FkaW5nID0gdHJ1ZSl7XG4gICAgbGV0IGVsZW1lbnQgPSB0aGlzLiRjYXBpYmFyYS5xdWVyeVNlbGVjdG9yKHNlbGVjdG9yKTtcbiAgICBsZXQgZm4gPSBpc0xvYWRpbmcgPyBcImFkZFwiIDogXCJyZW1vdmVcIjtcbiAgICBlbGVtZW50LmNsYXNzTGlzdFtmbl0oXCJsb2FkaW5nXCIpO1xuICAgIGlmKGlzTG9hZGluZyl7XG4gICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZShcImRpc2FibGVkXCIsXCJcIik7XG4gICAgfWVsc2V7XG4gICAgICBlbGVtZW50LnJlbW92ZUF0dHJpYnV0ZShcImRpc2FibGVkXCIpO1xuICAgIH1cbiAgfVxuXG5cblxuXG4gIC8qKlxuICAgKiBDcmVhIEV2ZW50byBkZSBndWFyZGFkbyBkZSBsb3MgaW5wdXRzIGRlbCBTaWRlYmFyIFJpZ2h0XG4gICAqIG9idGllbmUgdG9kb3MgbG9zIHZhbG9yZXMgZGUgbG9zIGlucHV0cyByZWdpc3RyYWRvcyBlbiB0aGlzLiRpbnB1dHMgeSBcbiAgICogbG9zIHJldG9ybmEgY3JlYW5kbyBlbCBldmVudG8gXCJzYXZlXCJcbiAgICpcbiAgICovXG4gIHNhdmVJbnB1dHNOYXZSaWdodCgpe1xuXG4gICAgbGV0IGlucHV0VmFsdWVzID0gW107XG5cbiAgICB0aGlzLiRpbnB1dHNOYXZSaWdodC5mb3JFYWNoKCRpbnB1dCA9PiB7XG4gICAgICBsZXQga2V5ID0gJGlucHV0LmdldEF0dHJpYnV0ZShcImlucHV0LWtleVwiKTtcbiAgICAgIGxldCBpbnB1dENvbmZpZyA9IHRoaXMudGFiU2VsZWN0ZWQuaW5wdXRzLmZpbmQodCA9PiB0LmtleSA9PSBrZXkpO1xuICAgICAgaW5wdXRWYWx1ZXMucHVzaCh7XG4gICAgICAgIGtleSAgICAgICAgIDoga2V5LFxuICAgICAgICBpbnB1dENvbmZpZyA6IGlucHV0Q29uZmlnLFxuICAgICAgICBlbCAgICAgICAgICA6ICRpbnB1dCxcbiAgICAgICAgdmFsdWUgICAgICAgOiB0aGlzLmdldElucHV0VmFsdWUoJGlucHV0LCBpbnB1dENvbmZpZylcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgdGhpcy4kY2FwaWJhcmEuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoXCJzYXZlXCIsIHtcbiAgICAgIGJ1YmJsZXM6IHRydWUsXG4gICAgICBjYW5jZWxhYmxlOiBmYWxzZSxcbiAgICAgIGRldGFpbDp7XG4gICAgICAgIGlucHV0VmFsdWVzIDogaW5wdXRWYWx1ZXMsXG4gICAgICAgIHNlbGVjdGVkICAgIDogdGhpcy5zZWxlY3RlZCxcbiAgICAgICAgdGFiU2VsZWN0ZWQgOiB0aGlzLnRhYlNlbGVjdGVkXG4gICAgICB9XG4gICAgfSkpO1xuXG5cbiAgfVxuXG5cblxuICAvKipcbiAgICogQ2FuY2VsYSBmb3JtdWxhcmlvIGRlIHNpZGViYXIgcmlnaHRcbiAgICovXG4gIGNhbmNlbE11bHRpSW5wdXQoKXtcbiAgICB0aGlzLmNsZWFuTXVsdGlJbnB1dCgpO1xuICB9XG5cblxuXG4gIC8qKlxuICAgKiBMaW1waWEgZWwgZm9ybXVsYXJpbyBlbiBlbCBzaWRlYmFyIHJpZ2h0XG4gICAqIG9jdWx0YSBlbCBzaWRlYmFyIHJpZ2h0XG4gICAqL1xuICBjbGVhbk11bHRpSW5wdXQoKXtcbiAgICB0aGlzLiRjYXBpYmFyYS5jbGFzc0xpc3QucmVtb3ZlKFwiZXh0ZW5kZWQtcmlnaHRcIik7XG4gICAgdGhpcy5zZWxlY3RlZCA9IFtdO1xuICAgIHRoaXMucmVkcmF3U2VsZWN0aW9uKCk7XG4gIH1cblxuXG5cblxuXG4gIC8qKlxuICAgKiBPYnRpZW5lIGVsIHZhbG9yIGRlIHVuIGlucHV0XG4gICAqXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBlbGVtIC0gZWxlbWVudG8gZGVsIGRvbSBxdWUgcmVwcmVzZW50YSBhbCBpbnB1dCwgbm8gbmVjZXNhcmlhbWVudGUgaW5wdXRcbiAgICogQHBhcmFtIHtPYmplY3R9IGNvbmZpZyAtIGNvbmZpZ3VyYWNpb24gZGUgaW5wdXRcbiAgICogQHJldHVybiB7Kn0gdmFsb3IgZGVsIElucHV0XG4gICAqL1xuICBnZXRJbnB1dFZhbHVlKGVsZW0sIGlucHV0Q29uZmlnKXtcbiAgICBsZXQgdmFsdWUgICAgICAgICA9IG51bGw7XG4gICAgbGV0IGlucHV0RWxlbWVudCAgPSBudWxsO1xuICAgIGxldCBpbnB1dHNFbGVtZW50ID0gbnVsbDtcblxuICAgIHN3aXRjaCAoaW5wdXRDb25maWcudHlwZSkge1xuXG4gICAgICBjYXNlICd0aW1lJzpcbiAgICAgICAgbGV0IGhoRWxlbWVudD0gZWxlbS5xdWVyeVNlbGVjdG9yKFwiLmhvdXJcIik7XG4gICAgICAgIGxldCBtbUVsZW1lbnQ9IGVsZW0ucXVlcnlTZWxlY3RvcihcIi5taW51dGVzXCIpO1xuICAgICAgICBsZXQgaGhWYWx1ZSA9IGhoRWxlbWVudC52YWx1ZTtcbiAgICAgICAgbGV0IG1tVmFsdWUgPSBtbUVsZW1lbnQudmFsdWU7XG4gICAgICAgIGlmKGhoVmFsdWUpe1xuICAgICAgICAgIGhoVmFsdWUgPSBwYXJzZUZsb2F0KGhoVmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIGlmKG1tVmFsdWUpe1xuICAgICAgICAgIG1tVmFsdWUgPSBwYXJzZUZsb2F0KG1tVmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIHZhbHVlID0ge2hoOmhoVmFsdWUsIG1tOiBtbVZhbHVlfTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ21lc3NhZ2UnOlxuICAgICAgY2FzZSAndGV4dGFyZWEnOlxuICAgICAgICBpbnB1dEVsZW1lbnQgPSBlbGVtLnF1ZXJ5U2VsZWN0b3IoXCJ0ZXh0YXJlYVwiKTtcbiAgICAgICAgdmFsdWUgPSBpbnB1dEVsZW1lbnQudmFsdWUgfHwgJyc7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFwiaW5wdXRMaXN0XCI6XG4gICAgICAgIGxldCB2YWx1ZXNJbnB1dHMgPSBbXTtcbiAgICAgICAgaW5wdXRzRWxlbWVudCA9IGVsZW0ucXVlcnlTZWxlY3RvckFsbChcImlucHV0W3R5cGU9J251bWJlciddXCIpO1xuICAgICAgICBpbnB1dHNFbGVtZW50LmZvckVhY2goaW5wdXRFbGVtZW50ID0+IHtcbiAgICAgICAgICBsZXQgdmFsdWVJbnB1dCA9IGlucHV0RWxlbWVudC52YWx1ZTtcbiAgICAgICAgICBpZih2YWx1ZUlucHV0KXtcbiAgICAgICAgICAgIHZhbHVlSW5wdXQgPSBwYXJzZUZsb2F0KHZhbHVlSW5wdXQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBsZXQgbGFiZWwgPSBpbnB1dEVsZW1lbnQuZ2V0QXR0cmlidXRlKFwiaW5wdXQtbGFiZWxcIik7XG4gICAgICAgICAgbGV0IGlkID0gaW5wdXRFbGVtZW50LmdldEF0dHJpYnV0ZShcImlucHV0LWlkXCIpO1xuICAgICAgICAgIHZhbHVlc0lucHV0cy5wdXNoKHtsYWJlbDpsYWJlbCwgdmFsdWU6dmFsdWVJbnB1dCAsIGlkOiBpZH0pO1xuICAgICAgICB9KVxuICAgICAgICB2YWx1ZSA9IHZhbHVlc0lucHV0cztcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ251bWJlcic6XG4gICAgICAgIGlucHV0RWxlbWVudCA9IGVsZW0ucXVlcnlTZWxlY3RvcihcImlucHV0W3R5cGU9J251bWJlciddXCIpO1xuICAgICAgICB2YWx1ZSA9IGlucHV0RWxlbWVudC52YWx1ZTtcbiAgICAgICAgaWYodmFsdWUpe1xuICAgICAgICAgIHZhbHVlID0gcGFyc2VGbG9hdCh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ2NoZWNrYm94JzpcbiAgICAgICAgaW5wdXRFbGVtZW50ID0gZWxlbS5xdWVyeVNlbGVjdG9yKFwiaW5wdXRbdHlwZT0nY2hlY2tib3gnXVwiKTtcbiAgICAgICAgdmFsdWUgPSBpbnB1dEVsZW1lbnQuY2hlY2tlZDtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ2lucHV0LWJveCc6XG4gICAgICAgIGlucHV0c0VsZW1lbnQgPSBlbGVtLnF1ZXJ5U2VsZWN0b3JBbGwoXCIubWluaS1pbnB1dC1zZWN0aW9uIGlucHV0XCIpO1xuICAgICAgICB2YWx1ZSA9IFtdO1xuICAgICAgICBpbnB1dHNFbGVtZW50LmZvckVhY2goaSA9PiB7XG4gICAgICAgICAgbGV0IHYgPSBpLnZhbHVlO1xuICAgICAgICAgIGlmKHYpe1xuICAgICAgICAgICAgdiA9IHBhcnNlRmxvYXQodik7XG4gICAgICAgICAgfVxuICAgICAgICAgIHZhbHVlLnB1c2goe1xuICAgICAgICAgICAgaWQgICAgOiBpLmdldEF0dHJpYnV0ZShcImlucHV0LWlkXCIpLFxuICAgICAgICAgICAga2V5ICAgOiBpLmdldEF0dHJpYnV0ZShcImlucHV0LWtleVwiKSxcbiAgICAgICAgICAgIHZhbHVlIDogdixcbiAgICAgICAgICB9KVxuICAgICAgICB9KTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ3RpdGxlJzpcbiAgICAgICAgLy9ubyBlcyByZWFsbWVudGUgdW4gaW5wdXQsIGVzIHNvbG8gdW4gdGV4dG9cbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ3RleHQnOlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgaW5wdXRFbGVtZW50ID0gZWxlbS5xdWVyeVNlbGVjdG9yKFwiaW5wdXRcIik7XG4gICAgICAgIHZhbHVlID0gaW5wdXRFbGVtZW50LnZhbHVlO1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG5cblxuXG5cblxuXG5cbiAgLyoqXG4gICAqIEZ1bmNpb24gbGxhbWFkYSBhbCBwYXNhciBzb2JyZSB1biBpdGVtIGRlbCBzaWRlYmFyIGl6cXVpZXJkbywgXG4gICAqIHBhcmEgbW9zdHJhciB1biBkZXRhbGxlIGRlbCBpdGVtXG4gICAqIFxuICAgKiBFbCBkZXRhbGxlIGRlbCBpdGVtIHNlIGFuY2xhIGRlIG1hbmVyYSBzdXBlcmlvciBvIGluZmVyaW9yIGRlcGVuZGllbmRvIGRlIFxuICAgKiBsYSBwb3NpY2lvbiBlbCBtb3VzZSBlbiBwYW50YWxsYSwgcGFyYSBubyBzYWxpciBkZWwgY2FtcG8gdmlzdWFsIFxuICAgKlxuICAgKlxuICAgKiBAcGFyYW0ge09iamVjdH0gZXZ0IC0gIEV2ZW50byByZXRvcm5hZG8gcG9yIHVuIG1vdXNlb3ZlclxuICAgKi9cbiAgb3Zlck5hdkl0ZW0oZXZ0KXtcbiAgICBsZXQgcG9zICAgICA9IGV2dC5kZXRhaWwucG9zO1xuICAgIGxldCBpdGVtICAgID0gZXZ0LmRldGFpbC5pdGVtO1xuICAgIC8vbGV0IGRhdGFEYXkgPSBldnQuZGV0YWlsLmRhdGE7XG4gICAgbGV0ICRkZXRhaWwgPSB0aGlzLiRlbGVtZW50cy4kbmF2TGVmdC5xdWVyeVNlbGVjdG9yKFwiLmRldGFpbC1uYXYtaXRlbVwiKTtcblxuICAgIGlmKCRkZXRhaWwuY2xhc3NMaXN0LmNvbnRhaW5zKFwiaGlkZVwiKSl7XG4gICAgICAkZGV0YWlsLmNsYXNzTGlzdC5yZW1vdmUoXCJoaWRlXCIpO1xuICAgIH07XG5cbiAgICAkZGV0YWlsLmlubmVySFRNTCA9IHRhYmxlRWxlbWVudHMuZ2V0RGV0YWlsTmF2SXRlbUNvbnRlbnQoaXRlbSk7XG5cbiAgICBpZihwb3MueVBlcmNlbnQgPiA1MCl7IC8vbWF5b3IgYSA1MCVcbiAgICAgIGlmKCEkZGV0YWlsLmNsYXNzTGlzdC5jb250YWlucyhcInRvLWJvdHRvbVwiKSl7XG4gICAgICAgICRkZXRhaWwuY2xhc3NMaXN0LmFkZChcInRvLWJvdHRvbVwiKTtcbiAgICAgIH1cbiAgICB9ZWxzZXtcbiAgICAgIGlmKCRkZXRhaWwuY2xhc3NMaXN0LmNvbnRhaW5zKFwidG8tYm90dG9tXCIpKXtcbiAgICAgICAgJGRldGFpbC5jbGFzc0xpc3QucmVtb3ZlKFwidG8tYm90dG9tXCIpO1xuICAgICAgfVxuICAgIH1cblxuICAgICRkZXRhaWwuc3R5bGUudG9wID0gcG9zLnRvcCtcInB4XCI7XG4gIH1cblxuICAvKipcbiAgICogT2N1bHRhIGRldGFsbGUgZGUgaXRlbSBlbiBzaWRlYmFyIGl6cXVpZXJkbyBcbiAgICpcbiAgICogQHBhcmFtIHtPYmplY3R9IGV2dCAtICBFdmVudG8gcmV0b3JuYWRvIHBvciB1biBtb3VzZW92ZXJcbiAgICovXG4gIGxlYXZlTmF2SXRlbSgpe1xuICAgIHRoaXMuJGVsZW1lbnRzLiRuYXZMZWZ0LnF1ZXJ5U2VsZWN0b3IoXCIuZGV0YWlsLW5hdi1pdGVtXCIpLmNsYXNzTGlzdC5hZGQoXCJoaWRlXCIpO1xuICB9XG5cblxuXG5cbiAgLyoqXG4gICAqIENhcHR1cmEgZXZlbnRvIG1vdXNlbW92ZSBkZSBmbG9hdEJveENvbnRhaW5lclxuICAgKiBwYXJhIHJlZnJlc2NhciBsYSBwb3NpY2lvbiB5IGRldGVuZXIgcG9zdGVyaW9yZXMgZXZlbnRvc1xuICAgKlxuICAgKiBAcGFyYW0ge09iamVjdH0gZXZ0IC0gRXZlbnRvIGRlIG1vdXNlbW92ZVxuICAgKi9cbiAgbW91c2VNb3ZlT25GbGV4Qm94Q29udGFpbmVyKGV2dCl7XG4gICAgbGV0IHBvc2l0aW9uID0gdXRpbHMuZXZlbnRUb1Bvc2l0aW9uKHRoaXMuY29uZmlnLCBldnQsIHRoaXMuJGVsZW1lbnRzLiR0YWJsZSk7XG4gICAgdGhpcy5yZWZyZXNoRGV0YWlsRGF5UG9zaXRpb24ocG9zaXRpb24pO1xuICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIENhcHR1cmEgZXZlbnRvIG1vdXNlbGVhdmUgZGUgZmxvYXRCb3hDb250YWluZXJcbiAgICogcGFyYSBvY3VsdGFyIGRldGFpbERheVxuICAgKlxuICAgKiBAcGFyYW0ge09iamVjdH0gZXZ0IC0gRXZlbnRvIGRlIG1vdXNlbGVhdmVcbiAgICovXG4gIG1vdXNlTGVhdmVPbkZsb2F0Qm94Q29udGFpbmVyKGV2dCl7XG4gICAgdGhpcy5oaWRlRGV0YWlsRGF5KCk7XG4gICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gIH1cblxuXG4gIC8qKlxuICAgKiBDYXB0dXJhIGVsIGV2ZW50byBtb3VzZW1vdmUgZW4gJHRhYmxlLCBwYXJhIGluZGljYXIgbGEgcG9zaWNpb24gZGUgJGRheU1vdXNlT3ZlclxuICAgKlxuICAgKiBAcGFyYW0ge09iamVjdH0gZXZ0IC0gRXZlbnRvIGRlIG1vdXNlbGVhdmVcbiAgICovXG4gIG1vdXNlTW92ZU9uVGFibGUoZXZ0KXtcbiAgICBpZih0aGlzLmlzVmlzaWJsZUNvbnRleHRNZW51KSByZXR1cm47XG4gICAgbGV0IHBvcyA9IHV0aWxzLmV2ZW50VG9Qb3NpdGlvbih0aGlzLmNvbmZpZywgZXZ0LCB0aGlzLiRlbGVtZW50cy4kdGFibGUpO1xuICAgIGlmKHRoaXMubGFzdE1vdXNlUG9zaXRpb24gPT0gbnVsbCB8fCBcbiAgICAgIHRoaXMubGFzdE1vdXNlUG9zaXRpb24ubGVmdCAhPSBwb3MubGVmdCB8fFxuICAgICAgdGhpcy5sYXN0TW91c2VQb3NpdGlvbi50b3AgIT0gcG9zLnRvcFxuICAgICl7XG4gICAgICB0aGlzLiRlbGVtZW50cy4kZGF5TW91c2VPdmVyLnN0eWxlLnRyYW5zZm9ybSA9IFwidHJhbnNsYXRlKFwiK3Bvcy5sZWZ0K1wicHggLFwiK3Bvcy50b3ArXCJweClcIjtcbiAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgdGhpcy5sYXN0TW91c2VQb3NpdGlvbiA9IHBvcztcbiAgICB9XG4gIH07XG5cblxuXG4gIHJpZ2h0Q2xpY2tPbkNhcGliYXJhKGV2dCl7XG4gICAgaWYodGhpcy5jb25maWcudGltZWxpbmUuY29udGV4dE1lbnUpe1xuICAgICAgdGhpcy5oaWRlRGV0YWlsRGF5KCk7XG4gICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG4gIH07XG5cbiAgcmlnaHRDbGlja09uVGFibGUoZXZ0KXtcbiAgICBpZih0aGlzLmNvbmZpZy50aW1lbGluZS5jb250ZXh0TWVudSl7XG4gICAgICB0aGlzLmhpZGVEZXRhaWxEYXkoKTtcbiAgICAgIHRoaXMuc2hvd0NvbnRleHRNZW51T25UYWJsZShldnQpO1xuICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuICB9O1xuXG4gIHNob3dDb250ZXh0TWVudU9uVGFibGUoZXZ0KXtcblxuICAgIGxldCBkYXRlICA9IHV0aWxzLmdldERheUJ5RXZlbnQodGhpcy5jb25maWcsIGV2dCwgdGhpcy4kZWxlbWVudHMuJHRhYmxlKTtcbiAgICBsZXQgaXRlbSAgPSB1dGlscy5nZXRJdGVtQnlFdmVudCh0aGlzLmNvbmZpZywgZXZ0LCB0aGlzLiRlbGVtZW50cy4kdGFibGUpO1xuXG4gICAgaWYodGhpcy5pc1Zpc2libGVDb250ZXh0TWVudSkge1xuICAgICAgdGhpcy5oaWRlQ29udGV4dE1lbnUoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvL2xldCBwb3NpdGlvbiA9IHV0aWxzLmV2ZW50VG9Qb3NpdGlvbih0aGlzLmNvbmZpZywgZXZ0LCB0aGlzLiRlbGVtZW50cy4kdGFibGUpO1xuICAgIGxldCB7IGVsZW06JGVsZW0sIGlzVmlzaWJsZSB9ID0gdGFibGVFbGVtZW50cy5jcmVhdGVDb250ZXh0TWVudSh7XG4gICAgICB0YWJTZWxlY3RlZDogdGhpcy50YWJTZWxlY3RlZCxcbiAgICAgICRjYXBpYmFyYUVsZW0gOiB0aGlzLiRjYXBpYmFyYSxcbiAgICAgIGNvbmZpZzogdGhpcy5jb25maWcsXG4gICAgICBldnQsXG4gICAgICAvL3Bvc2l0aW9uLFxuICAgICAgZGF0ZSxcbiAgICAgIGl0ZW0sXG4gICAgICBzZWxlY3RlZDogdGhpcy5zZWxlY3RlZCxcbiAgICAgIG5hbWU6IFwib25UYWJsZVwiXG4gICAgfSk7XG5cbiAgICBpZigkZWxlbSl7XG4gICAgICB0aGlzLmlzVmlzaWJsZUNvbnRleHRNZW51ID0gaXNWaXNpYmxlO1xuICAgICAgdGhpcy4kZWxlbWVudHMuJGNvbnRleHRNZW51LnJlcGxhY2VXaXRoKCRlbGVtKTtcbiAgICAgIHRoaXMuJGVsZW1lbnRzLiRjb250ZXh0TWVudSA9ICRlbGVtO1xuICAgIH1cbiAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYXB0dXJhIGVsIGV2ZW50byBjbGljayBlbiAkdGFibGUsIHBhcmEgc2VsZWNjaW9uYXIgZGlhc1xuICAgKiBsb3MgZGlhcyBzZWxlY2Npb25hZG9zIHNlIHJlZ2lzdHJhbiBlbiB0aGlzLnNlbGVjdGVkW11cbiAgICpcbiAgICogQHBhcmFtIHtPYmplY3R9IGV2dCAtIEV2ZW50byBkZSBtb3VzZWxlYXZlXG4gICAqL1xuICBjbGlja09uVGFibGUoZXZ0KXtcblxuICAgIGxldCBkYXRlICA9IHV0aWxzLmdldERheUJ5RXZlbnQodGhpcy5jb25maWcsIGV2dCwgdGhpcy4kZWxlbWVudHMuJHRhYmxlKTtcbiAgICBsZXQgcG9zICAgPSB1dGlscy5ldmVudFRvUG9zaXRpb24odGhpcy5jb25maWcsIGV2dCwgdGhpcy4kZWxlbWVudHMuJHRhYmxlKTtcbiAgICBsZXQgaXRlbSAgPSB1dGlscy5nZXRJdGVtQnlFdmVudCh0aGlzLmNvbmZpZywgZXZ0LCB0aGlzLiRlbGVtZW50cy4kdGFibGUpO1xuXG4gICAgaWYoaXRlbSA9PSBudWxsKSByZXR1cm47IC8vIGN1YW5vIHNlIHNlbGVjY2lvbmEgdW4gZXNwYWNpbyBubyBzZWxlY2Npb25hYmxlXG5cbiAgICAvL3NpIGVzIG1vYmlsZSwgbm8gc2VsZWNjaW9uYSwgc29sbyBtdWVzdHJhIGRldGFsbGVzXG4gICAgbGV0IGRhdGFCeURhdGUgPSBfLmZpbmQoaXRlbS5kYXRhLCB7ZGF0ZX0pO1xuICAgIGlmKHRoaXMuaXNNb2JpbGUgJiYgZGF0YUJ5RGF0ZSl7XG4gICAgICBpZigoIWRhdGFCeURhdGUubWVzc2FnZSB8fCBkYXRhQnlEYXRlLm1lc3NhZ2UudmFsdWUgPT0gbnVsbCkgJiYgT2JqZWN0LmVudHJpZXMoZGF0YUJ5RGF0ZS52YWx1ZXMpLmxlbmd0aCA9PT0gMCApIHJldHVybjtcbiAgICAgIHRoaXMuZm9jdXNPbkZsb2F0Qm94KHtwb3MsIGV2dH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmKCF0aGlzLmlzU2VsZWN0YWJsZShpdGVtKSl7XG4gICAgICB0aGlzLiRjYXBpYmFyYS5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudChcInNlbGVjdE5vU2VsZWN0YWJsZVwiLCB7XG4gICAgICAgIGJ1YmJsZXM6IHRydWUsXG4gICAgICAgIGNhbmNlbGFibGU6IGZhbHNlLFxuICAgICAgICBkZXRhaWw6e1xuICAgICAgICAgIHNlbGVjdGVkICAgIDogdGhpcy5zZWxlY3RlZCxcbiAgICAgICAgICB0YWJTZWxlY3RlZCA6IHRoaXMudGFiU2VsZWN0ZWRcbiAgICAgICAgfVxuICAgICAgfSkpO1xuICAgICAgcmV0dXJuOyAvLyBjdWFuZG8gc2Ugc2VsZWNjaW9uYSB1biBlc3BhY2lvIG5vIHNlbGVjY2lvbmFibGVcbiAgICB9IFxuXG4gICAgbGV0IGV2ZW50TmFtZSA9IFwiZGVzZWxlY3RcIjtcblxuICAgIGlmKHRoaXMudG9nZ2xlU2VsZWN0KGRhdGUsIGl0ZW0sIHBvcykpe1xuICAgICAgZXZlbnROYW1lID0gXCJzZWxlY3RcIjtcbiAgICB9XG5cbiAgICB0aGlzLiRjYXBpYmFyYS5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudChldmVudE5hbWUsIHtcbiAgICAgIGJ1YmJsZXM6IHRydWUsXG4gICAgICBjYW5jZWxhYmxlOiBmYWxzZSxcbiAgICAgIGRldGFpbDp7XG4gICAgICAgIGNvbmZpZzogdGhpcy5jb25maWcsXG4gICAgICAgIGxhc3RTZWxlY3Rpb24gOiB7ZGF0ZSwgaXRlbSwgcG9zfSxcbiAgICAgICAgc2VsZWN0ZWQgICAgOiB0aGlzLnNlbGVjdGVkLFxuICAgICAgICB0YWJTZWxlY3RlZCA6IHRoaXMudGFiU2VsZWN0ZWRcbiAgICAgIH1cbiAgICB9KSk7XG5cbiAgfTtcblxuXG5cblxuXG4gIHRvZ2dsZVNlbGVjdChkYXRlLCBpdGVtLCBwb3Mpe1xuICAgIGlmKHRoaXMuaXNTZWxlY3RlZChkYXRlLCBpdGVtKSl7XG4gICAgICB0aGlzLmRlc2VsZWN0KGRhdGUsIGl0ZW0pO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1lbHNle1xuICAgICAgdGhpcy5zZWxlY3QoZGF0ZSwgaXRlbSwgcG9zKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfTtcblxuXG5cblxuXG4gIGlzU2VsZWN0ZWQoZGF0ZSwgaXRlbSl7XG4gICAgbGV0IGluZGV4ID0gdXRpbHMuaW5kZXhTZWxlY3RlZERheSh0aGlzLnNlbGVjdGVkLCB7ZGF0ZSwgaXRlbX0pO1xuICAgIHJldHVybiBpbmRleCA+IC0xO1xuICB9O1xuXG5cblxuICBpc1NlbGVjdGFibGUoaXRlbSl7XG4gICAgaWYoIXRoaXMuY29uZmlnLnRpbWVsaW5lLnNlbGVjdGFibGUpe1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGxldCBpdGVtSXNTZWxlY3RhYmxlID0gdHJ1ZTtcbiAgICBpZih0aGlzLnRhYlNlbGVjdGVkICYmIHRoaXMudGFiU2VsZWN0ZWQuc2VsZWN0YWJsZUlmSGFzKXtcbiAgICAgIGlmKCFpdGVtLnZhbHVlc1t0aGlzLnRhYlNlbGVjdGVkLnNlbGVjdGFibGVJZkhhc10pe1xuICAgICAgICBpdGVtSXNTZWxlY3RhYmxlID0gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBpdGVtSXNTZWxlY3RhYmxlO1xuICB9O1xuXG4gIHJlZHJhd1NlbGVjdGlvbigpe1xuICAgICAgdGhpcy5jaGVja0NsYXNzU2lkZWJhckV4dGVuZGVkUmlnaHQoKTtcbiAgICAgIHRhYmxlRWxlbWVudHMucmVkcmF3U2VsZWN0Qm9hcmQodGhpcy4kZWxlbWVudHMuJHNlbGVjdENvbnRhaW5lciwgdGhpcy5zZWxlY3RlZCk7XG4gIH07XG5cblxuXG5cblxuXG4gIGRlc2VsZWN0KGRhdGUsIGl0ZW0sIHJlZHJhdyA9IHRydWUpe1xuICAgIGlmKHRoaXMuaXNTZWxlY3RlZChkYXRlLCBpdGVtKSAgKXtcbiAgICAgIGxldCBpbmRleCA9IHV0aWxzLmluZGV4U2VsZWN0ZWREYXkodGhpcy5zZWxlY3RlZCwge2RhdGUsIGl0ZW19KTtcbiAgICAgIHRoaXMuc2VsZWN0ZWQuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG5cbiAgICB0aGlzLnNldEluZGV4VG9TZWxlY3RlZCgpO1xuXG4gICAgaWYocmVkcmF3KXtcbiAgICAgIHRoaXMucmVkcmF3U2VsZWN0aW9uKClcbiAgICB9XG4gIH07XG5cblxuXG5cblxuXG5cbiAgc2VsZWN0KGRhdGUsIGl0ZW0sIHBvcywgcmVkcmF3ID0gdHJ1ZSl7XG4gICAgaWYoIXRoaXMuaXNTZWxlY3RlZChkYXRlLCBpdGVtKSl7XG5cbiAgICAgIHRoaXMuc2VsZWN0ZWQucHVzaCh7XG4gICAgICAgIGluZGV4OiAwLFxuICAgICAgICBkYXRlLFxuICAgICAgICBpdGVtLFxuICAgICAgICBwb3MsXG4gICAgICB9KTtcblxuICAgICAgbGV0IGRhdGFEYXkgPSBudWxsO1xuICAgICAgaWYoaXRlbS5kYXRhKXtcbiAgICAgICAgICBkYXRhRGF5ID0gaXRlbS5kYXRhLmZpbmQoZCA9PiB7XG4gICAgICAgICAgcmV0dXJuIGQuZGF0ZSA9PSBkYXRlO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgLy8gc2kgZXMgZWwgcHJpbWVyIGl0ZW0gc2VsZWNjaW9uYWRvLCBzZSBhdXRvcnJlbGxlbmEgZWwgZm9ybXVsYXJpbyBkZSBuYXZSaWdodFxuICAgICAgaWYodGhpcy5zZWxlY3RlZC5sZW5ndGggPT0gMSl7XG4gICAgICAgIGxldCB7aW5wdXRzLCBlbGVtZW50fSA9IHRhYmxlRWxlbWVudHMucmVkcmF3TmF2UmlnaHQodGhpcy5jb25maWcsIHRoaXMuJGVsZW1lbnRzLiRuYXZSaWdodCwgdGhpcy50YWJTZWxlY3RlZCwgZGF0YURheSwgdGhpcy5zZWxlY3RlZFswXSk7XG4gICAgICAgIHRoaXMuJGVsZW1lbnRzLiRuYXZSaWdodCA9IGVsZW1lbnQ7XG4gICAgICAgIHRoaXMuJGlucHV0c05hdlJpZ2h0ID0gaW5wdXRzO1xuXG5cbiAgICAgIH1cblxuICAgIH1cblxuXG4gICAgbGV0IGZvY3VzZWQgPSBmYWxzZTtcbiAgICB0aGlzLiRpbnB1dHNOYXZSaWdodC5mb3JFYWNoKGlucHV0TmF2UmlnaHQgPT4ge1xuICAgICAgaWYoIWZvY3VzZWQpe1xuICAgICAgICBsZXQgdmFsaWRJbnB1dHMgPSBpbnB1dE5hdlJpZ2h0LnF1ZXJ5U2VsZWN0b3JBbGwoXCJpbnB1dFwiKTtcbiAgICAgICAgaWYodmFsaWRJbnB1dHMgJiYgdmFsaWRJbnB1dHMubGVuZ3RoID4gMCl7XG4gICAgICAgICAgbGV0IGZpcnN0VmFsaWRJbnB1dCA9IF8uZmlyc3QodmFsaWRJbnB1dHMpO1xuXG4gICAgICAgICAgd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeyBcbiAgICAgICAgICAgIGZpcnN0VmFsaWRJbnB1dC5mb2N1cygpO1xuICAgICAgICAgIH0sIDApO1xuXG4gICAgICAgICAgZm9jdXNlZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KVxuXG4gICAgdGhpcy5zZXRJbmRleFRvU2VsZWN0ZWQoKTtcblxuICAgIGlmKHJlZHJhdyl7XG4gICAgICB0aGlzLnJlZHJhd1NlbGVjdGlvbigpXG4gICAgfVxuICB9O1xuXG5cbiAgc2V0SW5kZXhUb1NlbGVjdGVkKCl7XG4gICAgdGhpcy5zZWxlY3RlZC5mb3JFYWNoKChzLCBpbmRleCkgPT4ge1xuICAgICAgcy5pbmRleCA9IGluZGV4KzE7XG4gICAgfSlcbiAgfTtcblxuXG4gIGlzU2VsZWN0ZWRBbGxEYXRlKGRhdGUpe1xuICAgIGxldCBpc0FsbFNlbGVjdGVkID0gdHJ1ZTtcbiAgICB0aGlzLmNvbmZpZy5kYXRhLmZvckVhY2gocGFyZW50ID0+IHtcbiAgICAgIHBhcmVudC5jaGlsZHJlbi5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICBpZighdGhpcy5pc1NlbGVjdGVkKGRhdGUsIGl0ZW0pKXtcbiAgICAgICAgICBpc0FsbFNlbGVjdGVkID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIHJldHVybiBpc0FsbFNlbGVjdGVkO1xuICB9O1xuXG4gIHNlbGVjdEJ5RGF0ZShkYXRlKXtcbiAgICB0aGlzLmNvbmZpZy5kYXRhLmZvckVhY2gocGFyZW50ID0+IHtcbiAgICAgIHBhcmVudC5jaGlsZHJlbi5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICB0aGlzLnNlbGVjdEJ5SXRlbURhdGUoZGF0ZSwgaXRlbSwgZmFsc2UpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH07XG5cbiAgZGVzZWxlY3RCeURhdGUoZGF0ZSl7XG4gICAgdGhpcy5jb25maWcuZGF0YS5mb3JFYWNoKHBhcmVudCA9PiB7XG4gICAgICBwYXJlbnQuY2hpbGRyZW4uZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgdGhpcy5kZXNlbGVjdEJ5SXRlbURhdGUoZGF0ZSwgaXRlbSwgZmFsc2UpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH07XG5cbiAgc2VsZWN0QnlJdGVtRGF0ZShkYXRlLCBpdGVtLCByZWRyYXcgPSB0cnVlKXtcbiAgICBpZighdGhpcy5pc1NlbGVjdGVkKGRhdGUsIGl0ZW0pKXtcbiAgICAgIGxldCBwb3MgPSB1dGlscy5nZXRQb3NpdGlvbkJ5SXRlbURhdGUodGhpcy5jb25maWcsIGl0ZW0sIGRhdGUpO1xuICAgICAgdGhpcy5zZWxlY3QoZGF0ZSwgaXRlbSwgcG9zLCByZWRyYXcpO1xuICAgIH1cbiAgfTtcblxuXG4gIGRlc2VsZWN0QnlJdGVtRGF0ZShkYXRlLCBpdGVtLCByZWRyYXcgPSB0cnVlKXtcbiAgICBpZih0aGlzLmlzU2VsZWN0ZWQoZGF0ZSwgaXRlbSkpe1xuICAgICAgdGhpcy5kZXNlbGVjdChkYXRlLCBpdGVtLCByZWRyYXcpO1xuICAgIH1cbiAgfTtcblxuXG5cblxuXG5cbiAgY2hlY2tDbGFzc1NpZGViYXJFeHRlbmRlZFJpZ2h0KCl7XG4gICAgaWYodGhpcy5zZWxlY3RlZC5sZW5ndGggPiAwKXtcbiAgICAgIHRoaXMuJGNhcGliYXJhLmNsYXNzTGlzdC5hZGQoXCJleHRlbmRlZC1yaWdodFwiKTtcbiAgICB9ZWxzZXtcbiAgICAgIHRoaXMuJGNhcGliYXJhLmNsYXNzTGlzdC5yZW1vdmUoXCJleHRlbmRlZC1yaWdodFwiKTtcbiAgICB9XG5cbiAgfTtcblxuXG5cblxuICAvKipcbiAgICogb2N1bHRhIGRldGFpbERheSBlbiBlbCBkb20sIHVzYW5kbyBsYSBjbGFzZSBkZC1oaWRlXG4gICAqL1xuICBoaWRlRGV0YWlsRGF5KCl7XG4gICAgdGhpcy4kZWxlbWVudHMuJGRldGFpbERheS5jbGFzc0xpc3QuYWRkKFwiZGQtaGlkZVwiKTtcbiAgfTtcblxuICBoaWRlQ29udGV4dE1lbnUoKXtcbiAgICBpZih0aGlzLiRlbGVtZW50cy4kY29udGV4dE1lbnUpe1xuICAgICAgdGhpcy4kZWxlbWVudHMuJGNvbnRleHRNZW51LmNsYXNzTGlzdC5hZGQoXCJjbS1oaWRlXCIpO1xuICAgIH1cbiAgICB0aGlzLmlzVmlzaWJsZUNvbnRleHRNZW51ID0gZmFsc2U7XG4gIH07XG5cblxuXG5cblxuICAvKipcbiAgICogTXVlc3RyYSBEZXRhaWwgZGlhbG9nIHkgUmVmcmVzY2Egc3UgcG9zaWNpb24gXG4gICAqIHVzYW5kbyBlbCBldmVudG8gZGVsIG1vdXNlXG4gICAqXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBldnQgLSBldmVudG8gZGUgbW91c2Vtb3ZlLCBwYXJhIHBvc2ljaW9uZXMgZW4gcGFudGFsbGFcbiAgICovXG4gIHJlZnJlc2hEZXRhaWxEYXlQb3NpdGlvbihwb3NpdGlvbil7XG4gICAgbGV0IGRheVdpZHRoID0gcGFyc2VGbG9hdCh1dGlscy5nZXRDU1NWYXJpYWJsZSh0aGlzLmNvbmZpZywgXCItLWRheS13aWR0aFwiKSk7XG4gICAgbGV0IGl0ZW1IZWlnaHQgPSBwYXJzZUZsb2F0KHV0aWxzLmdldENTU1ZhcmlhYmxlKHRoaXMuY29uZmlnLCBcIi0taXRlbS1oZWlnaHRcIikpO1xuXG4gICAgdGhpcy4kZWxlbWVudHMuJGRldGFpbERheS5zdHlsZS50b3AgID0gcG9zaXRpb24udG9wICsgXCJweFwiO1xuICAgIHRoaXMuJGVsZW1lbnRzLiRkZXRhaWxEYXkuc3R5bGUubGVmdCA9IHBvc2l0aW9uLmxlZnQgKyBkYXlXaWR0aCArIFwicHhcIjtcblxuICAgIGxldCB5UG9zaXRpb25DbGFzcyA9IFwiaGFzLXRvcC1hcnJvd1wiO1xuICAgIGxldCB4UG9zaXRpb25DbGFzcyA9IFwiXCI7XG5cbiAgICAvL2NvbmRpY2lvbiBwYXJhIHByaW1lcmFzIDMgZmlsYXNcbiAgICBpZihwb3NpdGlvbi50b3BDbGllbnQgPD0gaXRlbUhlaWdodCAqMyApe1xuICAgICAgeVBvc2l0aW9uQ2xhc3MgPSBcImhhcy1jZWlsLWFycm93XCI7XG4gICAgfWVsc2UgaWYoIHBvc2l0aW9uLnlQZXJjZW50ID4gMjAgJiZcbiAgICAgIHBvc2l0aW9uLnlQZXJjZW50IDw9IDcwKXsgLy9lbnRyZSAyMCB5IDUwICVcbiAgICAgIHlQb3NpdGlvbkNsYXNzID0gXCJoYXMtbWlkZGxlLWFycm93XCI7XG4gICAgfWVsc2UgaWYocG9zaXRpb24ueVBlcmNlbnQgPiA3MCl7XG4gICAgICB5UG9zaXRpb25DbGFzcyA9IFwiaGFzLWJvdHRvbS1hcnJvd1wiO1xuICAgIH1cblxuICAgIGlmKHBvc2l0aW9uLnhQZXJjZW50ID4gMzAgKXtcbiAgICAgIHhQb3NpdGlvbkNsYXNzID0gXCJoYXMtcmlnaHQtYXJyb3dcIjtcbiAgICB9XG5cbiAgICAvL3F1aXRhIGRkLWhpZGUsIHNvYnJlZXNjcmliaWVuZG8gdG9kYXMgbGFzIGNsYXNlc1xuICAgIHRoaXMuJGVsZW1lbnRzLiRkZXRhaWxEYXkuY2xhc3NOYW1lID0gXCJkZXRhaWwtZGF5IFwiKyB5UG9zaXRpb25DbGFzcyArIFwiIFwiICsgeFBvc2l0aW9uQ2xhc3M7XG4gIH1cblxuXG5cbiAgLyoqXG4gICAqIENhcHR1cmEgZXZlbnRvIGNsaWNrIGVuIGJvdG9uIHBhcmEgYWJyaXIgYXJib2wsIGVuIHNpZGViYXIgaXpxdWllcmRvXG4gICAqXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBldnQgLSBvYmpldG8gZXZlbnRvIGNsaWNrXG4gICAqL1xuICBjbGlja05hdkxlZnRUcmVlSWNvbigpe1xuICAgICAgdGFibGVFbGVtZW50cy5yZWRyYXdCYWNrZ3JvdW5kKHRoaXMuY29uZmlnLCB0aGlzLiRlbGVtZW50cy4kYmFja2dyb3VuZCk7XG4gICAgICB0YWJsZUVsZW1lbnRzLnJlcG9zaXRpb25GbG9hdEJveCh0aGlzLmNvbmZpZywgdGhpcy4kZWxlbWVudHMuJGZsb2F0Qm94Q29udGFpbmVyICk7XG4gICAgICB0YWJsZUVsZW1lbnRzLnJlZHJhd1Bsb3RIb3Jpem9udGFsQ29udGFpbmVyKHRoaXMuY29uZmlnLCB0aGlzLiRlbGVtZW50cy4kcGxvdEhvcml6b250YWxDb250YWluZXIpO1xuICB9XG5cblxuXG4gIC8qKlxuICAgKiBDYXB0dXJhIGV2ZW50byBtb3VzZW92ZXIgc29icmUgZWxlbWVudG8gZmxvYXRCb3hcbiAgICogdXNhZGEgcGFyYSBtb3N0cmFyIGRldGFsbGUgZGUgZGlhL2l0ZW0gZGVsIGZsb2F0Ym94XG4gICAqL1xuICBtb3VzZU92ZXJGbG9hdEJveChldnQsIGZvcmNlKXtcbiAgICAgIGxldCBpdGVtICAgID0gZXZ0LmRldGFpbC5pdGVtO1xuICAgICAgbGV0IGRhdGFEYXkgPSBldnQuZGV0YWlsLmRhdGE7XG5cbiAgICAgIC8vdmVyaWZpY2EgcXVlIHNlYW4gZGlhcyBkaXN0aW50b3MsIGNvbXBhcmFuZG9sbyBjb24gZWwgYW50ZXJpb3IsXG4gICAgICAvLyBwYXJhIG5vIGNyZWFyIG51ZXZhbWVudGUgZWwgbWlzbW8gZGV0YWlsLWRheSwgY29uIGxvcyBtaXNtb3MgZGF0b3NcbiAgICAgIGlmKGRhdGFEYXkgIT09IHRoaXMubGFzdERhdGFEYXkgfHwgZm9yY2Upe1xuICAgICAgICBsZXQgbmV3RERDb250ZW50U3RyaW5nID0gdGFibGVFbGVtZW50cy5yZWRyYXdEZXRhaWxEYXkodGhpcy5jb25maWcsIGl0ZW0sIGRhdGFEYXkpO1xuICAgICAgICBpZihuZXdERENvbnRlbnRTdHJpbmcpe1xuICAgICAgICAgIHRoaXMuJGVsZW1lbnRzLiRkZXRhaWxEYXkuaW5uZXJIVE1MID0gbmV3RERDb250ZW50U3RyaW5nO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubGFzdERhdGFEYXkgPSBkYXRhRGF5O1xuICAgICAgfVxuICB9XG5cbiAgY2xpY2tEYXRlSGVhZGVyKGV2dCl7XG4gICAgbGV0IGRhdGUgPSBldnQuZGV0YWlsLmRhdGU7XG4gICAgdGhpcy50b2dnbGVTZWxlY3RCeURhdGUoZGF0ZSk7XG4gICAgdGhpcy5yZWRyYXdTZWxlY3Rpb24oKTtcbiAgfVxuXG4gIHRvZ2dsZVNlbGVjdEJ5RGF0ZShkYXRlKXtcbiAgICBpZih0aGlzLmlzU2VsZWN0ZWRBbGxEYXRlKGRhdGUpKXtcbiAgICAgIHRoaXMuZGVzZWxlY3RCeURhdGUoZGF0ZSk7XG4gICAgfWVsc2V7XG4gICAgICB0aGlzLnNlbGVjdEJ5RGF0ZShkYXRlKTtcbiAgICB9XG4gICAgdGhpcy5zZWxlY3RlZCA9IHRoaXMuc2VsZWN0ZWQuc29ydCgocywgbikgPT4ge1xuICAgICAgcmV0dXJuIChuZXcgRGF0ZShzLmRhdGUpKSAtIChuZXcgRGF0ZShuLmRhdGUpKTtcbiAgICB9KTtcbiAgICB0aGlzLnNldEluZGV4VG9TZWxlY3RlZCgpO1xuICB9XG5cblxuICBjb250ZXh0TWVudURhdGVIZWFkZXIoZXZ0KXtcbiAgICBsZXQgbGVmdCA9IGV2dC5kZXRhaWwuY2xpZW50WDtcbiAgICBsZXQgdG9wID0gZXZ0LmRldGFpbC5jbGllbnRZIC0gdGhpcy4kY2FwaWJhcmEuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wO1xuICAgIGxldCBkYXRlID0gZXZ0LmRldGFpbC5kYXRlO1xuXG4gICAgbGV0IHsgZWxlbTokZWxlbSwgaXNWaXNpYmxlIH0gPSB0YWJsZUVsZW1lbnRzLmNyZWF0ZUNvbnRleHRNZW51KHtcbiAgICAgIHRhYlNlbGVjdGVkOiB0aGlzLnRhYlNlbGVjdGVkLFxuICAgICAgJGNhcGliYXJhRWxlbTogdGhpcy4kY2FwaWJhcmEsXG4gICAgICBjb25maWc6IHRoaXMuY29uZmlnLFxuICAgICAgc2VsZWN0ZWQ6IHRoaXMuc2VsZWN0ZWQsXG4gICAgICBkYXRlLFxuICAgICAgbGVmdCxcbiAgICAgIHRvcCxcbiAgICAgIG5hbWU6IFwib25EYXRlSGVhZGVyXCJcbiAgICB9KTtcblxuICAgIGlmKCRlbGVtKXtcbiAgICAgIHRoaXMuaXNWaXNpYmxlQ29udGV4dE1lbnUgPSBpc1Zpc2libGU7XG4gICAgICB0aGlzLiRlbGVtZW50cy4kY29udGV4dE1lbnUucmVwbGFjZVdpdGgoJGVsZW0pO1xuICAgICAgdGhpcy4kZWxlbWVudHMuJGNvbnRleHRNZW51ID0gJGVsZW07XG4gICAgfVxuXG4gIH1cblxuICAvKipcbiAgICogQ2FwdHVyYSBldmVudG8gd2luZG93IHJlc2l6ZVxuICAgKiBwYXJhIHZlcmlmaWNhciBzaSBlcyBtb2JpbGUgbyBub1xuICAgKi9cbiAgb25XaW5kb3dSZXNpemUoKXtcbiAgICBsZXQgb2xkVmFsdWUgPSB0aGlzLmlzTW9iaWxlO1xuICAgIGxldCBuZXdWYWx1ZSA9IHV0aWxzLmNoZWNrSXNNb2JpbGUoKTtcbiAgICBpZihvbGRWYWx1ZSAhPSBuZXdWYWx1ZSApe1xuICAgICAgdGhpcy5pc01vYmlsZSA9IG5ld1ZhbHVlO1xuICAgICAgdGhpcy50b2dnbGVTaWRlYmFyTW9iaWxlKCk7XG4gICAgICB0aGlzLnNldEFsbENTU1ZhcmlhYmxlcygpO1xuICAgICAgdGhpcy5yZWRyYXcoeyBmbG9hdEJveDp0cnVlLCBuYXZMZWZ0OnRydWUgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENhbWJpYSBzaWRlYmFyIHBhcmEgbW9iaWxlLCBzZWd1biB2YXJpYWJsZSB0aGlzLmlzTW9iaWxlXG4gICAqL1xuICB0b2dnbGVTaWRlYmFyTW9iaWxlKCl7XG4gICAgICBpZih0aGlzLmlzTW9iaWxlKXtcbiAgICAgICAgdGhpcy5zZXRTaG93TmF2SW5pdGlhbChmYWxzZSk7XG4gICAgICAgIHRoaXMuc2V0U2hvd05hdkV4dGVuZGVkKGZhbHNlKTtcbiAgICAgICAgdGhpcy5zZXRTaG93TmF2QnV0dG9ucyhmYWxzZSk7XG4gICAgICAgIHRoaXMuc2V0RWRpdGFibGUoZmFsc2UpO1xuICAgICAgICB0aGlzLnNldFNlbGVjdGFibGUoZmFsc2UpO1xuICAgICAgfWVsc2V7XG4gICAgICAgIHRoaXMuc2V0U2hvd05hdkluaXRpYWwodHJ1ZSk7XG4gICAgICAgIHRoaXMuc2V0U2hvd05hdkV4dGVuZGVkKGZhbHNlKTtcbiAgICAgICAgdGhpcy5zZXRTaG93TmF2QnV0dG9ucyh0cnVlKTtcbiAgICAgICAgdGhpcy5zZXRFZGl0YWJsZSh0cnVlKTtcbiAgICAgICAgdGhpcy5zZXRTZWxlY3RhYmxlKHRydWUpO1xuICAgICAgfVxuICB9XG5cbiAgc2V0RWRpdGFibGUobmV3RWRpdGFibGUpe1xuICAgIGlmKHRoaXMuY29uZmlnLnRpbWVsaW5lLmVkaXRhYmxlICE9IG5ld0VkaXRhYmxlKXtcbiAgICAgIHRoaXMuY29uZmlnLnRpbWVsaW5lLmVkaXRhYmxlID0gbmV3RWRpdGFibGU7XG4gICAgICB0aGlzLnJlZHJhdyh7bmF2TGVmdDp0cnVlLCBoZWFkZXI6dHJ1ZX0pO1xuICAgIH1cbiAgfVxuXG4gIHNldFNlbGVjdGFibGUobmV3U2VsZWN0YWJsZSl7XG4gICAgaWYodGhpcy5jb25maWcudGltZWxpbmUuc2VsZWN0YWJsZSAhPSBuZXdTZWxlY3RhYmxlKXtcbiAgICAgIHRoaXMuY29uZmlnLnRpbWVsaW5lLnNlbGVjdGFibGUgPSBuZXdTZWxlY3RhYmxlO1xuICAgICAgdGhpcy5jbGVhbk11bHRpSW5wdXQoKTtcbiAgICB9XG4gIH1cblxuXG4gIC8qKlxuICAgKiBBZ3JlZ2EgZXZlbnRvcyBhIGxvcyBlbGVtZW50b3MgZGVsIGRvbSBkZSBsYSBwbGFuaWxsYVxuICAgKiB1c2FuZG8gZWwgb2JqZWN0byAkY2FwaWJhcmFcbiAgICovXG4gIGFkZEV2ZW50cygpe1xuICAgIHRoaXMuJGNhcGliYXJhLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiICAgICAgICAgICAgICAgICwgdGhpcy5oaWRlQ29udGV4dE1lbnUuYmluZCh0aGlzKSk7XG4gICAgdGhpcy4kY2FwaWJhcmEuYWRkRXZlbnRMaXN0ZW5lcihcImNvbnRleHRtZW51XCIgICAgICAgICAgLCB0aGlzLnJpZ2h0Q2xpY2tPbkNhcGliYXJhLmJpbmQodGhpcykpO1xuICAgIHRoaXMuJGNhcGliYXJhLmFkZEV2ZW50TGlzdGVuZXIoXCJ0b2dnbGVEYXJrXCIgICAgICAgICAgICwgdGhpcy50b2dnbGVEYXJrLmJpbmQodGhpcykpO1xuICAgIHRoaXMuJGNhcGliYXJhLmFkZEV2ZW50TGlzdGVuZXIoXCJ0b2dnbGVIZWFkZXJcIiAgICAgICAgICwgdGhpcy50b2dnbGVIZWFkZXIuYmluZCh0aGlzKSk7XG4gICAgdGhpcy4kY2FwaWJhcmEuYWRkRXZlbnRMaXN0ZW5lcihcInRvZ2dsZVNpZGViYXJcIiAgICAgICAgLCB0aGlzLnRvZ2dsZVNpZGViYXIuYmluZCh0aGlzKSk7XG4gICAgdGhpcy4kY2FwaWJhcmEuYWRkRXZlbnRMaXN0ZW5lcihcInRvZ2dsZVNpZGViYXJSaWdodFwiICAgLCB0aGlzLnRvZ2dsZVNpZGViYXJSaWdodC5iaW5kKHRoaXMpKTtcbiAgICB0aGlzLiRjYXBpYmFyYS5hZGRFdmVudExpc3RlbmVyKFwic2F2ZU11bHRpSW5wdXRcIiAgICAgICAsIHRoaXMuc2F2ZUlucHV0c05hdlJpZ2h0LmJpbmQodGhpcykpO1xuICAgIHRoaXMuJGNhcGliYXJhLmFkZEV2ZW50TGlzdGVuZXIoXCJjYW5jZWxNdWx0aUlucHV0XCIgICAgICwgdGhpcy5jYW5jZWxNdWx0aUlucHV0LmJpbmQodGhpcykpO1xuICAgIHRoaXMuJGNhcGliYXJhLmFkZEV2ZW50TGlzdGVuZXIoXCJvdmVyTmF2SXRlbVwiICAgICAgICAgICwgdGhpcy5vdmVyTmF2SXRlbS5iaW5kKHRoaXMpKTtcbiAgICB0aGlzLiRjYXBpYmFyYS5hZGRFdmVudExpc3RlbmVyKFwibGVhdmVOYXZJdGVtXCIgICAgICAgICAsIHRoaXMubGVhdmVOYXZJdGVtLmJpbmQodGhpcykpO1xuICAgIHRoaXMuJGNhcGliYXJhLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja05hdkxlZnRUcmVlSWNvblwiICwgdGhpcy5jbGlja05hdkxlZnRUcmVlSWNvbi5iaW5kKHRoaXMpKTtcbiAgICB0aGlzLiRjYXBpYmFyYS5hZGRFdmVudExpc3RlbmVyKFwibW91c2VPdmVyRmxvYXRCb3hcIiAgICAsIHRoaXMubW91c2VPdmVyRmxvYXRCb3guYmluZCh0aGlzKSk7XG4gICAgdGhpcy4kY2FwaWJhcmEuYWRkRXZlbnRMaXN0ZW5lcihcInNlbGVjdFRhYkhlYWRlclwiICAgICAgLCBlID0+IHsgdGhpcy5zZWxlY3RUYWIoZS5kZXRhaWwudGFiKTsgfSk7XG4gICAgdGhpcy4kY2FwaWJhcmEuYWRkRXZlbnRMaXN0ZW5lcihcInNlbGVjdExlZ2VuZEhlYWRlclwiICAgLCB0aGlzLnNlbGVjdExlZ2VuZC5iaW5kKHRoaXMpKTtcblxuICAgIHRoaXMuJGVsZW1lbnRzLiRmbG9hdEJveENvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKFwibW91c2Vtb3ZlXCIsIHRoaXMubW91c2VNb3ZlT25GbGV4Qm94Q29udGFpbmVyLmJpbmQodGhpcykpO1xuICAgIHRoaXMuJGVsZW1lbnRzLiRmbG9hdEJveENvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKFwibW91c2VsZWF2ZVwiLCB0aGlzLm1vdXNlTGVhdmVPbkZsb2F0Qm94Q29udGFpbmVyLmJpbmQodGhpcykpO1xuXG4gICAgdGhpcy4kZWxlbWVudHMuJHRhYmxlLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZW1vdmVcIiwgdGhpcy5tb3VzZU1vdmVPblRhYmxlLmJpbmQodGhpcykgKTtcbiAgICB0aGlzLiRlbGVtZW50cy4kdGFibGUuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIHRoaXMuY2xpY2tPblRhYmxlLmJpbmQodGhpcykpO1xuICAgIHRoaXMuJGVsZW1lbnRzLiR0YWJsZS5hZGRFdmVudExpc3RlbmVyKFwiY29udGV4dG1lbnVcIiwgdGhpcy5yaWdodENsaWNrT25UYWJsZS5iaW5kKHRoaXMpKTtcblxuICAgIHRoaXMuJGVsZW1lbnRzLiRjb250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcihcInNjcm9sbFwiLCB0aGlzLmhpZGVDb250ZXh0TWVudS5iaW5kKHRoaXMpKTtcblxuICAgIHRoaXMuJGVsZW1lbnRzLiRjb250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrRGF0ZVwiLCB0aGlzLmNsaWNrRGF0ZUhlYWRlci5iaW5kKHRoaXMpKTtcbiAgICB0aGlzLiRlbGVtZW50cy4kY29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoXCJjb250ZXh0TWVudURhdGVcIiwgdGhpcy5jb250ZXh0TWVudURhdGVIZWFkZXIuYmluZCh0aGlzKSk7XG5cbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJyx0aGlzLm9uV2luZG93UmVzaXplLmJpbmQodGhpcykpO1xuXG4gIH1cblxuXG5cbiAgLyoqXG4gICAqIEZ1bmNpb24gcGFyYSByZWRpYnVqYXIgcGFydGVzIGRlIGxhIHBsYW5pbGxhLCBpbmRpY2FkbyBzZWd1biBwYXJhbWV0cm9cbiAgICpcbiAgICogICAgb3B0aW9ucyA6IHtcbiAgICogICAgICAgICAgICBmbG9hdEJveDogQm9vbGVhbixcbiAgICogICAgICAgICAgICBwbG90czogQm9vbGVhbixcbiAgICogICAgICAgICAgICBoZWFkZXI6IEJvb2xlYW4sXG4gICAqICAgICAgICAgICAgbmF2TGVmdDogQm9vbGVhbixcbiAgICogICAgICAgICAgICBuYXZSaWdodDogQm9vbGVhbixcbiAgICogICAgfVxuICAgKlxuICAgKlxuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0aW9ucyAtIG9iamVjdG8gZGUgY29uZmlndXJhY2lvblxuICAgKi9cbiAgcmVkcmF3KG9wdGlvbnMpe1xuXG4gICAgaWYob3B0aW9ucy5mbG9hdEJveCl7XG4gICAgICB0YWJsZUVsZW1lbnRzLnJlZHJhd0Zsb2F0Qm94KHRoaXMuY29uZmlnLCB0aGlzLnRhYlNlbGVjdGVkLCB0aGlzLiRlbGVtZW50cy4kZmxvYXRCb3hDb250YWluZXIpO1xuICAgICAgdGFibGVFbGVtZW50cy5yZWRyYXdCYWNrZ3JvdW5kKHRoaXMuY29uZmlnLCB0aGlzLiRlbGVtZW50cy4kYmFja2dyb3VuZCk7XG4gICAgICB0YWJsZUVsZW1lbnRzLnJlZHJhd1Bsb3RWZXJ0aWNhbENvbnRhaW5lcih0aGlzLmNvbmZpZywgdGhpcy4kZWxlbWVudHMuJHBsb3RWZXJ0aWNhbENvbnRhaW5lcik7XG4gICAgICB0YWJsZUVsZW1lbnRzLnJlZHJhd1Bsb3RIb3Jpem9udGFsQ29udGFpbmVyKHRoaXMuY29uZmlnLCB0aGlzLiRlbGVtZW50cy4kcGxvdEhvcml6b250YWxDb250YWluZXIpO1xuICAgICAgdGFibGVFbGVtZW50cy5yZWRyYXdUb2RheUxpbmUodGhpcy5jb25maWcsIHRoaXMuJGVsZW1lbnRzLiR0b2RheUxpbmUpO1xuICAgIH1cblxuICAgIGlmKG9wdGlvbnMucGxvdHMpe1xuICAgICAgdGFibGVFbGVtZW50cy5yZWRyYXdQbG90VmVydGljYWxDb250YWluZXIodGhpcy5jb25maWcsIHRoaXMuJGVsZW1lbnRzLiRwbG90VmVydGljYWxDb250YWluZXIpO1xuICAgICAgdGFibGVFbGVtZW50cy5yZWRyYXdQbG90SG9yaXpvbnRhbENvbnRhaW5lcih0aGlzLmNvbmZpZywgdGhpcy4kZWxlbWVudHMuJHBsb3RIb3Jpem9udGFsQ29udGFpbmVyKTtcbiAgICB9XG5cbiAgICBpZihvcHRpb25zLmhlYWRlcil7XG4gICAgICB0YWJsZUVsZW1lbnRzLnJlZHJhd0hlYWRlcih0aGlzLmNvbmZpZywgdGhpcy4kZWxlbWVudHMuJGhlYWRlcik7XG4gICAgICBpZih0aGlzLmNvbmZpZy50aW1lbGluZS5oZWFkZXIuZXh0ZW5kLmVuYWJsZWQgIT09IGZhbHNlKXtcbiAgICAgICAgbGV0ICRoZWFkZXJFeHRlbmRlZCA9IHRhYmxlRWxlbWVudHMuY3JlYXRlSGVhZGVyRXh0ZW5kZWQodGhpcy5jb25maWcpO1xuICAgICAgICBpZigkaGVhZGVyRXh0ZW5kZWQpe1xuICAgICAgICAgIHRoaXMuJGVsZW1lbnRzLiRoZWFkZXIuYXBwZW5kKCRoZWFkZXJFeHRlbmRlZCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZihvcHRpb25zLmhlYWRlclRvcCl7XG4gICAgICB0aGlzLiRlbGVtZW50cy4kaGVhZGVyVG9wID0gdGFibGVFbGVtZW50cy5yZWRyYXdIZWFkZXJUb3AodGhpcy5jb25maWcsIHRoaXMudGFiU2VsZWN0ZWQsIHRoaXMuJGVsZW1lbnRzLiRoZWFkZXJUb3ApO1xuICAgIH1cblxuICAgIGlmKG9wdGlvbnMuZGV0YWlsRGF5KXtcbiAgICAgIHRoaXMuaGlkZURldGFpbERheSgpO1xuICAgICAgdGhpcy5sYXN0RGF0YURheSA9IG51bGw7XG4gICAgfVxuXG4gICAgaWYob3B0aW9ucy5uYXZMZWZ0KXtcbiAgICAgIHRhYmxlRWxlbWVudHMucmVkcmF3TmF2TGVmdCh0aGlzLiRlbGVtZW50cy4kbmF2TGVmdCwgdGhpcy5jb25maWcsIHRoaXMudGFiU2VsZWN0ZWQpO1xuICAgICAgc3R5bGVVdGlscy5zZXROYXZTdHlsZSh0aGlzLmNvbmZpZyk7XG4gICAgICBzdHlsZVV0aWxzLnNldE5hdkxlZnRJbml0aWFsU3R5bGUodGhpcy5jb25maWcsIHRoaXMuaXNTaG93TmF2SW5pdGlhbCwgdGhpcy50YWJTZWxlY3RlZCk7XG4gICAgICBzdHlsZVV0aWxzLnNldE5hdkxlZnRFeHRlbmRlZFN0eWxlKHRoaXMuY29uZmlnLCB0aGlzLmlzU2hvd05hdkV4dGVuZGVkLCB0aGlzLnRhYlNlbGVjdGVkKTtcbiAgICB9XG5cbiAgICBpZihvcHRpb25zLmNvcm5lckxlZnQpe1xuICAgICAgdGFibGVFbGVtZW50cy5yZWRyYXdDb3JuZXIodGhpcy4kZWxlbWVudHMuJGNvcm5lciwgdGhpcy5jb25maWcsIHRoaXMudGFiU2VsZWN0ZWQpO1xuICAgIH1cblxuICAgIGlmKG9wdGlvbnMubmF2UmlnaHQpe1xuICAgICAgICBsZXQge2lucHV0cywgZWxlbWVudH0gICAgPSB0YWJsZUVsZW1lbnRzLnJlZHJhd05hdlJpZ2h0KHRoaXMuY29uZmlnLCB0aGlzLiRlbGVtZW50cy4kbmF2UmlnaHQsIHRoaXMudGFiU2VsZWN0ZWQpO1xuICAgICAgICB0aGlzLiRlbGVtZW50cy4kbmF2UmlnaHQgPSBlbGVtZW50O1xuICAgICAgICB0aGlzLiRpbnB1dHNOYXZSaWdodCAgICAgPSBpbnB1dHM7XG4gICAgfVxuXG4gIH1cblxuXG4gIC8qKlxuICAgKiBNdWV2ZSBlbCBTY3JvbGwgZGUgbGEgcGxhbmlsbGEgYWwgaW5pY2lvXG4gICAqL1xuICBzY3JvbGxUb1N0YXJ0KCl7XG4gICAgdGhpcy4kZWxlbWVudHMuJGNvbnRhaW5lci5zY3JvbGxMZWZ0ID0gMDtcbiAgfVxuXG4gIC8qKlxuICAgKiBNdWV2ZSBlbCBTY3JvbGwgZGUgbGEgcGxhbmlsbGEgYWwgaW5pY2lvXG4gICAqL1xuICBzY3JvbGxUb0VuZCgpe1xuICAgIHRoaXMuJGVsZW1lbnRzLiRjb250YWluZXIuc2Nyb2xsTGVmdCA9IHRoaXMuJGVsZW1lbnRzLiRjb250YWluZXIuc2Nyb2xsV2lkdGg7XG4gIH1cblxuICAvKipcbiAgICogTXVldmUgZWwgU2Nyb2xsIGRlIGxhIHBsYW5pbGxhIGEgbGEgdGVyY2VyYSBwYXJ0ZVxuICAgKiBUT0RPIG1lam9yYXIgbG9naWNhIGRlIGVzdGEgZnVuY2lvblxuICAgKi9cbiAgc2Nyb2xsVG9NaWRkbGUoKXtcbiAgICB0aGlzLiRlbGVtZW50cy4kY29udGFpbmVyLnNjcm9sbExlZnQgPSB0aGlzLiRlbGVtZW50cy4kY29udGFpbmVyLnNjcm9sbFdpZHRoIC8gMztcbiAgfVxuXG5cbiAgZm9jdXNPbkZsb2F0Qm94KHtwb3MsIGV2dH0pe1xuICAgIGlmKHRoaXMuaXNNb2JpbGUpe1xuICAgICAgbGV0IGNvbnRhaW5lcldpZHRoID0gdGhpcy4kZWxlbWVudHMuJGNvbnRhaW5lci5jbGllbnRXaWR0aDtcbiAgICAgIGxldCBkYXlXaWR0aCA9IHBhcnNlRmxvYXQodXRpbHMuZ2V0Q1NTVmFyaWFibGUodGhpcy5jb25maWcsIFwiLS1kYXktd2lkdGhcIikpO1xuICAgICAgbGV0IG5hdldpZHRoID0gcGFyc2VGbG9hdCh1dGlscy5nZXRDU1NWYXJpYWJsZSh0aGlzLmNvbmZpZywgXCItLW5hdi13aWR0aFwiKSk7XG4gICAgICBsZXQgbGVmdCA9IHBvcy5sZWZ0IC0gY29udGFpbmVyV2lkdGggKyAxLjUgKiBkYXlXaWR0aCArIG5hdldpZHRoO1xuXG4gICAgICAvL2xldCBjb250YWluZXJIZWlnaHQgPSB0aGlzLiRlbGVtZW50cy4kY29udGFpbmVyLmNsaWVudEhlaWdodDtcbiAgICAgIGxldCBpdGVtSGVpZ2h0ID0gcGFyc2VGbG9hdCh1dGlscy5nZXRDU1NWYXJpYWJsZSh0aGlzLmNvbmZpZywgXCItLWl0ZW0taGVpZ2h0XCIpKTtcbiAgICAgIC8vbGV0IGhlYWRlckhlaWdodCA9IHBhcnNlRmxvYXQodXRpbHMuZ2V0Q1NTVmFyaWFibGUodGhpcy5jb25maWcsIFwiLS1oZWFkZXItaGVpZ2h0XCIpKTtcbiAgICAgIGxldCB0b3AgPSBwb3MudG9wIC0gMC41ICogaXRlbUhlaWdodDtcblxuICAgICAgbGV0IHBvc2l0aW9uID0gdXRpbHMuZXZlbnRUb1Bvc2l0aW9uKHRoaXMuY29uZmlnLCBldnQsIHRoaXMuJGVsZW1lbnRzLiR0YWJsZSk7XG4gICAgICB0aGlzLnJlZnJlc2hEZXRhaWxEYXlQb3NpdGlvbih7XG4gICAgICAgIC4uLnBvc2l0aW9uLFxuICAgICAgICB0b3BDbGllbnQgOiBwb3NpdGlvbi55SW5uZXJQZXJjZW50ID49IDcwID8gcG9zaXRpb24udG9wQ2xpZW50IDogMCwgLy8gZnVlcnphIHBvc2ljaW9uIGRlIGFycm93IGVuIGRldGFpbGRheVxuICAgICAgICB4UGVyY2VudCAgOiBwb3NpdGlvbi54IDwgNCA/IDA6IDEwMCAgLy8gZnVlcnphIGFycm93IHJpZ2h0XG4gICAgICB9KTtcbiAgICAgIHRoaXMuJGVsZW1lbnRzLiRjb250YWluZXIuc2Nyb2xsKHtcbiAgICAgICAgdG9wLCBsZWZ0LFxuICAgICAgICBiZWhhdmlvcjogJ3Ntb290aCdcbiAgICAgIH0pO1xuXG4gICAgfVxuICB9XG5cblxuICAvKipcbiAgICogRmlqYSBsYXMgdmFyaWFibGVzIGRlIENTcyBzZWd1biBDb25maWdcbiAgICovXG4gIHNldEFsbENTU1ZhcmlhYmxlcygpe1xuICAgIGxldCBjb25maWcgPSB0aGlzLmNvbmZpZztcbiAgICAvL3N0eWxlVXRpbHMuY2xlYW5TdHlsZShjb25maWcpO1xuICAgIHN0eWxlVXRpbHMuc2V0SGVhZGVyU3R5bGUoY29uZmlnKTtcbiAgICBzdHlsZVV0aWxzLnNldE5hdlN0eWxlKGNvbmZpZyk7XG4gICAgc3R5bGVVdGlscy5zZXROYXZMZWZ0SW5pdGlhbFN0eWxlKGNvbmZpZywgdGhpcy5pc1Nob3dOYXZJbml0aWFsLCB0aGlzLnRhYlNlbGVjdGVkKTtcbiAgICBzdHlsZVV0aWxzLnNldE5hdkxlZnRFeHRlbmRlZFN0eWxlKGNvbmZpZywgdGhpcy5pc1Nob3dOYXZFeHRlbmRlZCwgdGhpcy50YWJTZWxlY3RlZCk7XG4gICAgc3R5bGVVdGlscy5zZXROYXZMZWZ0QnV0dG9uc1N0eWxlKGNvbmZpZywgdGhpcy5pc1Nob3dOYXZCdXR0b25zLCB0aGlzLnRhYlNlbGVjdGVkKTtcbiAgICBzdHlsZVV0aWxzLnNldFRhYmxlU3R5bGUoY29uZmlnKTtcbiAgfVxuXG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFFQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBT0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQWhCQTtBQW1CQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBUUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTEE7QUFPQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFIQTtBQVFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUFLQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSkE7QUFNQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUFIQTtBQVdBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQXpFQTtBQUNBO0FBMkVBO0FBQ0E7QUFTQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFUQTtBQUNBO0FBV0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUhBO0FBUUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBSkE7QUFIQTtBQVdBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFNQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQU9BO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSkE7QUFPQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUdBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFSQTtBQUNBO0FBVUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFFQTtBQUVBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUFBO0FBQ0E7QUFDQTtBQUpBO0FBS0E7QUFDQTtBQUFBO0FBQ0E7QUFGQTtBQUtBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQWx3Q0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/lib/capibara.js\n");
|
|
188
188
|
|
|
189
189
|
/***/ }),
|
|
190
190
|
|
|
@@ -243,7 +243,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _uti
|
|
|
243
243
|
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
244
244
|
|
|
245
245
|
"use strict";
|
|
246
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _util_domUtils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util/domUtils */ \"./src/util/domUtils.js\");\n/* harmony import */ var _util_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/utils */ \"./src/util/utils.js\");\n/* harmony import */ var _util_dateUtils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/dateUtils */ \"./src/util/dateUtils.js\");\n/* harmony import */ var _styleUtils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./styleUtils */ \"./src/util/styleUtils.js\");\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n //------------------------ CREATE\n\n /**\n * Crea elemento Table\n * Contendrá los elementos que apareceran dentro de la tabla de planilla\n * Se Usa para :\n * - Agregar background con patron estilo tabla\n * - Agregar dayMouseOver, div que indica posicion de mouse\n * - Agregar DetailDay, para detalles de datos en tabla\n * - Agregar SelectedContainer, para dias seleccionados\n * - Agregar FloatBoxContainer, para visualizacion de datos en tabla\n *\n * @param {Object} config - Configuracion capibara\n * @return {Object} Elemento Dom creado\n */\n createAgTable(config) {\n let e = _util_domUtils__WEBPACK_IMPORTED_MODULE_0__[\"default\"].createElement(\"div\", {\n className: \"capibara\"\n });\n\n if (config.timeline.dark) {\n e.classList.add(\"dark-theme\");\n }\n\n if (config.timeline.nav.left.extend.isShow) {//e.classList.add(\"extended\");\n }\n\n if (config.timeline.header.extend.isShow) {\n e.classList.add(\"header-extended\");\n }\n\n return e;\n },\n\n /**\n * Crea y posiciona fondo de tabla\n * Este fondo contiene un patron de CSS que le da la apariencia de tabla\n * por lo cual se debe reposicionar segun la fecha de inicio, para hacer\n * calzar los fines de semana\n *\n * @param {Object} config - Configuracion capibara\n * @param {Object} [$elem = null] - Elemento background, si es null, lo crea\n * @return {Object} elemento Dom Background\n */\n createBackground(config, $elem = null) {\n let w = parseFloat(_util_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getCSSVariable(config, \"--day-width\"));\n let h = parseFloat(_util_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getCSSVariable(config, \"--item-height\"));\n let start = new Date(config.timeline.start);\n let end = new Date(config.timeline.end);\n end.setTime(end.getTime() + _util_dateUtils__WEBPACK_IMPORTED_MODULE_2__[\"default\"].dayInMilliseconds); // add 24 hours\n\n let dCorrected = new Date(start.valueOf() + start.getTimezoneOffset() * 60000);\n let weekDay = dCorrected.getDay();\n let diffWeekDays = (weekDay - 1) * w * -1;\n let diff_time = end.getTime() - start.getTime();\n let days = diff_time / _util_dateUtils__WEBPACK_IMPORTED_MODULE_2__[\"default\"].dayInMilliseconds;\n let rows = 0;\n config.data.forEach(d => {\n rows++;\n\n if (d.children && !d.hidden) {\n rows += d.children.length;\n }\n });\n $elem = $elem || _util_domUtils__WEBPACK_IMPORTED_MODULE_0__[\"default\"].createElement(\"div\", {\n className: \"background-grid\"\n });\n $elem.style[\"background-position\"] = diffWeekDays + 'px 0, 0 0, ' + diffWeekDays + 'px 0';\n $elem.style.width = days * w + \"px\";\n $elem.style.height = rows * h + 1 + \"px\";\n return $elem;\n },\n\n /**\n * Crea Plot Container Vertical\n * Los plots son elementos que agregan secciones de fondo en la planilla\n *\n * @param {Object} config - Configuracion capibara\n * @return {Object} Elemento Dom plotVerticalContainer\n */\n createPlotVerticalContainer(config) {\n let $elem = _util_domUtils__WEBPACK_IMPORTED_MODULE_0__[\"default\"].createElement(\"div\", {\n className: \"plot-vertical-container\"\n });\n return this.redrawPlotVerticalContainer(config, $elem);\n },\n\n createPlotHorizontalContainer(config) {\n let $elem = _util_domUtils__WEBPACK_IMPORTED_MODULE_0__[\"default\"].createElement(\"div\", {\n className: \"plot-horizontal-container\"\n });\n return this.redrawPlotHorizontalContainer(config, $elem);\n },\n\n /**\n * Recrea plotVerticalContainer, usando elemento existente\n * usa un elemento existente para usar la funcion para redibujar el elemento\n *\n * Los Plots se insertan como divs, con posicion especificada,\n * con ancho de dia\n *\n * @param {Object} config - Configuracion capibara\n * @param {Object} $elem - Elemento Dom donde crea plotVerticalContainer\n * @return {Object} Elemento Dom plotVerticalContainer\n */\n redrawPlotVerticalContainer(config, $elem) {\n $elem.innerHTML = \"\";\n\n if (config.timeline.plots && config.timeline.plots.vertical) {\n config.timeline.plots.vertical.forEach(p => {\n let diffDays = Math.floor(_util_dateUtils__WEBPACK_IMPORTED_MODULE_2__[\"default\"].diffDays(config.timeline.start, p.date));\n let dayWidth = parseFloat(_util_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getCSSVariable(config, \"--day-width\"));\n let left = diffDays * dayWidth;\n let plot = _util_domUtils__WEBPACK_IMPORTED_MODULE_0__[\"default\"].createElement(\"div\", {\n classNames: [\"plot-vertical\", p.className || ''],\n style: {\n 'margin-left': left + \"px\"\n }\n });\n $elem.appendChild(plot);\n });\n }\n\n return $elem;\n },\n\n redrawPlotHorizontalContainer(config, $elem) {\n $elem.innerHTML = \"\";\n\n if (config.timeline.plots && config.timeline.plots.horizontal) {\n config.timeline.plots.horizontal.forEach(p => {\n let item = _util_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getItemById(config, p.idNode, p.typeNode);\n let topPosition = _util_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getPositionByItem(config, item, \"parent\");\n let itemHeight = parseFloat(_util_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getCSSVariable(config, \"--item-height\"));\n let plot = _util_domUtils__WEBPACK_IMPORTED_MODULE_0__[\"default\"].createElement(\"div\", {\n classNames: [\"plot-horizontal\", p.className || ''],\n style: {\n 'margin-top': topPosition * itemHeight + \"px\"\n }\n });\n $elem.appendChild(plot);\n });\n }\n\n return $elem;\n },\n\n /**\n * Crea Corner Izquierdo\n * Se usa para :\n * - titulos relacionados con los datos del sidebar izquierdo\n * - titulos para inputs de header, absolute a la derecha\n * - boton para mostrar/ocultar sidebar izquierdo\n * - promedios\n *\n * @param {Object} config - Configuracion capibara\n * @return {Object} Elemento Dom Corner\n */\n createCorner(config, tab = null) {\n let $elem = _util_domUtils__WEBPACK_IMPORTED_MODULE_0__[\"default\"].createElement(\"div\", {\n className: \"corner\"\n });\n return this.redrawCorner($elem, config, tab);\n },\n\n redrawCorner($elem, config, tab = null) {\n let labelsInitialCorner = config.timeline.nav.left.initial.vars.filter(v => v.onlyTab == undefined || v.onlyTab && tab && v.onlyTab == tab.key).map(d => `<span class=\"item-col\">${d.label}</span>`).join(\"\");\n let labelsExtendCorner = config.timeline.nav.left.extend.vars.filter(v => v.onlyTab == undefined || v.onlyTab && tab && v.onlyTab == tab.key).map(d => `<span class=\"item-col\">${d.label}</span>`).join(\"\");\n let labelsHeaderExtend = config.timeline.header.extend.data.map(d => {\n if (d.isHidden) return \"\";\n let avgBox = '';\n let avg = '';\n\n if (d.average) {\n //let yesterday = new Date();\n //yesterday.setDate(yesterday.getDate() - 1)\n //let avg = utils.getAverage(d.data, yesterday, d.average);\n //avgBox = ` <div class=\"average-box\"> <span> <span class=\"symbol\">x̄</span> ${d.average} </span> </div> `;\n avg = ` <span class=\"average\"> ( <span> <span class=\"symbol\">x̄</span> ${d.average} </span>) </span> `;\n }\n\n ;\n return `<div class=\"input-title-container ${d.isPersistent ? 'persistent' : ''}\">\n ${avgBox}\n <span cap-tooltip=\"Promedio ${d.label} : ${d.average} ${d.suffix || ''}\" class=\"input-title ${d.color ? 'c-' + d.color + '--text' : ''} \">\n ${avg}\n ${d.label}\n </span>\n\n </div>`;\n }).join(\"\");\n let template = `<div>\n\n <button toggle-sidebar class=\"btn-icon btn-icon-raised btn-toggle-sidebar c-d-mobile-none\">\n <span>\n <svg style=\"width:24px;height:24px\" viewBox=\"0 0 24 24\">\n <path fill=\"currentColor\" d=\"M8.59,16.58L13.17,12L8.59,7.41L10,6L16,12L10,18L8.59,16.58Z\" />\n </svg>\n </span>\n </button>\n\n <div class=\"corner-title\">\n <span class=\"bottom-text\">\n ${config.timeline.corner.left.label}\n </span>\n </div>\n\n <div class=\"initial-corner\">\n <div class=\"initial-corner-title\">\n <span class=\"bottom-container hide\">\n ${config.timeline.corner.initial.label}\n </span>\n\n <div class=\"bottom-container\">\n ${labelsInitialCorner}\n </div>\n\n </div>\n </div>\n\n\n <div class=\"extend-corner\">\n <div class=\"ex-corner-title\">\n <span class=\"bottom-container hide\">\n ${config.timeline.corner.extend.label}\n </span>\n\n <div class=\"bottom-container\">\n ${labelsExtendCorner}\n </div>\n\n </div>\n </div>\n\n\n <div class=\"btn-nav-corner\">\n <div class=\"input-titles\">\n ${labelsHeaderExtend}\n </div>\n </div>\n\n <div class=\"progress-bar progress-bar-left hide-progress\"></div>\n\n </div>`;\n let r = _util_domUtils__WEBPACK_IMPORTED_MODULE_0__[\"default\"].createElementFromHTML(template);\n $elem.innerHTML = \"\";\n $elem.append(r);\n $elem.querySelector(\"[toggle-sidebar]\").addEventListener(\"click\", e => {\n r.dispatchEvent(new CustomEvent(\"toggleSidebar\", {\n bubbles: true,\n cancelable: false\n }));\n });\n return $elem;\n },\n\n /**\n * Crea Corner Derecho\n * Se usa para :\n * - titulos relacionados con los datos del sidebar Derecho\n *\n * @param {Object} config - Configuracion capibara\n * @return {Object} Elemento Dom corner\n */\n createCornerRight(config) {\n let str = `\n <div class=\"corner right\">\n <div class=\"corner-title\">\n <span>\n ${config.timeline.corner.right.label}\n </span>\n </div>\n <div class=\"progress-bar progress-bar-right hide-progress\"></div>\n </div>\n `;\n return _util_domUtils__WEBPACK_IMPORTED_MODULE_0__[\"default\"].createElementFromHTML(str);\n },\n\n /**\n * Crea Header Top\n * Se usa para :\n * - Manejo de tabs\n * - Botones de navegación y selección de fecha\n * - Boton toggle Dark mode\n * - Boton toggle Header extended\n *\n * @param {Object} config - Configuracion capibara\n * @return {Object} Elemento Dom\n */\n createHeaderTop(config) {\n let str = `\n <div class=\"header-top\">`;\n\n if (config.timeline.tabs) {\n str += `\n <div class=\"tab-select-container c-d-desktop-none c-d-mobile-flex\">\n <select class=\"tabs-select\" >`;\n config.timeline.tabs.forEach(tab => {\n if (!tab.isHidden) {\n str += ` <option value=\"${tab.id}\"> ${tab.label} </option>`;\n }\n });\n str += `\n </select>\n </div>`;\n str += `\n <div class=\"tabs-container c-d-desktop-flex c-d-mobile-none\">\n `;\n config.timeline.tabs.forEach(tab => {\n if (!tab.isHidden) {\n str += `\n <div class=\"tab ${tab.disabled ? 'disabled' : ''} ${tab.color}\" color=\"${tab.color}\" input-key=\"${tab.id}\" ${tab.tooltip ? 'cap-tooltip=\"' + tab.tooltip + '\"' : ''} >\n <span>${tab.label}</span>\n ${tab.icon || ''}\n </div>\n `;\n }\n });\n str += `\n </div>`;\n }\n\n str += `\n\n <div class=\"spacer\"></div>\n\n\n\n <button btn-prev class=\"btn-icon btn-icon-raised\">\n <span class=\"icon\">\n <svg style=\"width:24px;height:24px\" viewBox=\"0 0 24 24\">\n <path fill=\"currentColor\" d=\"M20,10V14H11L14.5,17.5L12.08,19.92L4.16,12L12.08,4.08L14.5,6.5L11,10H20Z\" />\n </svg>\n </span>\n\n <span class=\"loading-icon\">\n <svg version=\"1.1\" id=\"loader-1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\"\n width=\"32px\" height=\"32px\" viewBox=\"0 0 40 40\" enable-background=\"new 0 0 40 40\" xml:space=\"preserve\">\n <path opacity=\"0.2\" fill=\"#000\" d=\"M20.201,5.169c-8.254,0-14.946,6.692-14.946,14.946c0,8.255,6.692,14.946,14.946,14.946\n s14.946-6.691,14.946-14.946C35.146,11.861,28.455,5.169,20.201,5.169z M20.201,31.749c-6.425,0-11.634-5.208-11.634-11.634\n c0-6.425,5.209-11.634,11.634-11.634c6.425,0,11.633,5.209,11.633,11.634C31.834,26.541,26.626,31.749,20.201,31.749z\"/>\n <path fill=\"#000\" d=\"M26.013,10.047l1.654-2.866c-2.198-1.272-4.743-2.012-7.466-2.012h0v3.312h0\n C22.32,8.481,24.301,9.057,26.013,10.047z\">\n <animateTransform attributeType=\"xml\"\n attributeName=\"transform\"\n type=\"rotate\"\n from=\"0 20 20\"\n to=\"360 20 20\"\n dur=\"1.5s\"\n repeatCount=\"indefinite\"/>\n </path>\n </svg>\n </span>\n </button>\n\n\n <button btn-calendar class=\"btn-icon btn-icon-raised\">\n <span>\n <svg style=\"width:24px;height:24px\" viewBox=\"0 0 24 24\">\n <path fill=\"currentColor\" d=\"M19,19H5V8H19M16,1V3H8V1H6V3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3H18V1M17,12H12V17H17V12Z\" />\n </svg>\n </span>\n <span class=\"loading-icon\">\n <svg version=\"1.1\" id=\"loader-1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\"\n width=\"32px\" height=\"32px\" viewBox=\"0 0 40 40\" enable-background=\"new 0 0 40 40\" xml:space=\"preserve\">\n <path opacity=\"0.2\" fill=\"#000\" d=\"M20.201,5.169c-8.254,0-14.946,6.692-14.946,14.946c0,8.255,6.692,14.946,14.946,14.946\n s14.946-6.691,14.946-14.946C35.146,11.861,28.455,5.169,20.201,5.169z M20.201,31.749c-6.425,0-11.634-5.208-11.634-11.634\n c0-6.425,5.209-11.634,11.634-11.634c6.425,0,11.633,5.209,11.633,11.634C31.834,26.541,26.626,31.749,20.201,31.749z\"/>\n <path fill=\"#000\" d=\"M26.013,10.047l1.654-2.866c-2.198-1.272-4.743-2.012-7.466-2.012h0v3.312h0\n C22.32,8.481,24.301,9.057,26.013,10.047z\">\n <animateTransform attributeType=\"xml\"\n attributeName=\"transform\"\n type=\"rotate\"\n from=\"0 20 20\"\n to=\"360 20 20\"\n dur=\"1.5s\"\n repeatCount=\"indefinite\"/>\n </path>\n </svg>\n </span>\n </button>\n\n <button btn-next class=\"btn-icon btn-icon-raised\">\n <span>\n <svg style=\"width:24px;height:24px\" viewBox=\"0 0 24 24\">\n <path fill=\"currentColor\" d=\"M4,10V14H13L9.5,17.5L11.92,19.92L19.84,12L11.92,4.08L9.5,6.5L13,10H4Z\" />\n </svg>\n </span>\n <span class=\"loading-icon\">\n <svg version=\"1.1\" id=\"loader-1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\"\n width=\"32px\" height=\"32px\" viewBox=\"0 0 40 40\" enable-background=\"new 0 0 40 40\" xml:space=\"preserve\">\n <path opacity=\"0.2\" fill=\"#000\" d=\"M20.201,5.169c-8.254,0-14.946,6.692-14.946,14.946c0,8.255,6.692,14.946,14.946,14.946\n s14.946-6.691,14.946-14.946C35.146,11.861,28.455,5.169,20.201,5.169z M20.201,31.749c-6.425,0-11.634-5.208-11.634-11.634\n c0-6.425,5.209-11.634,11.634-11.634c6.425,0,11.633,5.209,11.633,11.634C31.834,26.541,26.626,31.749,20.201,31.749z\"/>\n <path fill=\"#000\" d=\"M26.013,10.047l1.654-2.866c-2.198-1.272-4.743-2.012-7.466-2.012h0v3.312h0\n C22.32,8.481,24.301,9.057,26.013,10.047z\">\n <animateTransform attributeType=\"xml\"\n attributeName=\"transform\"\n type=\"rotate\"\n from=\"0 20 20\"\n to=\"360 20 20\"\n dur=\"1.5s\"\n repeatCount=\"indefinite\"/>\n </path>\n </svg>\n </span>\n </button>\n\n <div class=\"spacer\"></div>\n\n <button toggle-dark class=\"btn-icon btn-header c-d-mobile-none ${config.timeline.withDarkToggle == false ? 'hide' : ''}\">\n <span class=\"hide-light\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\">\n <path fill=\"currentColor\" d=\"M13,4.8C9,4.8 9,19.2 13,19.2C17,19.2 22,16.5 22,12C22,7.5 17,4.8 13,4.8M13.1,17.2C12.7,16.8 12,15 12,12C12,9 12.7,7.2 13.1,6.8C16,6.9 20,8.7 20,12C20,15.3 15.9,17.1 13.1,17.2M8,10.5C8,11 7.9,11.5 7.9,12C7.9,12.2 7.9,12.4 7.9,12.6L2.4,14L1.9,12.1L8,10.5M2,7L9.4,5.1C9.2,5.4 9,5.8 8.9,6.3C8.8,6.6 8.7,7 8.6,7.4L2.5,8.9L2,7M8.2,15.5C8.3,16.2 8.5,16.9 8.7,17.4L2.4,19L1.9,17.1L8.2,15.5Z\" />\n </svg>\n </span>\n <span class=\"hide-dark\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\">\n <path fill=\"currentColor\" d=\"M13,4.8C9,4.8 9,19.2 13,19.2C17,19.2 22,16.5 22,12C22,7.5 17,4.8 13,4.8M13.1,17.2C12.7,16.8 12,15 12,12C12,9 12.7,7.2 13.1,6.8C16,6.9 20,8.7 20,12C20,15.3 16,17.1 13.1,17.2M2,5H9.5C9.3,5.4 9,5.8 8.9,6.4C8.8,6.6 8.8,6.8 8.7,7H2V5M8,11H2V9H8.2C8.1,9.6 8.1,10.3 8,11M8.7,17C8.9,17.8 9.2,18.4 9.6,19H2.1V17H8.7M8.2,15H2V13H8C8.1,13.7 8.1,14.4 8.2,15Z\" />\n </svg>\n </span>\n </button>`;\n\n if (config.timeline.header.extend.enabled !== false) {\n str += `<button toggle-header class=\"btn-icon btn-icon-raised\">\n <span>\n <svg style=\"width:24px;height:24px\" viewBox=\"0 0 24 24\">\n <path fill=\"currentColor\" d=\"M7.41,8.58L12,13.17L16.59,8.58L18,10L12,16L6,10L7.41,8.58Z\" />\n </svg>\n </span>\n </button>`;\n }\n\n str += `</div>`;\n /*\n `\n <button toggle-sidebar-right class=\"btn-icon btn-icon-raised\">\n <span>\n <svg style=\"width:24px;height:24px\" viewBox=\"0 0 24 24\">\n <path fill=\"currentColor\" d=\"M15.41,16.58L10.83,12L15.41,7.41L14,6L8,12L14,18L15.41,16.58Z\" />\n </svg>\n </span>\n </button>\n </div>\n `;\n */\n\n let $r = _util_domUtils__WEBPACK_IMPORTED_MODULE_0__[\"default\"].createElementFromHTML(str);\n $r.querySelector(\"[toggle-dark]\").addEventListener(\"click\", e => {\n $r.dispatchEvent(new CustomEvent(\"toggleDark\", {\n bubbles: true,\n cancelable: false\n }));\n });\n $r.querySelector(\"[btn-calendar]\").addEventListener(\"click\", e => {\n let x = e.x;\n let y = e.y;\n $r.dispatchEvent(new CustomEvent(\"clickCalendarIcon\", {\n bubbles: true,\n cancelable: false,\n detail: {\n x,\n y\n }\n }));\n });\n let $btnToggleHeader = $r.querySelector(\"[toggle-header]\");\n\n if ($btnToggleHeader) {\n $btnToggleHeader.addEventListener(\"click\", e => {\n $r.dispatchEvent(new CustomEvent(\"toggleHeader\", {\n bubbles: true,\n cancelable: false\n }));\n });\n }\n /*\n $r.querySelector(\"[toggle-sidebar-right]\").addEventListener(\"click\", e => {\n $r.dispatchEvent(new CustomEvent(\"toggleSidebarRight\", {\n bubbles: true,\n cancelable: false,\n }));\n });\n */\n\n\n $r.querySelector(\"[btn-prev]\").addEventListener(\"click\", e => {\n $r.dispatchEvent(new CustomEvent(\"headerPrev\", {\n bubbles: true,\n cancelable: false,\n detail: {\n originalEvt: e\n }\n }));\n });\n $r.querySelector(\"[btn-calendar]\").addEventListener(\"click\", e => {\n $r.dispatchEvent(new CustomEvent(\"headerCalendar\", {\n bubbles: true,\n cancelable: false,\n detail: {\n originalEvt: e\n }\n }));\n });\n $r.querySelector(\"[btn-next]\").addEventListener(\"click\", e => {\n $r.dispatchEvent(new CustomEvent(\"headerNext\", {\n bubbles: true,\n cancelable: false,\n detail: {\n originalEvt: e\n }\n }));\n });\n $r.querySelectorAll(\".tab:not(.disabled)\").forEach($tab => {\n $tab.addEventListener(\"click\", e => {\n let key = e.currentTarget.getAttribute(\"input-key\");\n\n if (key) {\n let tabSelected = config.timeline.tabs.find(tab => tab.id == key);\n\n if (tabSelected) {\n $r.dispatchEvent(new CustomEvent(\"selectTabHeader\", {\n bubbles: true,\n cancelable: false,\n detail: {\n tab: tabSelected\n }\n }));\n }\n }\n });\n });\n $r.querySelectorAll(\".tabs-select:not(.disabled)\").forEach($tab => {\n $tab.addEventListener(\"change\", e => {\n let key = parseFloat(e.currentTarget.value);\n\n if (key) {\n let tabSelected = config.timeline.tabs.find(tab => tab.id == key);\n\n if (tabSelected) {\n $r.dispatchEvent(new CustomEvent(\"selectTabHeader\", {\n bubbles: true,\n cancelable: false,\n detail: {\n tab: tabSelected\n }\n }));\n }\n }\n });\n });\n return $r;\n },\n\n /**\n * Crea Header\n * Se usa para :\n * - Mostrar fechas en header\n *\n * @param {Object} config - Configuracion capibara\n * @return {Object} Elemento Dom\n */\n createHeader(config) {\n let $elem = _util_domUtils__WEBPACK_IMPORTED_MODULE_0__[\"default\"].createElement(\"header\");\n return this.redrawHeader(config, $elem);\n },\n\n /**\n * Recrea Header, usado para redibujar\n * utiliza $elem como elemento dom donde recrearlo\n *\n * @param {Object} config - Configuracion capibara\n * @param {Object} $elem - Elemento Dom donde crea Header\n * @return {Object} Elemento Dom\n */\n redrawHeader(config, $elem) {\n let datesTree = _util_dateUtils__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getDateTreeRange(new Date(config.timeline.start), new Date(config.timeline.end));\n let str = `<div class=\"header-container\"> `;\n Object.keys(datesTree).forEach(keyY => {\n let year = datesTree[keyY];\n str += `<div class=\"agno-calendario\">\n <span class=\"agno hide\">${keyY}</span>\n <div class=\"meses\">`;\n Object.keys(year).forEach(keyM => {\n let month = datesTree[keyY][keyM];\n str += ` <div class=\"mes-calendario\">\n <div class=\"mes ${Object.keys(month).length < 3 ? 'mes-reduced mes-reduced-' + Object.keys(month).length : ''}\">\n <div class=\"mes-label\">\n ${_util_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getMonthByPosition(keyM)} ${keyY}\n </div>\n </div>\n <div class=\"dias\">`;\n Object.keys(month).forEach(keyD => {\n let day = datesTree[keyY][keyM][keyD];\n let isWeekend = day.isWeekend;\n let isToday = day.isToday;\n let date = _util_dateUtils__WEBPACK_IMPORTED_MODULE_2__[\"default\"].formatDate(day.Date);\n str += `<div class=\"dia-calendario ${isToday ? 'today' : ''} ${isWeekend ? 'weekend' : ''} ${config.timeline.dateSelectable ? 'is-clickeable' : ''}\" date=\"${date}\">${keyD}</div>`;\n });\n str += `</div></div>`;\n });\n str += `</div> </div>`;\n });\n str += `</div>`;\n $elem.innerHTML = \"\";\n $elem.append(_util_domUtils__WEBPACK_IMPORTED_MODULE_0__[\"default\"].createElementFromHTML(str));\n\n if (config.timeline.dateSelectable) {\n $elem.querySelectorAll(\".dia-calendario[date]\").forEach($dia => {\n $dia.addEventListener(\"click\", evt => {\n $elem.dispatchEvent(new CustomEvent(\"clickDate\", {\n bubbles: true,\n cancelable: false,\n detail: {\n $elem: $dia,\n date: $dia.getAttribute(\"date\")\n }\n }));\n });\n });\n }\n\n return $elem;\n },\n\n /**\n * Crea Header extended\n * Se usa para :\n * -Mostrar inputs y datos para fechas en header\n *\n * @param {Object} config - Configuracion capibara\n * @return {Object} Elemento Dom headerExtended\n */\n createHeaderExtended(config) {\n if (config.timeline.header.extend.enabled == false) return null;\n let dates = _util_dateUtils__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getDateRange(new Date(config.timeline.start), new Date(config.timeline.end));\n let str = `<div class=\"header-container-extended\">`;\n config.timeline.header.extend.data.forEach((d, d_index) => {\n if (d.isHidden) return \"\";\n let isPersistent = d.isPersistent;\n str += `<div class=\"input-list ${isPersistent ? 'persistent' : ''}\">`;\n str += dates.map(date => {\n let value = '';\n let isFuture = _util_dateUtils__WEBPACK_IMPORTED_MODULE_2__[\"default\"].isFuture(date);\n let isToday = _util_dateUtils__WEBPACK_IMPORTED_MODULE_2__[\"default\"].isToday(date);\n\n if (d.data) {\n let dataFounded = d.data.find(dataInput => {\n return _util_dateUtils__WEBPACK_IMPORTED_MODULE_2__[\"default\"].isSameDate(new Date(dataInput.date), date);\n });\n\n if (dataFounded) {\n value = dataFounded.value || '';\n }\n }\n\n if (d.editable === false || isFuture && d.editableFuture == false || isToday && d.editableToday == false) {\n return `<div>\n <span date=\"${date}\" \n index=\"${d_index}\" \n class=\"${date.varName} ${d.color ? 'c-' + d.color + '--text' : ''}\" > \n ${value} \n </span>\n </div>`;\n }\n\n let isDisabled = false;\n\n if (config.timeline.editable === false) {\n isDisabled = true;\n }\n\n return `<div class=\"dia-input\">\n <input \n date=\"${date}\" \n index=\"${d_index}\" \n class=\"header-input \n ${date.varName} ${d.color ? 'c-' + d.color + '--text' : ''}\" \n type=\"number\"\n ${isDisabled ? 'disabled' : ''} \n value=\"${value}\">\n </div>`;\n }).join(\"\");\n str += `</div>`;\n });\n str += `</div>`;\n let r = _util_domUtils__WEBPACK_IMPORTED_MODULE_0__[\"default\"].createElementFromHTML(str);\n r.querySelectorAll(\"input.header-input\").forEach(input => {\n input.addEventListener(\"input\", e => {\n let date = e.currentTarget.getAttribute(\"date\");\n let index = e.currentTarget.getAttribute(\"index\");\n let value = e.currentTarget.value;\n let typeData = config.timeline.header.extend.data[index]; //refresh config value\n\n let data = typeData.data.find(d => _util_dateUtils__WEBPACK_IMPORTED_MODULE_2__[\"default\"].isSameDate(new Date(d.date), new Date(date)));\n data.value = value;\n r.dispatchEvent(new CustomEvent(\"changeInputHeader\", {\n bubbles: true,\n cancelable: false,\n detail: {\n date: date,\n typeData: typeData,\n value: value\n }\n }));\n });\n });\n return r;\n },\n\n /**\n * Crear Sidebar Izquierdo\n * - Maneja items como arbol de 2 niveles (parent, children)\n * - El sidebar se divide en navList - InitialNav - extendedNav - BtnNav\n * - Se agrega itemDetail, para detalles de items\n *\n *\n * TODO: para evitar incrustar las ids en los inputs, se deben crear\n * los nodos uno por uno como elemento DOM, y agregarles los eventos directamente\n * ahora se hace seleccionando todos los inputs con querySelectorAll\n *\n * @param {Object} config - Configuracion capibara\n * @return {Object} Elemento Dom Sidebar Izquierdo\n */\n createNavLeft(config, tab = null) {\n let $elem = _util_domUtils__WEBPACK_IMPORTED_MODULE_0__[\"default\"].createElement(\"nav\", {\n className: \"left\"\n });\n return this.redrawNavLeft($elem, config, tab);\n },\n\n /**\n * Recrea Sidebar izquierdo, usado para redibujar\n * Utiliza $elem como elemento dom donde recrearlo\n *\n *\n * @param {Object} $elem - Elemento Dom donde crea el sidebar izquierdo\n * @param {Object} config - Configuracion capibara\n * @return {Object} Elemento Dom navLeft\n */\n redrawNavLeft($elem, config, tab = null) {\n let navList = \"\";\n let initialNavList = \"\";\n let exNavList = \"\";\n let btnNavList = \"\";\n let isDisabled = false;\n\n if (config.timeline.editable === false) {\n isDisabled = true;\n }\n\n config.data.forEach(d => {\n navList += `\n <div class=\"nav-item\">\n\n\n <div class=\"nav-item-container parent\">`;\n\n if (d.children) {\n navList += `<button class=\"tree-icon ${d.hidden ? '' : 'rotate'}\" item-id=\"${d.id || -1}\" type-node=\"${d.type || ''}\" >\n <span>\n <svg style=\"width:24px;height:24px\" viewBox=\"0 0 24 24\">\n <path fill=\"currentColor\" d=\"M7.41,8.58L12,13.17L16.59,8.58L18,10L12,16L6,10L7.41,8.58Z\" />\n </svg>\n </span>\n </button>`;\n }\n\n navList += `\n <div class=\"item-title truncate full-width ${d.clickeable ? 'clickeable' : ''} \" item-id=\"${d.id || -1}\" type-node=\"${d.type || ''}\" >\n ${d.label}\n </div>\n </div>`;\n\n if (d.children) {\n navList += `\n <div class=\"children-items ${d.hidden ? 'hide' : ''} \" child-list=\"${d.id || -1}\">`;\n d.children.forEach(c => {\n navList += `\n <div class=\"child-nav-item\">\n <div class=\"nav-item-container\">\n `;\n /*\n <span class=\"nav-item-icon\">\n <svg style=\"width:24px;height:24px\" viewBox=\"0 0 24 24\">\n <path fill=\"currentColor\" d=\"M19,15L13,21L11.58,19.58L15.17,16H4V4H6V14H15.17L11.58,10.42L13,9L19,15Z\" />\n </svg>\n </span>\n */\n\n navList += `\n ${c.light ? '<span class=\"light ' + (c.light ? c.light + '-light' : '') + '\"></span>' : ''}\n\n <div class=\"item-title ${c.clickeable ? 'clickeable' : ''}\" item-id=\"${c.id || -1}\" type-node=\"${c.type || ''}\">\n <div class=\"truncate\">\n ${c.label}\n </div>\n </div>\n </div>\n </div>`;\n });\n navList += `\n </div>`;\n }\n\n navList += `</div>`; //initial\n\n initialNavList += `<div class=\"initial-nav-item parent\">`;\n\n if (d.withNav) {\n config.timeline.nav.left.initial.vars.forEach(v => {\n let value = d.values[v.varName] ? d.values[v.varName] : '';\n\n if (v.round && !isNaN(value)) {\n value = _util_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].round(value, v.round);\n }\n\n if (v.input) {\n switch (v.input) {\n case 'hour':\n value = value.split(\":\");\n let hhValue = value[0];\n let mmValue = value[1];\n initialNavList += `\n <div class=\"item-col has-input\">\n <div class=\"hour-input\">\n <input type=\"number\"\n input-type=\"time\"\n max=\"23\"\n min=\"00\"\n input-key=\"${v.key || ''}\"\n item-id=\"${d.id || -1}\"\n type-node=\"${d.type || ''}\"\n value=\"${hhValue}\"\n ${isDisabled ? 'disabled' : ''}\n class=\"hh\">\n <span>:</span>\n <input type=\"number\"\n input-type=\"time\"\n max=\"59\"\n min=\"00\"\n input-key=\"${v.key || ''}\"\n item-id=\"${d.id || -1}\"\n type-node=\"${d.type || ''}\"\n value=\"${mmValue}\"\n ${isDisabled ? 'disabled' : ''}\n class=\"mm\">\n </div>\n </div>`;\n break;\n\n case 'text':\n case 'number':\n default:\n initialNavList += `\n <div class=\"item-col has-input\">\n <input \n type=\"${v.input || 'text'}\"\n input-type=\"${v.input || 'text'}\"\n input-key=\"${v.key || ''}\"\n item-id=\"${d.id || -1}\"\n type-node=\"${d.type || ''}\"\n ${isDisabled ? 'disabled' : ''}\n value=\"${value}\"/>\n </div>`;\n }\n } else {\n initialNavList += `\n <div class=\"item-col\">\n ${value}\n </div>`;\n }\n });\n }\n\n initialNavList += `\n </div>`;\n\n if (d.children) {\n d.children.forEach(c => {\n initialNavList += `<div class=\"child-initial-nav-item ${d.hidden ? 'hide' : ''}\" child=\"${d.id || -1}\">`;\n config.timeline.nav.left.initial.vars.forEach(v => {\n if (v.onlyTab && tab && v.onlyTab !== tab.key) return;\n let value = c.values[v.varName] ? c.values[v.varName] : '';\n\n if (v.round && !isNaN(value)) {\n value = _util_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].round(value, v.round);\n }\n\n if (v.input) {\n switch (v.input) {\n case 'hour':\n value = value.split(\":\");\n let hhValue = value[0];\n let mmValue = value[1];\n initialNavList += `\n <div class=\"item-col has-input\">\n <div class=\"hour-input\">\n <input type=\"number\"\n input-type=\"time\"\n max=\"23\"\n min=\"00\"\n input-key=\"${v.key || ''}\"\n item-id=\"${c.id || -1}\"\n type-node=\"${c.type || ''}\"\n value=\"${hhValue}\"\n ${isDisabled ? 'disabled' : ''}\n class=\"hh\">\n <span>:</span>\n <input type=\"number\"\n input-type=\"time\"\n max=\"59\"\n min=\"00\"\n input-key=\"${v.key || ''}\"\n item-id=\"${c.id || -1}\"\n type-node=\"${c.type || ''}\"\n value=\"${mmValue}\"\n ${isDisabled ? 'disabled' : ''}\n class=\"mm\">\n </div>\n </div>`;\n break;\n\n case 'text':\n case 'number':\n default:\n initialNavList += `\n <div class=\"item-col has-input\">\n <input\n type=\"${v.input || 'text'}\"\n input-type=\"${v.input || 'text'}\"\n input-key=\"${v.key || ''}\"\n item-id=\"${c.id || -1}\"\n type-node=\"${c.type || ''}\"\n ${isDisabled ? 'disabled' : ''}\n value=\"${value}\"/>\n </div>`;\n }\n } else {\n initialNavList += `\n <div class=\"item-col\">\n ${value}\n </div>`;\n }\n });\n initialNavList += `\n </div>`;\n });\n } //Ext\n\n\n exNavList += `<div class=\"ex-nav-item parent\">`;\n\n if (d.withExNav) {\n config.timeline.nav.left.extend.vars.forEach(v => {\n let value = d.values[v.varName] ? d.values[v.varName] : '';\n\n if (v.round && !isNaN(value)) {\n value = _util_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].round(value, v.round);\n }\n\n if (v.input) {\n switch (v.input) {\n case 'hour':\n value = value.split(\":\");\n let hhValue = value[0];\n let mmValue = value[1];\n exNavList += `\n <div class=\"item-col has-input\">\n <div class=\"hour-input\">\n <input type=\"number\"\n input-type=\"time\"\n max=\"23\"\n min=\"0\"\n input-key=\"${v.key || ''}\"\n item-id=\"${d.id || -1}\"\n type-node=\"${d.type || ''}\"\n value=\"${hhValue}\"\n ${isDisabled ? 'disabled' : ''}\n class=\"hh\">\n <span>:</span>\n <input type=\"number\"\n input-type=\"time\"\n max=\"59\"\n min=\"0\"\n input-key=\"${v.key || ''}\"\n item-id=\"${d.id || -1}\"\n type-node=\"${d.type || ''}\"\n value=\"${mmValue}\"\n ${isDisabled ? 'disabled' : ''}\n class=\"mm\">\n </div>\n </div>`;\n break;\n\n case 'text':\n case 'number':\n default:\n exNavList += `\n <div class=\"item-col has-input\">\n <input\n type=\"${v.input || 'text'}\"\n input-type=\"${v.input || 'text'}\"\n input-key=\"${v.key || ''}\"\n item-id=\"${d.id || -1}\"\n type-node=\"${d.type || ''}\"\n ${isDisabled ? 'disabled' : ''}\n value=\"${value}\"/>\n </div>`;\n }\n } else {\n exNavList += `\n <div class=\"item-col\">\n ${value}\n </div>`;\n }\n });\n }\n\n exNavList += `\n </div>`;\n\n if (d.children) {\n d.children.forEach(c => {\n exNavList += `<div class=\"child-ex-nav-item ${d.hidden ? 'hide' : ''}\" child=\"${d.id || -1}\">`;\n config.timeline.nav.left.extend.vars.forEach(v => {\n if (v.onlyTab && tab && v.onlyTab !== tab.key) return;\n let value = c.values[v.varName] ? c.values[v.varName] : '';\n\n if (v.round && !isNaN(value)) {\n value = _util_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].round(value, v.round);\n }\n\n if (v.input) {\n switch (v.input) {\n case 'hour':\n value = value.split(\":\");\n let hhValue = value[0];\n let mmValue = value[1];\n exNavList += `\n <div class=\"item-col has-input\">\n <div class=\"hour-input\">\n <input type=\"number\"\n input-type=\"time\"\n max=\"23\"\n min=\"0\"\n input-key=\"${v.key || ''}\"\n item-id=\"${c.id || -1}\"\n type-node=\"${c.type || ''}\"\n value=\"${hhValue}\"\n ${isDisabled ? 'disabled' : ''}\n class=\"hh\">\n <span>:</span>\n <input type=\"number\"\n input-type=\"time\"\n max=\"59\"\n min=\"0\"\n input-key=\"${v.key || ''}\"\n item-id=\"${c.id || -1}\"\n type-node=\"${c.type || ''}\"\n value=\"${mmValue}\"\n ${isDisabled ? 'disabled' : ''}\n class=\"mm\">\n </div>\n </div>`;\n break;\n\n case 'text':\n case 'number':\n default:\n exNavList += `\n <div class=\"item-col has-input\">\n <input \n type=\"${v.input || 'text'}\"\n input-type=\"${v.input || 'text'}\"\n input-key=\"${v.key || ''}\"\n item-id=\"${c.id || -1}\"\n type-node=\"${c.type || ''}\"\n ${isDisabled ? 'disabled' : ''}\n value=\"${value}\"/>\n </div>`;\n }\n } else {\n exNavList += `\n <div class=\"item-col\">\n ${value}\n </div>`;\n }\n });\n exNavList += `\n </div>`;\n });\n } //buttons\n\n\n btnNavList += `<div class=\"btn-nav-item parent\">\n <div class=\"btn-nav-item-content\">`;\n\n if (config.timeline.nav.left.buttons && config.timeline.nav.left.buttons.vars) {\n config.timeline.nav.left.buttons.vars.forEach(btn => {\n if (d.withBtnNav) {\n if (btn.icon) {\n btnNavList += `\n <button class=\"btn-shape ${btn.className}\" \n input-key=\"${btn.key || ''}\" \n item-id=\"${d.id || -1}\" \n ${isDisabled ? 'disabled' : ''}\n type-node=\"${d.type || ''}\">\n ${btn.icon ? btn.icon : ''}\n </button>`;\n }\n\n if (btn.iconFormatter) {\n btnNavList += `\n <button class=\"btn-shape ${btn.className}\"\n input-key=\"${btn.key || ''}\"\n item-id=\"${d.id || -1}\"\n ${isDisabled ? 'disabled' : ''}\n type-node=\"${d.type || ''}\">\n ${btn.iconFormatter ? btn.iconFormatter(d, btn) : ''}\n </button>`;\n }\n\n if (btn.shape) {\n btnNavList += `\n <button class=\"btn-shape btn-${btn.shape} ${btn.className}\" \n input-key=\"${btn.key || ''}\" \n item-id=\"${d.id || -1}\" \n ${isDisabled ? 'disabled' : ''}\n type-node=\"${d.type || ''}\">\n <span>\n ${btn.formatter ? btn.formatter(d, btn) : ''}\n </span>\n </button>`;\n }\n }\n });\n }\n\n btnNavList += `\n </div>\n </div>`;\n\n if (d.children) {\n d.children.forEach(c => {\n //buttons\n btnNavList += `<div class=\"btn-child-nav-item parent ${d.hidden ? 'hide' : ''}\" child=\"${d.id || -1}\">\n <div class=\"btn-nav-item-content\">`;\n\n if (config.timeline.nav.left.buttons && config.timeline.nav.left.buttons.vars) {\n config.timeline.nav.left.buttons.vars.forEach(btn => {\n if (btn.icon) {\n btnNavList += `\n <button class=\"btn-shape ${btn.className}\"\n input-key=\"${btn.key || ''}\" \n item-id=\"${c.id || -1}\" \n ${isDisabled ? 'disabled' : ''}\n type-node=\"${c.type || ''}\">\n ${btn.icon ? btn.icon : ''}\n </button>`;\n }\n\n if (btn.iconFormatter) {\n btnNavList += `\n <button class=\"btn-shape ${btn.className}\" \n input-key=\"${btn.key || ''}\" \n item-id=\"${c.id || -1}\" \n ${isDisabled ? 'disabled' : ''}\n type-node=\"${c.type || ''}\">\n ${btn.iconFormatter ? btn.iconFormatter(c, btn) : ''}\n </button>`;\n }\n\n if (btn.shape) {\n btnNavList += `\n <button class=\"btn-shape \n btn-${btn.shape} ${btn.className}\" \n input-key=\"${btn.key || ''}\" \n item-id=\"${c.id || -1}\" \n ${isDisabled ? 'disabled' : ''}\n type-node=\"${c.type || ''}\">\n <span>\n ${btn.formatter ? btn.formatter(c, btn) : ''}\n </span>\n </button>`;\n }\n });\n }\n\n btnNavList += `\n </div>\n </div>`;\n });\n }\n });\n let itemDetail = ` <div class=\"detail-nav-item hide\">\n ${this.getDetailNavItemContent()}\n </div>`;\n let str = `<div class=\"nav-container\">\n ${itemDetail}\n <div class=\"nav-item-list\">\n ${navList}\n </div>\n <div class=\"initial-nav-list\">\n ${initialNavList}\n </div>\n <div class=\"extend-nav-list\">\n ${exNavList}\n </div>\n <div class=\"btn-nav-list\">\n ${btnNavList}\n </div>\n </div>`;\n let navContainer = _util_domUtils__WEBPACK_IMPORTED_MODULE_0__[\"default\"].createElementFromHTML(str);\n $elem.innerHTML = \"\";\n $elem.append(navContainer); //detalle de nav-item\n\n $elem.querySelectorAll(\".item-title.clickeable\").forEach(i => {\n i.addEventListener(\"mouseover\", e => {\n let pos = _util_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].eventToPositionNavLeft(config, e, $elem);\n let itemId = i.getAttribute(\"item-id\");\n let item = _util_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getItemById(config, itemId);\n let typeNode = i.getAttribute(\"type-node\");\n i.dispatchEvent(new CustomEvent(\"overNavItem\", {\n bubbles: true,\n cancelable: false,\n detail: {\n originalEvt: e,\n item: item,\n type: typeNode,\n pos: pos\n }\n }));\n });\n }); //oculta detalle de nav-item, al salir del nav-item-list\n\n $elem.querySelectorAll(\".nav-item-list\").forEach(i => {\n i.addEventListener(\"mouseleave\", e => {\n i.dispatchEvent(new CustomEvent(\"leaveNavItem\", {\n bubbles: true,\n cancelable: false\n }));\n });\n }); //oculta detalle de nav-item-list, al salir de nav-item\n\n $elem.querySelectorAll(\".item-title:not(.clickeable)\").forEach(i => {\n i.addEventListener(\"mousemove\", e => {\n i.dispatchEvent(new CustomEvent(\"leaveNavItem\", {\n bubbles: true,\n cancelable: false\n }));\n });\n });\n $elem.querySelectorAll(\".item-title.clickeable\").forEach(i => {\n i.addEventListener(\"click\", e => {\n let itemId = i.getAttribute(\"item-id\");\n let typeNode = i.getAttribute(\"type-node\");\n let value = i.value;\n i.dispatchEvent(new CustomEvent(\"clickNavLeftItem\", {\n bubbles: true,\n cancelable: false,\n detail: {\n itemId: itemId,\n type: typeNode,\n value: value\n }\n }));\n });\n });\n $elem.querySelectorAll(\"input\").forEach(i => {\n i.addEventListener(\"change\", e => {\n let inputType = i.getAttribute(\"input-type\");\n let key = i.getAttribute(\"input-key\");\n let itemId = i.getAttribute(\"item-id\");\n let typeNode = i.getAttribute(\"type-node\");\n let item = _util_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getItemById(config, itemId);\n let value = i.value;\n\n if (inputType == \"time\") {\n let hh_input = i.parentElement.querySelector(\"input.hh\").value;\n let mm_input = i.parentElement.querySelector(\"input.mm\").value;\n mm_input = mm_input < 10 ? \"0\" + parseFloat(mm_input) : mm_input;\n i.parentElement.querySelector(\"input.mm\").value = mm_input;\n value = hh_input + \":\" + mm_input;\n }\n\n i.dispatchEvent(new CustomEvent(\"saveNavLeftInput\", {\n bubbles: true,\n cancelable: false,\n detail: {\n key: key,\n itemId: itemId,\n item: item,\n type: typeNode,\n value: value,\n tabSelected: tab\n }\n }));\n });\n });\n $elem.querySelectorAll(\"button.btn-shape\").forEach(i => {\n i.addEventListener(\"click\", e => {\n let key = i.getAttribute(\"input-key\");\n let itemId = i.getAttribute(\"item-id\");\n let typeNode = i.getAttribute(\"type-node\");\n i.dispatchEvent(new CustomEvent(\"clickNavLeftButton\", {\n bubbles: true,\n cancelable: false,\n detail: {\n key: key,\n itemId: itemId,\n type: typeNode\n }\n }));\n });\n });\n $elem.querySelectorAll(\"button.tree-icon\").forEach(i => {\n i.addEventListener(\"click\", e => {\n let itemId = i.getAttribute(\"item-id\");\n let typeNode = i.getAttribute(\"type-node\");\n let dataConfig = config.data.find(d => d.id == itemId);\n let $navItem = e.currentTarget.closest(\".nav-item\");\n let $children = $navItem.querySelector(\".children-items\");\n let itemsToHide = e.currentTarget.closest(\"nav.left\").querySelectorAll(\"[child='\" + itemId + \"'], [child-list='\" + itemId + \"']\");\n\n if ($children) {\n if ($children.classList.contains(\"hide\")) {\n e.currentTarget.classList.add('rotate');\n itemsToHide.forEach(i => i.classList.remove(\"hide\"));\n dataConfig.hidden = false;\n } else {\n e.currentTarget.classList.remove('rotate');\n itemsToHide.forEach(i => i.classList.add(\"hide\"));\n dataConfig.hidden = true;\n }\n }\n\n i.dispatchEvent(new CustomEvent(\"clickNavLeftTreeIcon\", {\n bubbles: true,\n cancelable: false,\n detail: {\n itemId: itemId,\n type: typeNode\n }\n })); //e.currentTarget.parent\n });\n });\n return $elem;\n },\n\n /**\n * Crea Html como String, para el detalle de items en el Sidebar Izquierdo\n *\n * @param {Object} [item={}] - Configuracion de item\n * @return {String} Html de ventana de detalle\n */\n getDetailNavItemContent(item = {}) {\n if (item.navOver == undefined) item.navOver = {};\n return `\n <div class=\"header-detail\">\n <div class=\"title truncate\">\n ${item.label || ''}\n </div>\n <div class=\"subtitle\">\n ${item.navOver.subtitle || ''}\n </div>\n <div class=\"header-chip ${item.light ? item.light + '-light' : ''} ${item.navOver.chip ? '' : 'hide'}\">\n ${item.navOver.chip || ''}\n </div>\n </div>\n\n <div class=\"detail-container\">\n ${item.navOver.content || ''}\n </div>`;\n },\n\n /**\n * Crea Sidebar Derecho\n * Usado principalmente para formulario de ingreso de datos para los dias\n * seleccionados\n *\n * @param {Object} config - Configuracion capibara\n * @param {Object} tab - Tab de referencia, para la creacion del formulario\n * @return {Object} {element, inputs}, element es el elemento Dom del sidebar,\n * inputs es un array de elementos Dom de cada input creado\n * (no son elementos html de tipo input)\n */\n createNavRight(config, tab = null) {\n var $elem = _util_domUtils__WEBPACK_IMPORTED_MODULE_0__[\"default\"].createElement(\"nav\", {\n className: \"right\"\n });\n return this.redrawNavRight(config, $elem, tab);\n },\n\n /**\n * Recrea Sidebar Derecho\n * Utiliza $elem como elemento dom donde recrearlo\n *\n * @param {Object} config - Configuracion capibara\n * @param {Object} $elem - Elemento Dom donde crea el sidebar derecho\n * @param {Object} tab - Tab de referencia, para la creacion del formulario\n * @param {Object} dataDay - datos del dia seleccionando, para autorrelleno de formulario\n * @param {Object} daySelected - datos del dia seleccionado\n * @param {String} daySelected.date - fecha del dia seleccionado\n * @param {Object} daySelected.item - Item de Sidebar relacionado al dia seleccionado\n * @param {Object} daySelected.pos - posicion de dia seleccionado\n * @return {Object} Elemento Dom Sidebar Derecho\n */\n redrawNavRight(config, $elem, tab = null, dataDay = null, daySelected = null) {\n let $navRight = $elem; //dom.createElement(\"nav\",{className:\"right\"});\n\n let $divContainer = _util_domUtils__WEBPACK_IMPORTED_MODULE_0__[\"default\"].createElement(\"div\", {\n className: \"nav-input-container\"\n });\n let $inputs = [];\n let checkboxInputs = [];\n let tabSelected = tab;\n\n if (tabSelected && tabSelected.inputs) {\n tabSelected.inputs.forEach(i => {\n if (i.disabled) return;\n let $input = this.createInput(i, dataDay, daySelected);\n\n if ($input) {\n $divContainer.appendChild($input);\n $inputs.push($input);\n\n if (i.type == \"checkbox\") {\n checkboxInputs.push($input);\n }\n }\n });\n } //manejo de eventos para inputs con showIf\n\n\n if (checkboxInputs) {\n checkboxInputs.forEach($c => {\n //obtiene key de checkbox\n let key = $c.getAttribute('input-key');\n let props = tabSelected.inputs.find(i => {\n return i.key == key;\n });\n let isChecked = false;\n\n if (dataDay) {\n isChecked = _util_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getVarByPath(dataDay, props.varName);\n } //obtiene inputs relacionados desde config para mostrar/ocultar\n\n\n let inputsToHide = tabSelected.inputs.filter(i => {\n return i.showIf && i.showIf == key;\n });\n let inputsToHideKeys = inputsToHide.map(i => i.key); //obtiene inputs del dom, filtrando con inputsToHide\n\n let $inputsHidden = $inputs.filter($i => {\n let inputKey = $i.getAttribute(\"input-key\");\n return inputsToHideKeys.indexOf(inputKey) > -1;\n }); //si hay inputs,\n\n if ($inputsHidden) {\n if (!isChecked) {\n $inputsHidden.forEach($i => {\n $i.classList.add(\"hide\");\n });\n }\n\n $c.addEventListener(\"input\", e => {\n $inputsHidden.forEach($i => {\n let fn = $c.querySelector(\"input[type='checkbox']\").checked ? \"remove\" : \"add\";\n $i.classList[fn](\"hide\");\n });\n });\n }\n });\n }\n\n $divContainer.appendChild(this.createNavRightbuttons()); // save cancel buttons\n\n $navRight.innerHTML = \"\";\n $navRight.appendChild($divContainer);\n return {\n element: $navRight,\n inputs: $inputs\n };\n },\n\n /**\n * Crea Corner inferior izquierdo, como titulo para footer\n *\n * @param {Object} config - Configuracion capibara\n * @return {Object} Elemento Dom Corner Footer\n */\n createCornerFooter(config) {\n if (config.timeline.footer === undefined || config.timeline.footer.enabled == false) return null;\n let str = '';\n\n if (config.timeline.footer) {\n str += `<div class=\"corner-footer\">\n <div class=\"corner-title\">\n <span>\n ${config.timeline.footer.label}\n </span>\n </div>\n </div>`;\n }\n\n return _util_domUtils__WEBPACK_IMPORTED_MODULE_0__[\"default\"].createElementFromHTML(str);\n },\n\n /**\n * Crea Footer para planilla\n * Inicialmente creado para totales\n *\n * @param {Object} config - Configuracion capibara\n * @return {Object} Elemento Dom Corner Footer\n */\n createFooter(config) {\n if (config.timeline.footer === undefined || config.timeline.footer.enabled == false) return null;\n let str = `\n <footer>\n <div class=\"footer-container\">\n `;\n config.timeline.footer.data.forEach(d => {\n str += `\n <div class=\"footer-item\">${d.value}</div>\n `;\n });\n str += `\n </div>\n </footer>\n `;\n return _util_domUtils__WEBPACK_IMPORTED_MODULE_0__[\"default\"].createElementFromHTML(str);\n },\n\n /**\n * Crea Footer para planilla\n * Inicialmente creado para totales\n *\n * @param {Object} config - Configuracion capibara\n * @param {Object[]} selected - array de objetos, de dias seleccionados\n * @return {Object} Elemento Dom Corner Footer\n */\n createSelectBoard(config, selected) {\n let $elem = _util_domUtils__WEBPACK_IMPORTED_MODULE_0__[\"default\"].createElement(\"div\", {\n className: \"select-container\"\n });\n return this.redrawSelectBoard($elem, selected);\n },\n\n /**\n * Crea linea vertical para fecha Actual\n *\n * @param {Object} config - Configuracion capibara\n * @return {Object} Elemento Dom Corner Footer\n */\n createTodayLine(config) {\n return this.redrawTodayLine(config, _util_domUtils__WEBPACK_IMPORTED_MODULE_0__[\"default\"].createElement(\"div\", {\n className: \"today-line\"\n }));\n },\n\n /**\n * Recrea linea vertical para fecha Actual\n * si el elemento $elem no es enviado, se crea un nuevo elemento\n *\n * Si el dia actual no esta dentro del rango de fechas del config,\n * deshabilita la linea con la clase css .disable-line\n *\n * @param {Object} config - Configuracion capibara\n * @param {Object} [$elem=null] - Elemento Dom donde recrea la linea, si es null, la crea\n * @return {Object} Elemento Dom Corner Footer\n */\n redrawTodayLine(config, $elem = null) {\n let endTime = new Date(config.timeline.end).getTime();\n let todayTime = new Date().getTime();\n if ($elem == null) $elem = _util_domUtils__WEBPACK_IMPORTED_MODULE_0__[\"default\"].createElement(\"div\", {\n className: \"today-line\"\n });\n\n if (endTime < todayTime) {\n $elem.classList.add(\"disable-line\");\n } else {\n $elem.classList.remove(\"disable-line\");\n }\n\n let diffDays = Math.floor(_util_dateUtils__WEBPACK_IMPORTED_MODULE_2__[\"default\"].diffDays(config.timeline.start, _util_dateUtils__WEBPACK_IMPORTED_MODULE_2__[\"default\"].formatDate(new Date())));\n let dayWidth = parseFloat(_util_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getCSSVariable(config, \"--day-width\"));\n let diff = diffDays * dayWidth;\n diff += dayWidth / 2 - 2; // para centrar linea\n\n Object.assign($elem.style, {\n 'margin-left': diff + \"px\"\n });\n return $elem;\n },\n\n /**\n * Crea elemento FloatBox, que contiene los datos que se muestra en la tabla\n *\n * @param {Object} config - Configuracion capibara\n * @param {Object} tab - Tab de referencia, para mostrar datos configurados por tab\n * @return {Object} Elemento Dom Corner Footer\n */\n createFloatBox(config, tab) {\n let $container = _util_domUtils__WEBPACK_IMPORTED_MODULE_0__[\"default\"].createElement(\"div\", {\n className: \"float-box-container\"\n });\n return this.redrawFloatBox(config, tab, $container);\n },\n\n /**\n * Recrea elemento FloatBox, que contiene los datos que se muestra en la tabla\n * Se usa principalmente para mostrar datos en la tabla de la planilla\n * los muestra de manera flotante, calculando el Top y el Left segun la poscion\n *\n * Se consideran los elementos padres ocultos, para ocultar los datos\n *\n * Se insertan los elementos FloatBox, como elemento con datos de un item y dia especifico\n *\n *\n * @param {Object} config - Configuracion capibara\n * @param {Object} tab - Tab de referencia, para mostrar datos configurados por tab\n * @return {Object} Elemento Dom Corner Footer\n */\n redrawFloatBox(config, tab, $container) {\n $container.innerHTML = \"\";\n let tabSelected = tab || null;\n config.data.forEach(de => {\n //parent Data\n de.children.forEach(ds => {\n ds.data.forEach(data => {\n if ((!data.message || data.message.value == null) && Object.entries(data.values).length === 0) return; //children Data\n\n let position = this.getPositionFloatBox(config, data, ds);\n let className = '';\n\n if (data.message && data.message.value) {\n className += 'has-message ';\n }\n\n if (data.errors && data.errors.length > 0) {\n className += 'has-errors ';\n }\n\n if (de.hidden) {\n className += 'hide ';\n }\n\n let str = `\n <div class=\"float-box ${className} ${de.hidden ? 'hide' : ''}\"\n style=\"${position ? position : ''}\"\n item-id=\"${ds.id || -1}\"\n type-node=\"${ds.type || ''}\"> `;\n\n if (tabSelected && tabSelected.floatBox) {\n //numeros en el floatBox\n if (tabSelected.floatBox.nums) {\n tabSelected.floatBox.nums.forEach(n => {\n let dataFloatBox = null;\n let className = \"\";\n\n if (n.varName) {\n dataFloatBox = _util_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getVarByPath(data.values, n.varName);\n }\n\n let showIf = true;\n\n if (n.varShow) {\n showIf = Boolean(_util_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getVarByPath(data.values, n.varShow));\n dataFloatBox = dataFloatBox || \"\";\n }\n\n let hideIf = false;\n\n if (n.varHide) {\n hideIf = Boolean(_util_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getVarByPath(data.values, n.varHide));\n }\n\n if (n.shape) {\n className += \"shape-\" + n.shape;\n }\n\n if (dataFloatBox !== null && showIf && !hideIf) {\n str += `<span class=\"data ${n.color} ${className}\">${dataFloatBox}</span>`;\n }\n });\n } //puntos en el floatBox\n\n\n if (tabSelected.floatBox.dots) {\n str += `\n <div class=\"dot-container-middle\">`;\n tabSelected.floatBox.dots.forEach(n => {\n if (_util_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getVarByPath(data.values, n.varName) !== null) {\n str += `\n <div class=\"dot ${n.color} ${n.shape || ''}\"></div>`;\n }\n });\n str += `\n </div>`;\n }\n }\n\n str += `\n </div>`;\n let $elem = _util_domUtils__WEBPACK_IMPORTED_MODULE_0__[\"default\"].createElementFromHTML(str);\n $elem.addEventListener(\"mouseover\", e => {\n $elem.dispatchEvent(new CustomEvent(\"mouseOverFloatBox\", {\n bubbles: true,\n cancelable: false,\n detail: {\n item: ds,\n data: data,\n originalEvt: e\n }\n }));\n });\n $elem.addEventListener(\"click\", e => {\n $elem.dispatchEvent(new CustomEvent(\"clickFloatBox\", {\n bubbles: true,\n cancelable: false,\n detail: {\n item: ds,\n data: data,\n originalEvt: e\n }\n }));\n });\n $container.appendChild($elem);\n });\n });\n });\n return $container;\n },\n\n /**\n * Crea DetailDay, detalle de valores de item y Dia\n * se usa para:\n * - Muestra nombre de item y detalles\n * - Muestra capsulas de datos\n * - Muestra Pills, pildoras de datos resumidos\n * - Muestra alertas\n * - Muestra Mensaje\n *\n * @param {Object} config - Configuracion capibara\n * @param {Object} item - Item relacionado\n * @param {Object} dataDay - valores de item y Dia\n * @param {Boolean} [onlyStringContent = false] - para escoger si devuelve String o DomElement\n * @return {String|Object} Elemento como String o DomElement\n */\n createDetailDay(config, item, dataDay, onlyStringContent = false) {\n let str = `\n <div class=\"header-detail\">\n <div class=\"title truncate\">\n ${item.label || ''}\n </div>\n <div class=\"subtitle\">\n ${dataDay ? _util_dateUtils__WEBPACK_IMPORTED_MODULE_2__[\"default\"].formatDateReadeable(dataDay.date) : ''}\n </div>\n </div>\n\n <div class=\"list-detail list\">`; //CAPSULES\n\n if (dataDay) {\n config.timeline.detailDay.capsules.forEach(cap => {\n //para comprobar si tiene datos, se obtiene el primer valor\n //de la lista de values de una capsula\n let hasValues = cap.values.filter(v => _util_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getVarByPath(dataDay.values, v.varName)).length > 0;\n let hideIf = false;\n\n if (cap.hideIf) {\n hideIf = Boolean(_util_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getVarByPath(dataDay.values, cap.hideIf));\n }\n\n if (hasValues && !hideIf) {\n str += `\n <div class=\"item-detail ${cap.color || ''}\">\n\n <div class=\"left-icon ${cap.shape || ''} \"></div>\n\n <div class=\"name\">\n <span>\n ${cap.title || ''}\n </span>\n </div>`;\n str += `\n <div class=\"item-description\"> `;\n cap.values.forEach(v => {\n let value = _util_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getVarByPath(dataDay.values, v.varName);\n\n if (cap.isLabeledArray) {\n value.forEach(valueLabeled => {\n let outputValue = null;\n\n if (valueLabeled.value) {\n outputValue = v.round ? _util_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].round(valueLabeled.value, v.round) : valueLabeled.value;\n }\n\n if (v.formatter) {\n outputValue = v.formatter(valueLabeled);\n }\n\n str += valueLabeled.value == null ? '' : `\n <div class=\"desc\">\n <span class=\"label\">\n ${valueLabeled.label}\n </span>\n ${v.prefix || ''}\n ${outputValue}\n ${valueLabeled.suffix || v.suffix || ''}\n </div>`;\n });\n } else {\n let outputValue = v.round ? _util_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].round(value, v.round) : value;\n str += value == null ? '' : `\n <div class=\"desc\">\n ${v.prefix || ''}\n ${outputValue}\n ${v.suffix || ''}\n </div>`;\n }\n });\n str += `\n </div>`;\n str += `\n </div>`; // end .item-detail\n }\n });\n }\n\n str += `\n </div>`; // list-detail\n //PILLS\n\n if (config.timeline.detailDay.pillsVarName && dataDay && dataDay.values[config.timeline.detailDay.pillsVarName]) {\n str += `\n <div class=\"elements-detail\">\n <div class=\"name\"> ${config.timeline.detailDay.pillsTitle} </div>\n <div class=\"elements-list\">`;\n dataDay.values[config.timeline.detailDay.pillsVarName].forEach(e => {\n str += `\n <div class=\"element-detail\">\n <b>${e.label}</b>\n ${e.value}\n </div>`;\n });\n str += `\n </div>\n </div>`; //end .element-detail > .element-list\n } //str += `</div>`;\n\n\n if (dataDay && dataDay.errors && dataDay.errors.length > 0) {\n dataDay.errors.forEach(err => {\n let alertIcon = `<span class=\"alert-icon\">\n <svg style=\"width:24px;height:24px\" viewBox=\"0 0 24 24\">\n <path fill=\"currentColor\" d=\"M13 14H11V9H13M13 18H11V16H13M1 21H23L12 2L1 21Z\" />\n </svg>\n </span>`;\n str += `\n <div class=\"alert\">\n ${alertIcon}\n ${err.label}\n </div>`;\n });\n }\n\n if (dataDay && dataDay.message && dataDay.message.value) {\n str += `\n <div class=\"msj-container\">\n <div class=\"msj\">\n ${dataDay.message.value || ''}\n </div>\n <div class=\"msj-detail\">\n <span class=\"email\"> ${dataDay.message.author || ''} </span>\n <span class=\"date\"> ${dataDay.message.date ? _util_dateUtils__WEBPACK_IMPORTED_MODULE_2__[\"default\"].formatDateReadeable(new Date(dataDay.message.date)) : ''} </span>\n </div>\n </div>`;\n }\n\n let strContainer = `<div class=\"detail-day dd-hide\"> ${str} </div>`;\n if (onlyStringContent) return str;\n return _util_domUtils__WEBPACK_IMPORTED_MODULE_0__[\"default\"].createElementFromHTML(strContainer);\n },\n\n /**\n * Recrea Background, que es el fondo grid, como tabla\n *\n * @param {Object} config - Configuracion capibara\n * @param {Object} $elem - Elemento relacionado, donde se cre el background\n * @return {Object} Elemento Dom Corner Footer\n */\n redrawBackground(config, $elem) {\n return this.createBackground(config, $elem);\n },\n\n /**\n * Recrea HTML de detailDay\n *\n * @param {Object} config - Configuracion capibara\n * @param {Object} item - Item relacionado\n * @param {Object} dataDay - valores de item y Dia\n * @return {String} Elemento como String, de detailDay\n */\n redrawDetailDay(config, item, dataDay) {\n return this.createDetailDay(config, item, dataDay, true);\n },\n\n /**\n * Reposiciona FloatBox\n * verifica si el parent esta desplegado, para ocultar los datos\n *\n * Solo actualiza las alturas de los floatbox\n * no recrea los floatbox, es mas optimo\n *\n * @param {Object} config - Configuracion capibara\n * @param {Object} item - Item relacionado\n */\n repositionFloatBox(config, $floatBoxContainer) {\n $floatBoxContainer.querySelectorAll(\".float-box\").forEach($f => {\n let itemId = $f.getAttribute(\"item-id\");\n let itemHeight = parseFloat(_util_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getCSSVariable(config, \"--item-height\"));\n let item, parent;\n ({\n item,\n parent\n } = _util_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getItemById(config, itemId, \"child\", true));\n\n if (item) {\n let top = _util_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getPositionByItem(config, item);\n $f.style.top = top * itemHeight + \"px\";\n\n if (parent && parent.hidden) {\n $f.classList.add(\"hide\");\n } else if ($f.classList.contains(\"hide\")) {\n $f.classList.remove(\"hide\");\n }\n }\n });\n },\n\n /**\n * Recrea indicadores de dias seleccionados\n *\n * @param {Object} $elem - Elemento Dom donde crea los elementos seleccionados\n * @param {Object[]} selected - Array con los dias seleccionados\n * @return {Object} Elemento Dom que contiene los indicadores de dias seleccionados\n */\n redrawSelectBoard($elem, selected) {\n $elem.innerHTML = \"\";\n\n if (selected) {\n selected.forEach(s => {\n let $s = _util_domUtils__WEBPACK_IMPORTED_MODULE_0__[\"default\"].createElement(\"div\", {\n className: \"selected-day\",\n attributes: [{\n name: \"selected-index\",\n value: s.index\n }]\n });\n $s.style.left = s.pos.left + \"px\";\n $s.style.top = s.pos.top + \"px\";\n $elem.append($s);\n });\n }\n\n return $elem;\n },\n\n /**\n * Obtiene String con estilos CSS de la posicion de un floatBox\n * calculado segun item y fecha de los valores\n *\n * @param {Object} config - Configuracion capibara, para ver fecha de inicio\n * @param {Object} data - Datos del dia indicado\n * @param {Object} item - Item relacionado\n * @return {String} String CSS top y left , para posicionar floatBox en table\n */\n getPositionFloatBox(config, data, item) {\n let left = _util_dateUtils__WEBPACK_IMPORTED_MODULE_2__[\"default\"].diffDays(config.timeline.start, data.date);\n let top = _util_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getPositionByItem(config, item);\n let dayWidth = parseFloat(_util_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getCSSVariable(config, \"--day-width\"));\n let itemHeight = parseFloat(_util_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getCSSVariable(config, \"--item-height\"));\n left *= dayWidth;\n top *= itemHeight;\n return \"top: \" + top + \".5px; left:\" + left + \".5px;\";\n },\n\n /**\n * Crea Boton como elemento Dom\n *\n * @param {Object} props - propiedades para boton\n * @param {String} props.className - classes css para boton\n * @param {*} props.key - key para identificar a boton\n * @param {String} props.label - Texto boton\n * @return {Object} Elemento Dom del boton creado\n */\n createButton(props) {\n return _util_domUtils__WEBPACK_IMPORTED_MODULE_0__[\"default\"].createElementFromHTML(`\n <button class=\"${props.className || ''} input-key=\"${props.key || ''}\">\n ${props.label || ''}\n </button>`);\n },\n\n /**\n * Crea Botones de guardar y cancelar los datos de formulario del sidebar derecho\n *\n * @return {Object} Elemento Dom del botones creados\n */\n createNavRightbuttons() {\n let saveBtn = this.createButton({\n label: 'Guardar',\n className: 'btn-raised'\n });\n let cancelBtn = this.createButton({\n label: 'Cancelar',\n className: 'btn-outline'\n });\n let btnSection = _util_domUtils__WEBPACK_IMPORTED_MODULE_0__[\"default\"].createElementFromHTML(`<div class=\"button-section\"></div>`);\n btnSection.appendChild(saveBtn);\n btnSection.appendChild(cancelBtn);\n saveBtn.addEventListener(\"click\", e => {\n saveBtn.dispatchEvent(new CustomEvent(\"saveMultiInput\", {\n bubbles: true,\n cancelable: false\n }));\n });\n cancelBtn.addEventListener(\"click\", e => {\n cancelBtn.dispatchEvent(new CustomEvent(\"cancelMultiInput\", {\n bubbles: true,\n cancelable: false\n }));\n });\n return btnSection;\n },\n\n /**\n * Crea Input como elemento Dom\n *\n * @param {Object} props - config para Input\n * @param {Object} [dataDay = null] - valores de item y Dia, opcional\n * @param {Object} [daySelected = null] - datos del dia seleccionado\n * @return {Object} Elemento Dom del input creado\n */\n createInput(props, dataDay = null, daySelected = null) {\n let r = null;\n if (props.isHidden) return r;\n\n switch (props.type) {\n case \"inputList\":\n r = this.createInputList(props, dataDay, daySelected);\n break;\n\n case \"title\":\n r = this.createTitle(props);\n break;\n\n case \"number\":\n r = this.createInputNumber(props, dataDay);\n break;\n\n case \"float\":\n r = this.createInputFloat(props, dataDay);\n break;\n\n case \"message\":\n r = this.createInputMessage(props, dataDay);\n break;\n\n case \"textarea\":\n r = this.createInputTextArea(props, dataDay);\n break;\n\n case \"checkbox\":\n r = this.createInputCheckbox(props, dataDay);\n break;\n\n case \"input-box\":\n r = this.createInputBox(props, dataDay);\n break;\n\n case \"time\":\n r = this.createInputTime(props, dataDay);\n break;\n\n case \"text\":\n default:\n r = this.createInputText(props, dataDay);\n }\n\n return r;\n },\n\n /**\n * Crea Input con formato Hora, como elemento Dom\n *\n * Usa 2 inputs, hora y minutos\n *\n * el value que interpreta es String HH:MM\n *\n * @param {Object} props - config para Input\n * @param {Object} [dataDay = null] - valores de item y Dia, opcional\n * @return {Object} Elemento Dom del input creado\n */\n createInputTime(props, dataDay) {\n let hhValue = '';\n let mmValue = '';\n\n if (dataDay && dataDay.values) {\n let value = _util_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getVarByPath(dataDay, props.varName);\n\n if (value) {\n value = value.split(\":\");\n hhValue = value[0];\n mmValue = value[1];\n }\n }\n\n let r = _util_domUtils__WEBPACK_IMPORTED_MODULE_0__[\"default\"].createElementFromHTML(`\n <div class=\"input-section\" input-key=\"${props.key || ''}\">\n <span class=\"text-subtitle d-block\">\n ${props.label || ''}\n </span>\n <div class=\"time\">\n <input type=\"number\"\n class=\"hour\"\n id=\"test\"\n placeholder=\"00\"\n min=\"0\"\n max=\"24\"\n value=\"${hhValue}\">\n <span class=\"symbol\">:</span>\n <input type=\"number\"\n class=\"minutes\"\n placeholder=\"00\"\n min=\"0\"\n max=\"59\"\n value=\"${mmValue}\">\n </div>\n </div>`);\n let hh = r.querySelector('.hour');\n let mm = r.querySelector('.minutes');\n hh.addEventListener(\"input\", e => {\n hh.dispatchEvent(new CustomEvent(\"changeTimeInputHH\", {\n bubbles: true,\n cancelable: false,\n detail: {\n key: props.key,\n value: e.srcElement.value\n }\n }));\n });\n mm.addEventListener(\"input\", e => {\n mm.dispatchEvent(new CustomEvent(\"changeTimeInputMM\", {\n bubbles: true,\n cancelable: false,\n detail: {\n key: props.key,\n value: e.srcElement.value\n }\n }));\n });\n this.addKeyDownInputEvents(hh);\n this.addKeyDownInputEvents(mm);\n return r;\n },\n\n /**\n * Crea Title como elemento Dom\n * Se configura como input, pero no devuelve datos, es un texto\n *\n * @param {Object} props - config para Input\n * @return {Object} Elemento Dom del input creado\n */\n createTitle(props) {\n return _util_domUtils__WEBPACK_IMPORTED_MODULE_0__[\"default\"].createElementFromHTML(`\n <div class=\"input-section\" input-key=\"${props.key || ''}\">\n <span class=\"text-title \">\n ${props.label}\n </span>\n </div>`);\n },\n\n /**\n * Crea Input tipo Numerico como elemento Dom\n *\n * @param {Object} props - config para Input\n * @param {Object} dataDay - valores de item y Dia, opcional\n * @return {Object} Elemento Dom del input creado\n */\n createInputNumber(props, dataDay) {\n let value = \"\";\n\n if (dataDay && dataDay.values) {\n value = _util_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getVarByPath(dataDay, props.varName);\n }\n\n value = value || '';\n let elem = _util_domUtils__WEBPACK_IMPORTED_MODULE_0__[\"default\"].createElementFromHTML(`\n <div class=\"input-section\" input-key=\"${props.key || ''}\">\n <span class=\"text-subtitle d-block\">\n ${props.label}\n </span>\n <input type=\"number\"\n class=\"nav-input\"\n value=\"${value}\">\n </div>`);\n let inputElem = elem.querySelector(\"input\");\n this.addKeyDownInputEvents(inputElem);\n return elem;\n },\n\n /**\n * Crea lista de Inputs, con array de valores, como elemento Dom\n *\n * @param {Object} props - config para Input\n * @param {Object} dataDay - valores de item y Dia, opcional\n * @param {Object} [daySelected = null] - datos del dia seleccionado\n * @return {Object} Elemento Dom del input creado\n */\n createInputList(props, dataDay, daySelected = null) {\n let value = null;\n let inputList = []; //obtiene inputs default, para crearlos, sin valores\n\n if (daySelected && Array.isArray(daySelected.item.values[props.inputList])) {\n inputList = daySelected.item.values[props.inputList].map(inputRow => {\n //limpia inputList inputs\n //ATENTION posiblemente innecesaria\n inputRow.inputs.map(input => {\n input.value;\n return input;\n }); //obtiene valores del dia\n\n if (dataDay && dataDay.values) {\n let inputValues = _util_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getVarByPath(dataDay, props.valuesPath); //autorrellena\n\n if (inputValues) {\n inputRow.inputs.forEach(input => {\n let values = inputValues.find(v => v.id == inputRow.id);\n input.value = values ? values[input.varName] : null;\n });\n }\n }\n\n return inputRow;\n });\n }\n\n let str = `<div input-key=\"${props.key || ''}\" >`;\n inputList.forEach(inputRow => {\n str += `\n <div class=\"input-section input-section-flex\" >\n <span class=\"text-subtitle\">\n ${inputRow.label}\n </span>`;\n inputRow.inputs.forEach(input => {\n str += ` \n <div class=\"input-section-col\" >\n <span class=\"text-subtitle \">\n ${input.label}\n </span>\n <input type=\"number\"\n input-id=\"${inputRow.id}\"\n input-label=\"${input.label}\"\n class=\"nav-input\"\n value=\"${input.value}\">\n </div>`;\n });\n str += `\n </div>`;\n });\n str += `</div>`;\n let elem = _util_domUtils__WEBPACK_IMPORTED_MODULE_0__[\"default\"].createElementFromHTML(str);\n let inputsElem = elem.querySelectorAll(\"input\");\n inputsElem.forEach(inputElem => this.addKeyDownInputEvents(inputElem));\n return elem;\n },\n\n /**\n * Crea Input de texto TextArea como elemento Dom\n *\n * @param {Object} props - config para Input\n * @param {Object} dataDay - valores de item y Dia, opcional\n * @return {Object} Elemento Dom del input creado\n */\n createInputTextArea(props, dataDay) {\n let value = \"\";\n\n if (dataDay && dataDay.values) {\n value = _util_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getVarByPath(dataDay, props.varName);\n }\n\n let elem = _util_domUtils__WEBPACK_IMPORTED_MODULE_0__[\"default\"].createElementFromHTML(`\n <div class=\"input-section\" input-key=\"${props.key || ''}\">\n <span class=\"text-subtitle d-block\">\n ${props.label}\n </span>\n <textarea class=\"\" value=\"${value}\"></textarea>\n </div>`);\n let inputElem = elem.querySelector(\"textarea\");\n this.addKeyDownInputEvents(inputElem);\n return elem;\n },\n\n /**\n * Crea Input de Mensaje como elemento Dom\n * utiliza TextArea\n *\n * @param {Object} props - config para Input\n * @param {Object} dataDay - valores de item y Dia, opcional\n * @return {Object} Elemento Dom del input creado\n */\n createInputMessage(props, dataDay) {\n let value = \"\";\n\n if (dataDay && dataDay.message) {\n value = _util_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getVarByPath(dataDay, props.varName);\n }\n\n let elem = _util_domUtils__WEBPACK_IMPORTED_MODULE_0__[\"default\"].createElementFromHTML(`\n <div class=\"input-section msj-input-container\"\n input-key=\"${props.key || ''}\">\n <span class=\"text-subtitle d-block\">\n Mensaje\n </span>\n <textarea class=\"msj\">${value || ''}</textarea>\n </div>`);\n let inputElem = elem.querySelector(\"textarea\");\n this.addKeyDownInputEvents(inputElem);\n return elem;\n },\n\n /**\n * Crea Input de texto como elemento Dom\n *\n * @param {Object} props - config para Input\n * @param {Object} dataDay - valores de item y Dia, opcional\n * @return {Object} Elemento Dom del input creado\n */\n createInputText(props, dataDay) {\n let value = \"\";\n\n if (dataDay && dataDay.values) {\n value = _util_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getVarByPath(dataDay, props.varName);\n }\n\n let elem = _util_domUtils__WEBPACK_IMPORTED_MODULE_0__[\"default\"].createElementFromHTML(`\n <div class=\"input-section\" input-key=\"${props.key || ''}\">\n <span class=\"text-subtitle d-block\">\n ${props.label}\n </span>\n <input type=\"text\" class=\"nav-input\" value=\"${value}\">\n </div>`);\n let inputElem = elem.querySelector(\"input\");\n this.addKeyDownInputEvents(inputElem);\n return elem;\n },\n\n /**\n * Crea Input Numero Flotante, como elemento Dom\n *\n * @param {Object} props - config para Input\n * @param {Object} dataDay - valores de item y Dia, opcional\n * @return {Object} Elemento Dom del input creado\n */\n createInputFloat(props, dataDay) {\n let value = \"\";\n\n if (dataDay && dataDay.values) {\n value = _util_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getVarByPath(dataDay, props.varName);\n }\n\n let elem = _util_domUtils__WEBPACK_IMPORTED_MODULE_0__[\"default\"].createElementFromHTML(`\n <div class=\"input-section\" input-key=\"${props.key || ''}\">\n <span class=\"text-subtitle d-block\">\n ${props.label}\n </span>\n <input type=\"number\" class=\"nav-input\" value=\"${value}\">\n </div>`);\n let inputElem = elem.querySelector(\"input\");\n this.addKeyDownInputEvents(inputElem);\n return elem;\n },\n\n /**\n * Crea InputBox, como elemento Dom\n * un InputBox es un contenedor con una lista de inputs\n *\n * @param {Object} props - config para Input\n * @param {Object} dataDay - valores de item y Dia, opcional\n * @return {Object} Elemento Dom del input creado\n */\n createInputBox(props, dataDay) {\n let value = [];\n\n if (dataDay && dataDay.values) {\n value = _util_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getVarByPath(dataDay, props.varName);\n }\n\n let str = `<div class=\"input-box \" input-key=\"${props.key || ''}\">`;\n\n if (props.inputs) {\n props.inputs.forEach(i => {\n let value_found = value ? value.find(val => val.id == i.id) : null;\n let v = value_found || '';\n let tooltip = \"\";\n let icon = \"\";\n\n if (i.tooltip) {\n tooltip = `\n <div class=\"mini-input-section--tooltip\">\n ${i.tooltip}\n </div>`;\n }\n\n if (i.colorIcon) {\n icon = `<div class=\"mini-input-section--icon ${i.colorIcon}\"> </div>`;\n }\n\n str += `\n <div class=\"mini-input-section\">\n <label class=\"truncate\">\n <input type=\"number\"\n input-id=\"${i.id || ''}\"\n input-key=\"${i.key || i.label}\"\n value=\"${v.value || ''}\">\n ${icon}\n <span class=\"mini-input-section--name\">\n ${i.label}\n </span>\n </label>\n ${tooltip}\n </div>`;\n });\n }\n\n str += `</div>`;\n return _util_domUtils__WEBPACK_IMPORTED_MODULE_0__[\"default\"].createElementFromHTML(str);\n },\n\n /**\n * Crea Checkbox, como elemento Dom\n *\n * @param {Object} props - config para Input\n * @param {Object} dataDay - valores de item y Dia, opcional\n * @return {Object} Elemento Dom del input creado\n */\n createInputCheckbox(props, dataDay) {\n let value = \"\";\n\n if (dataDay && dataDay.values) {\n value = _util_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getVarByPath(dataDay, props.varName);\n }\n\n let r = _util_domUtils__WEBPACK_IMPORTED_MODULE_0__[\"default\"].createElementFromHTML(`\n <div class=\"input-section\" input-key=\"${props.key || ''}\">\n <label>\n <input type=\"checkbox\" name=\"${props.key || ''}\" input-key=\"${props.key || ''}\" ${value ? 'checked' : ''}>\n ${props.label}\n </label>\n </div>`);\n return r;\n },\n\n addKeyDownInputEvents(input) {\n input.addEventListener(\"keydown\", function (event) {\n if (event.keyCode === 13) {\n //ENTER\n input.dispatchEvent(new CustomEvent(\"saveMultiInput\", {\n bubbles: true,\n cancelable: false\n }));\n }\n\n if (event.keyCode === 27) {\n //ESC\n input.dispatchEvent(new CustomEvent(\"cancelMultiInput\", {\n bubbles: true,\n cancelable: false\n }));\n }\n });\n },\n\n createContextMenu({\n config,\n evt = null,\n position = null,\n date = null,\n item = null,\n selected = []\n }) {\n if (config.timeline.contextMenu === undefined) return {\n elem: null,\n isVisible: false\n };\n let className = \"\";\n let style = \"\";\n let left = 0;\n let top = 0;\n let isVisible = true;\n\n if (evt) {\n left = evt.clientX + 5;\n top = evt.clientY + 5 - evt.currentTarget.offsetTop;\n }\n\n if (position) {\n style += `top: ${top}px; left: ${left}px`;\n } else {\n className += \"cm-hide\";\n isVisible = false;\n }\n\n let strHtml = '';\n strHtml += ` <div class=\"cap-context-menu-container ${className}\">\n <div class=\"cap-context-menu\" style=\"${style}\">\n </div>\n </div>`;\n let $contextMenuContainer = _util_domUtils__WEBPACK_IMPORTED_MODULE_0__[\"default\"].createElementFromHTML(strHtml);\n let $contextMenu = $contextMenuContainer.querySelector(\".cap-context-menu\");\n config.timeline.contextMenu.options.forEach(option => {\n if (option.showIf) {\n let show = option.showIf({\n item,\n date,\n selected\n });\n if (!show) return;\n }\n\n let isEnabled = true;\n\n if (option.enableIf) {\n isEnabled = option.enableIf({\n item,\n date,\n selected\n });\n }\n\n let optionClassName = \"\";\n\n if (!isEnabled) {\n optionClassName += \"is-disabled\";\n }\n\n let optionStrHtml = `\n <div class=\"cap-context-menu--item ${optionClassName}\">\n ${option.label}\n </div>`;\n let $option = _util_domUtils__WEBPACK_IMPORTED_MODULE_0__[\"default\"].createElementFromHTML(optionStrHtml);\n\n if (isEnabled) {\n $option.addEventListener(\"click\", evtClick => option.onClick({\n config,\n evt: evtClick,\n date,\n item,\n selected\n }));\n } else {\n $option.addEventListener(\"click\", evtClick => {\n evtClick.preventDefault();\n evtClick.stopPropagation();\n });\n }\n\n $contextMenu.append($option);\n });\n return {\n elem: $contextMenuContainer,\n isVisible\n };\n }\n\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvdXRpbC90YWJsZUVsZW1lbnRzLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQ2FwaWJhcmEvLi9zcmMvdXRpbC90YWJsZUVsZW1lbnRzLmpzPzFkODYiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGRvbSAgICAgICBmcm9tICcuLi91dGlsL2RvbVV0aWxzJztcbmltcG9ydCB1dGlscyAgICAgZnJvbSAnLi4vdXRpbC91dGlscyc7XG5pbXBvcnQgZGF0ZVV0aWxzIGZyb20gJy4uL3V0aWwvZGF0ZVV0aWxzJztcbmltcG9ydCBzdHlsZVV0aWxzIGZyb20gJy4vc3R5bGVVdGlscyc7XG5cbmV4cG9ydCBkZWZhdWx0IHtcblxuICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBDUkVBVEVcblxuICAvKipcbiAgICogQ3JlYSBlbGVtZW50byBUYWJsZVxuICAgKiBDb250ZW5kcsOhIGxvcyBlbGVtZW50b3MgcXVlIGFwYXJlY2VyYW4gZGVudHJvIGRlIGxhIHRhYmxhIGRlIHBsYW5pbGxhXG4gICAqIFNlIFVzYSBwYXJhIDpcbiAgICogICAgLSBBZ3JlZ2FyIGJhY2tncm91bmQgY29uIHBhdHJvbiBlc3RpbG8gdGFibGFcbiAgICogICAgLSBBZ3JlZ2FyIGRheU1vdXNlT3ZlciwgZGl2IHF1ZSBpbmRpY2EgcG9zaWNpb24gZGUgbW91c2VcbiAgICogICAgLSBBZ3JlZ2FyIERldGFpbERheSwgcGFyYSBkZXRhbGxlcyBkZSBkYXRvcyBlbiB0YWJsYVxuICAgKiAgICAtIEFncmVnYXIgU2VsZWN0ZWRDb250YWluZXIsIHBhcmEgZGlhcyBzZWxlY2Npb25hZG9zXG4gICAqICAgIC0gQWdyZWdhciBGbG9hdEJveENvbnRhaW5lciwgcGFyYSB2aXN1YWxpemFjaW9uIGRlIGRhdG9zIGVuIHRhYmxhXG4gICAqXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBjb25maWcgLSBDb25maWd1cmFjaW9uIGNhcGliYXJhXG4gICAqIEByZXR1cm4ge09iamVjdH0gRWxlbWVudG8gRG9tIGNyZWFkb1xuICAgKi9cbiAgY3JlYXRlQWdUYWJsZSggY29uZmlnICl7XG4gICAgbGV0IGUgPSBkb20uY3JlYXRlRWxlbWVudChcImRpdlwiLCB7Y2xhc3NOYW1lOlwiY2FwaWJhcmFcIn0pO1xuICAgIGlmKGNvbmZpZy50aW1lbGluZS5kYXJrKXtcbiAgICAgIGUuY2xhc3NMaXN0LmFkZChcImRhcmstdGhlbWVcIik7XG4gICAgfVxuICAgIGlmKGNvbmZpZy50aW1lbGluZS5uYXYubGVmdC5leHRlbmQuaXNTaG93KXtcbiAgICAgIC8vZS5jbGFzc0xpc3QuYWRkKFwiZXh0ZW5kZWRcIik7XG4gICAgfVxuICAgIGlmKGNvbmZpZy50aW1lbGluZS5oZWFkZXIuZXh0ZW5kLmlzU2hvdyl7XG4gICAgICBlLmNsYXNzTGlzdC5hZGQoXCJoZWFkZXItZXh0ZW5kZWRcIik7XG4gICAgfVxuICAgIHJldHVybiBlO1xuICB9LFxuXG5cbiAgLyoqXG4gICAqIENyZWEgeSBwb3NpY2lvbmEgZm9uZG8gZGUgdGFibGFcbiAgICogRXN0ZSBmb25kbyBjb250aWVuZSB1biBwYXRyb24gZGUgQ1NTIHF1ZSBsZSBkYSBsYSBhcGFyaWVuY2lhIGRlIHRhYmxhXG4gICAqIHBvciBsbyBjdWFsIHNlIGRlYmUgcmVwb3NpY2lvbmFyIHNlZ3VuIGxhIGZlY2hhIGRlIGluaWNpbywgcGFyYSBoYWNlclxuICAgKiBjYWx6YXIgbG9zIGZpbmVzIGRlIHNlbWFuYVxuICAgKlxuICAgKiBAcGFyYW0ge09iamVjdH0gY29uZmlnIC0gQ29uZmlndXJhY2lvbiBjYXBpYmFyYVxuICAgKiBAcGFyYW0ge09iamVjdH0gWyRlbGVtID0gbnVsbF0gLSBFbGVtZW50byBiYWNrZ3JvdW5kLCBzaSBlcyBudWxsLCBsbyBjcmVhXG4gICAqIEByZXR1cm4ge09iamVjdH0gZWxlbWVudG8gRG9tIEJhY2tncm91bmRcbiAgICovXG4gIGNyZWF0ZUJhY2tncm91bmQoY29uZmlnLCAkZWxlbSA9IG51bGwpe1xuICAgIGxldCB3ICAgICA9IHBhcnNlRmxvYXQodXRpbHMuZ2V0Q1NTVmFyaWFibGUoY29uZmlnLCBcIi0tZGF5LXdpZHRoXCIpKTtcbiAgICBsZXQgaCAgICAgPSBwYXJzZUZsb2F0KHV0aWxzLmdldENTU1ZhcmlhYmxlKGNvbmZpZywgXCItLWl0ZW0taGVpZ2h0XCIpKTtcbiAgICBsZXQgc3RhcnQgPSBuZXcgRGF0ZShjb25maWcudGltZWxpbmUuc3RhcnQpO1xuICAgIGxldCBlbmQgICA9IG5ldyBEYXRlKGNvbmZpZy50aW1lbGluZS5lbmQpO1xuXG4gICAgZW5kLnNldFRpbWUoZW5kLmdldFRpbWUoKSArIGRhdGVVdGlscy5kYXlJbk1pbGxpc2Vjb25kcyk7Ly8gYWRkIDI0IGhvdXJzXG5cbiAgICBsZXQgZENvcnJlY3RlZCAgID0gbmV3IERhdGUoc3RhcnQudmFsdWVPZigpICsgc3RhcnQuZ2V0VGltZXpvbmVPZmZzZXQoKSAqIDYwMDAwKTtcbiAgICBsZXQgd2Vla0RheSAgICAgID0gZENvcnJlY3RlZC5nZXREYXkoKTtcbiAgICBsZXQgZGlmZldlZWtEYXlzID0gKHdlZWtEYXkgLSAxKSAqIHcgKiAtMTtcbiAgICBsZXQgZGlmZl90aW1lICAgID0gZW5kLmdldFRpbWUoKSAtIHN0YXJ0LmdldFRpbWUoKTtcbiAgICBsZXQgZGF5cyAgICAgICAgID0gZGlmZl90aW1lIC8gZGF0ZVV0aWxzLmRheUluTWlsbGlzZWNvbmRzIDtcblxuICAgIGxldCByb3dzID0gMDtcbiAgICBjb25maWcuZGF0YS5mb3JFYWNoKGQgPT4ge1xuICAgICAgcm93cysrO1xuICAgICAgaWYoZC5jaGlsZHJlbiAmJiAhZC5oaWRkZW4pe1xuICAgICAgICByb3dzICs9IGQuY2hpbGRyZW4ubGVuZ3RoO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgJGVsZW0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9ICRlbGVtIHx8ICBkb20uY3JlYXRlRWxlbWVudChcImRpdlwiLCB7Y2xhc3NOYW1lOiBcImJhY2tncm91bmQtZ3JpZFwifSk7XG4gICAgJGVsZW0uc3R5bGVbXCJiYWNrZ3JvdW5kLXBvc2l0aW9uXCJdID0gZGlmZldlZWtEYXlzKydweCAwLCAwIDAsICcrIGRpZmZXZWVrRGF5cysncHggMCc7XG4gICAgJGVsZW0uc3R5bGUud2lkdGggICAgICAgICAgICAgICAgICA9IChkYXlzICogdykrXCJweFwiO1xuICAgICRlbGVtLnN0eWxlLmhlaWdodCAgICAgICAgICAgICAgICAgPSAocm93cyAqIGggKyAxKStcInB4XCI7XG4gICAgcmV0dXJuICRlbGVtO1xuICB9LFxuXG4gIC8qKlxuICAgKiBDcmVhIFBsb3QgQ29udGFpbmVyIFZlcnRpY2FsXG4gICAqIExvcyBwbG90cyBzb24gZWxlbWVudG9zIHF1ZSBhZ3JlZ2FuIHNlY2Npb25lcyBkZSBmb25kbyBlbiBsYSBwbGFuaWxsYVxuICAgKlxuICAgKiBAcGFyYW0ge09iamVjdH0gY29uZmlnIC0gQ29uZmlndXJhY2lvbiBjYXBpYmFyYVxuICAgKiBAcmV0dXJuIHtPYmplY3R9IEVsZW1lbnRvIERvbSBwbG90VmVydGljYWxDb250YWluZXJcbiAgICovXG4gIGNyZWF0ZVBsb3RWZXJ0aWNhbENvbnRhaW5lcihjb25maWcpe1xuICAgIGxldCAkZWxlbSA9IGRvbS5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHtjbGFzc05hbWU6IFwicGxvdC12ZXJ0aWNhbC1jb250YWluZXJcIn0pO1xuICAgIHJldHVybiB0aGlzLnJlZHJhd1Bsb3RWZXJ0aWNhbENvbnRhaW5lcihjb25maWcsICRlbGVtKTtcbiAgfSxcblxuICBjcmVhdGVQbG90SG9yaXpvbnRhbENvbnRhaW5lcihjb25maWcpe1xuICAgIGxldCAkZWxlbSA9IGRvbS5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBcInBsb3QtaG9yaXpvbnRhbC1jb250YWluZXJcIiB9KTtcbiAgICByZXR1cm4gdGhpcy5yZWRyYXdQbG90SG9yaXpvbnRhbENvbnRhaW5lcihjb25maWcsICRlbGVtKTtcbiAgfSxcblxuXG5cblxuXG4gIC8qKlxuICAgKiBSZWNyZWEgcGxvdFZlcnRpY2FsQ29udGFpbmVyLCB1c2FuZG8gZWxlbWVudG8gZXhpc3RlbnRlXG4gICAqIHVzYSB1biBlbGVtZW50byBleGlzdGVudGUgcGFyYSB1c2FyIGxhIGZ1bmNpb24gcGFyYSByZWRpYnVqYXIgZWwgZWxlbWVudG9cbiAgICpcbiAgICogTG9zIFBsb3RzIHNlIGluc2VydGFuIGNvbW8gZGl2cywgY29uIHBvc2ljaW9uIGVzcGVjaWZpY2FkYSxcbiAgICogY29uIGFuY2hvIGRlIGRpYVxuICAgKlxuICAgKiBAcGFyYW0ge09iamVjdH0gY29uZmlnIC0gQ29uZmlndXJhY2lvbiBjYXBpYmFyYVxuICAgKiBAcGFyYW0ge09iamVjdH0gJGVsZW0gLSBFbGVtZW50byBEb20gZG9uZGUgY3JlYSBwbG90VmVydGljYWxDb250YWluZXJcbiAgICogQHJldHVybiB7T2JqZWN0fSBFbGVtZW50byBEb20gcGxvdFZlcnRpY2FsQ29udGFpbmVyXG4gICAqL1xuICByZWRyYXdQbG90VmVydGljYWxDb250YWluZXIoY29uZmlnLCAkZWxlbSl7XG4gICAgJGVsZW0uaW5uZXJIVE1MID0gXCJcIjtcbiAgICBpZihjb25maWcudGltZWxpbmUucGxvdHMgJiYgY29uZmlnLnRpbWVsaW5lLnBsb3RzLnZlcnRpY2FsKXtcbiAgICAgIGNvbmZpZy50aW1lbGluZS5wbG90cy52ZXJ0aWNhbC5mb3JFYWNoKHAgPT4ge1xuICAgICAgICBsZXQgZGlmZkRheXMgICAgID0gTWF0aC5mbG9vcihkYXRlVXRpbHMuZGlmZkRheXMoY29uZmlnLnRpbWVsaW5lLnN0YXJ0LCBwLmRhdGUpKTtcbiAgICAgICAgbGV0IGRheVdpZHRoID0gcGFyc2VGbG9hdCh1dGlscy5nZXRDU1NWYXJpYWJsZShjb25maWcsIFwiLS1kYXktd2lkdGhcIikpO1xuICAgICAgICBsZXQgbGVmdCAgICAgICAgID0gZGlmZkRheXMgKiBkYXlXaWR0aDtcbiAgICAgICAgbGV0IHBsb3QgPSBkb20uY3JlYXRlRWxlbWVudChcImRpdlwiLCB7XG4gICAgICAgICAgY2xhc3NOYW1lczpbXCJwbG90LXZlcnRpY2FsXCIsIChwLmNsYXNzTmFtZSB8fCAnJyldLFxuICAgICAgICAgIHN0eWxlOnsnbWFyZ2luLWxlZnQnOmxlZnQgK1wicHhcIn19XG4gICAgICAgICk7XG4gICAgICAgICRlbGVtLmFwcGVuZENoaWxkKHBsb3QpO1xuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiAkZWxlbTtcbiAgfSxcblxuICByZWRyYXdQbG90SG9yaXpvbnRhbENvbnRhaW5lcihjb25maWcsICRlbGVtKXtcbiAgICAkZWxlbS5pbm5lckhUTUwgPSBcIlwiO1xuICAgIGlmKGNvbmZpZy50aW1lbGluZS5wbG90cyAmJiBjb25maWcudGltZWxpbmUucGxvdHMuaG9yaXpvbnRhbCl7XG4gICAgICBjb25maWcudGltZWxpbmUucGxvdHMuaG9yaXpvbnRhbC5mb3JFYWNoKHAgPT4ge1xuICAgICAgICBsZXQgaXRlbSAgICAgICAgPSB1dGlscy5nZXRJdGVtQnlJZChjb25maWcsIHAuaWROb2RlLCBwLnR5cGVOb2RlKTtcbiAgICAgICAgbGV0IHRvcFBvc2l0aW9uID0gdXRpbHMuZ2V0UG9zaXRpb25CeUl0ZW0oY29uZmlnLCBpdGVtLCBcInBhcmVudFwiKTtcbiAgICAgICAgbGV0IGl0ZW1IZWlnaHQgID0gcGFyc2VGbG9hdCh1dGlscy5nZXRDU1NWYXJpYWJsZShjb25maWcsIFwiLS1pdGVtLWhlaWdodFwiKSk7XG4gICAgICAgIGxldCBwbG90ICAgICAgICA9IGRvbS5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHtcbiAgICAgICAgICBjbGFzc05hbWVzOltcInBsb3QtaG9yaXpvbnRhbFwiLCAocC5jbGFzc05hbWUgfHwgJycpXSxcbiAgICAgICAgICBzdHlsZTp7J21hcmdpbi10b3AnOiAodG9wUG9zaXRpb24gICogaXRlbUhlaWdodCkrXCJweFwifX1cbiAgICAgICAgKTtcbiAgICAgICAgJGVsZW0uYXBwZW5kQ2hpbGQocGxvdCk7XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuICRlbGVtO1xuICB9LFxuXG5cbiAgLyoqXG4gICAqIENyZWEgQ29ybmVyIEl6cXVpZXJkb1xuICAgKiBTZSB1c2EgcGFyYSA6XG4gICAqICAgIC0gdGl0dWxvcyByZWxhY2lvbmFkb3MgY29uIGxvcyBkYXRvcyBkZWwgc2lkZWJhciBpenF1aWVyZG9cbiAgICogICAgLSB0aXR1bG9zIHBhcmEgaW5wdXRzIGRlIGhlYWRlciwgYWJzb2x1dGUgYSBsYSBkZXJlY2hhXG4gICAqICAgIC0gYm90b24gcGFyYSBtb3N0cmFyL29jdWx0YXIgc2lkZWJhciBpenF1aWVyZG9cbiAgICogICAgLSBwcm9tZWRpb3NcbiAgICpcbiAgICogQHBhcmFtIHtPYmplY3R9IGNvbmZpZyAtIENvbmZpZ3VyYWNpb24gY2FwaWJhcmFcbiAgICogQHJldHVybiB7T2JqZWN0fSBFbGVtZW50byBEb20gQ29ybmVyXG4gICAqL1xuICBjcmVhdGVDb3JuZXIoY29uZmlnLCB0YWIgPSBudWxsKXtcbiAgICBsZXQgJGVsZW0gPSBkb20uY3JlYXRlRWxlbWVudChcImRpdlwiLCB7Y2xhc3NOYW1lOiBcImNvcm5lclwifSk7XG4gICAgcmV0dXJuIHRoaXMucmVkcmF3Q29ybmVyKCRlbGVtLCBjb25maWcsIHRhYik7XG4gIH0sXG5cbiAgcmVkcmF3Q29ybmVyKCRlbGVtLCBjb25maWcsIHRhYj1udWxsKXtcbiAgICBsZXQgbGFiZWxzSW5pdGlhbENvcm5lciA9IGNvbmZpZy50aW1lbGluZS5uYXYubGVmdC5pbml0aWFsLnZhcnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5maWx0ZXIodiA9PiAodi5vbmx5VGFiID09IHVuZGVmaW5lZCB8fCAodi5vbmx5VGFiICYmIHRhYiAmJiB2Lm9ubHlUYWIgPT0gdGFiLmtleSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLm1hcChkPT5gPHNwYW4gY2xhc3M9XCJpdGVtLWNvbFwiPiR7ZC5sYWJlbH08L3NwYW4+YCkuam9pbihcIlwiKTtcblxuICAgIGxldCBsYWJlbHNFeHRlbmRDb3JuZXIgPSBjb25maWcudGltZWxpbmUubmF2LmxlZnQuZXh0ZW5kLnZhcnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5maWx0ZXIodiA9PiAodi5vbmx5VGFiID09IHVuZGVmaW5lZCB8fCAodi5vbmx5VGFiICYmIHRhYiAmJiB2Lm9ubHlUYWIgPT0gdGFiLmtleSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLm1hcChkPT5gPHNwYW4gY2xhc3M9XCJpdGVtLWNvbFwiPiR7ZC5sYWJlbH08L3NwYW4+YCkuam9pbihcIlwiKTtcblxuXG4gICAgbGV0IGxhYmVsc0hlYWRlckV4dGVuZCA9IGNvbmZpZy50aW1lbGluZS5oZWFkZXIuZXh0ZW5kLmRhdGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5tYXAoZD0+e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihkLmlzSGlkZGVuKSByZXR1cm4gXCJcIjtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgYXZnQm94ID0gJyc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBhdmcgPSAnJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoZC5hdmVyYWdlKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2xldCB5ZXN0ZXJkYXkgPSBuZXcgRGF0ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8veWVzdGVyZGF5LnNldERhdGUoeWVzdGVyZGF5LmdldERhdGUoKSAtIDEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9sZXQgYXZnICAgPSB1dGlscy5nZXRBdmVyYWdlKGQuZGF0YSwgeWVzdGVyZGF5LCBkLmF2ZXJhZ2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vYXZnQm94ID0gYCA8ZGl2IGNsYXNzPVwiYXZlcmFnZS1ib3hcIj4gPHNwYW4+IDxzcGFuIGNsYXNzPVwic3ltYm9sXCI+eMyEPC9zcGFuPiAke2QuYXZlcmFnZX0gPC9zcGFuPiAgPC9kaXY+ICAgYDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdmcgICAgPSBgIDxzcGFuIGNsYXNzPVwiYXZlcmFnZVwiPiAoIDxzcGFuPiA8c3BhbiBjbGFzcz1cInN5bWJvbFwiPnjMhDwvc3Bhbj4gJHtkLmF2ZXJhZ2V9IDwvc3Bhbj4pICA8L3NwYW4+ICAgYDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYDxkaXYgY2xhc3M9XCJpbnB1dC10aXRsZS1jb250YWluZXIgJHtkLmlzUGVyc2lzdGVudCA/ICdwZXJzaXN0ZW50JzonJ31cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2F2Z0JveH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjYXAtdG9vbHRpcD1cIlByb21lZGlvICR7ZC5sYWJlbH0gOiAke2QuYXZlcmFnZX0gJHtkLnN1ZmZpeCB8fCAnJ31cIiBjbGFzcz1cImlucHV0LXRpdGxlICR7ZC5jb2xvcj8nYy0nK2QuY29sb3IrJy0tdGV4dCc6Jyd9IFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHthdmd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2QubGFiZWx9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PmB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLmpvaW4oXCJcIik7XG5cbiAgICBsZXQgdGVtcGxhdGUgPSBgPGRpdj5cblxuICAgICAgICAgIDxidXR0b24gdG9nZ2xlLXNpZGViYXIgY2xhc3M9XCJidG4taWNvbiBidG4taWNvbi1yYWlzZWQgYnRuLXRvZ2dsZS1zaWRlYmFyIGMtZC1tb2JpbGUtbm9uZVwiPlxuICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgIDxzdmcgc3R5bGU9XCJ3aWR0aDoyNHB4O2hlaWdodDoyNHB4XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiPlxuICAgICAgICAgICAgICAgICAgPHBhdGggZmlsbD1cImN1cnJlbnRDb2xvclwiIGQ9XCJNOC41OSwxNi41OEwxMy4xNywxMkw4LjU5LDcuNDFMMTAsNkwxNiwxMkwxMCwxOEw4LjU5LDE2LjU4WlwiIC8+XG4gICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb3JuZXItdGl0bGVcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImJvdHRvbS10ZXh0XCI+XG4gICAgICAgICAgICAke2NvbmZpZy50aW1lbGluZS5jb3JuZXIubGVmdC5sYWJlbH1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbml0aWFsLWNvcm5lclwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbml0aWFsLWNvcm5lci10aXRsZVwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJib3R0b20tY29udGFpbmVyIGhpZGVcIj5cbiAgICAgICAgICAgICAgJHtjb25maWcudGltZWxpbmUuY29ybmVyLmluaXRpYWwubGFiZWx9XG4gICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJib3R0b20tY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICR7bGFiZWxzSW5pdGlhbENvcm5lcn1cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImV4dGVuZC1jb3JuZXJcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXgtY29ybmVyLXRpdGxlXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJvdHRvbS1jb250YWluZXIgaGlkZVwiPlxuICAgICAgICAgICAgICAke2NvbmZpZy50aW1lbGluZS5jb3JuZXIuZXh0ZW5kLmxhYmVsfVxuICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm90dG9tLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAke2xhYmVsc0V4dGVuZENvcm5lcn1cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImJ0bi1uYXYtY29ybmVyXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LXRpdGxlc1wiPlxuICAgICAgICAgICAgICAke2xhYmVsc0hlYWRlckV4dGVuZH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cInByb2dyZXNzLWJhciBwcm9ncmVzcy1iYXItbGVmdCBoaWRlLXByb2dyZXNzXCI+PC9kaXY+XG5cbiAgICAgIDwvZGl2PmA7XG5cbiAgICBsZXQgciA9IGRvbS5jcmVhdGVFbGVtZW50RnJvbUhUTUwodGVtcGxhdGUpO1xuXG4gICAgJGVsZW0uaW5uZXJIVE1MID0gXCJcIjtcbiAgICAkZWxlbS5hcHBlbmQocik7XG5cbiAgICAkZWxlbS5xdWVyeVNlbGVjdG9yKFwiW3RvZ2dsZS1zaWRlYmFyXVwiKS5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgZT0+e1xuICAgICAgci5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudChcInRvZ2dsZVNpZGViYXJcIiwge1xuICAgICAgICBidWJibGVzOiB0cnVlLFxuICAgICAgICBjYW5jZWxhYmxlOiBmYWxzZSxcbiAgICAgIH0pKTtcbiAgICB9KTtcblxuICAgIHJldHVybiAkZWxlbTtcbiAgfSxcblxuXG5cbiAgLyoqXG4gICAqIENyZWEgQ29ybmVyIERlcmVjaG9cbiAgICogU2UgdXNhIHBhcmEgOlxuICAgKiAgICAtIHRpdHVsb3MgcmVsYWNpb25hZG9zIGNvbiBsb3MgZGF0b3MgZGVsIHNpZGViYXIgRGVyZWNob1xuICAgKlxuICAgKiBAcGFyYW0ge09iamVjdH0gY29uZmlnIC0gQ29uZmlndXJhY2lvbiBjYXBpYmFyYVxuICAgKiBAcmV0dXJuIHtPYmplY3R9IEVsZW1lbnRvIERvbSBjb3JuZXJcbiAgICovXG4gIGNyZWF0ZUNvcm5lclJpZ2h0KGNvbmZpZyl7XG4gICAgbGV0IHN0ciA9IGBcbiAgICAgIDxkaXYgY2xhc3M9XCJjb3JuZXIgcmlnaHRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvcm5lci10aXRsZVwiPlxuICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgJHtjb25maWcudGltZWxpbmUuY29ybmVyLnJpZ2h0LmxhYmVsfVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJwcm9ncmVzcy1iYXIgcHJvZ3Jlc3MtYmFyLXJpZ2h0IGhpZGUtcHJvZ3Jlc3NcIj48L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIGA7XG4gICAgcmV0dXJuIGRvbS5jcmVhdGVFbGVtZW50RnJvbUhUTUwoc3RyICk7XG4gIH0sXG5cblxuICAvKipcbiAgICogQ3JlYSBIZWFkZXIgVG9wXG4gICAqIFNlIHVzYSBwYXJhIDpcbiAgICogICAgLSBNYW5lam8gZGUgdGFic1xuICAgKiAgICAtIEJvdG9uZXMgZGUgbmF2ZWdhY2nDs24geSBzZWxlY2Npw7NuIGRlIGZlY2hhXG4gICAqICAgIC0gQm90b24gdG9nZ2xlIERhcmsgbW9kZVxuICAgKiAgICAtIEJvdG9uIHRvZ2dsZSBIZWFkZXIgZXh0ZW5kZWRcbiAgICpcbiAgICogQHBhcmFtIHtPYmplY3R9IGNvbmZpZyAtIENvbmZpZ3VyYWNpb24gY2FwaWJhcmFcbiAgICogQHJldHVybiB7T2JqZWN0fSBFbGVtZW50byBEb21cbiAgICovXG4gIGNyZWF0ZUhlYWRlclRvcChjb25maWcpe1xuICAgIGxldCBzdHIgPSBgXG4gICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyLXRvcFwiPmA7XG5cblxuXG4gICAgaWYoY29uZmlnLnRpbWVsaW5lLnRhYnMpe1xuXG4gICAgICBzdHIgKz0gYFxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYi1zZWxlY3QtY29udGFpbmVyIGMtZC1kZXNrdG9wLW5vbmUgYy1kLW1vYmlsZS1mbGV4XCI+XG4gICAgICAgICAgICAgIDxzZWxlY3QgY2xhc3M9XCJ0YWJzLXNlbGVjdFwiID5gO1xuXG4gICAgICBjb25maWcudGltZWxpbmUudGFicy5mb3JFYWNoKHRhYiA9PiB7XG4gICAgICAgIGlmKCF0YWIuaXNIaWRkZW4pe1xuICAgICAgICAgIHN0ciArPWAgPG9wdGlvbiB2YWx1ZT1cIiR7dGFiLmlkfVwiPiAke3RhYi5sYWJlbH0gPC9vcHRpb24+YFxuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgc3RyICs9IGBcbiAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICA8L2Rpdj5gO1xuXG5cbiAgICAgIHN0ciArPSBgXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFicy1jb250YWluZXIgYy1kLWRlc2t0b3AtZmxleCBjLWQtbW9iaWxlLW5vbmVcIj5cbiAgICAgICAgICAgIGA7XG5cbiAgICAgIGNvbmZpZy50aW1lbGluZS50YWJzLmZvckVhY2godGFiID0+IHtcbiAgICAgICAgaWYoIXRhYi5pc0hpZGRlbil7XG4gICAgICAgICAgc3RyICs9IGBcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFiICR7dGFiLmRpc2FibGVkID8gJ2Rpc2FibGVkJzogJyd9ICR7dGFiLmNvbG9yfVwiIGNvbG9yPVwiJHt0YWIuY29sb3J9XCIgaW5wdXQta2V5PVwiJHt0YWIuaWR9XCIgJHt0YWIudG9vbHRpcD8nY2FwLXRvb2x0aXA9XCInK3RhYi50b29sdGlwKydcIic6Jyd9ID5cbiAgICAgICAgICAgICAgICAgIDxzcGFuPiR7dGFiLmxhYmVsfTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICR7dGFiLmljb24gfHwgJyd9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgYDtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIHN0ciArPSBgXG4gICAgICAgICAgPC9kaXY+YDtcbiAgICB9XG5cblxuICAgIHN0ciArPSBgXG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic3BhY2VyXCI+PC9kaXY+XG5cblxuXG4gICAgICAgICAgPGJ1dHRvbiBidG4tcHJldiBjbGFzcz1cImJ0bi1pY29uIGJ0bi1pY29uLXJhaXNlZFwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImljb25cIj5cbiAgICAgICAgICAgICAgPHN2ZyBzdHlsZT1cIndpZHRoOjI0cHg7aGVpZ2h0OjI0cHhcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCI+XG4gICAgICAgICAgICAgICAgICA8cGF0aCBmaWxsPVwiY3VycmVudENvbG9yXCIgZD1cIk0yMCwxMFYxNEgxMUwxNC41LDE3LjVMMTIuMDgsMTkuOTJMNC4xNiwxMkwxMi4wOCw0LjA4TDE0LjUsNi41TDExLDEwSDIwWlwiIC8+XG4gICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsb2FkaW5nLWljb25cIj5cbiAgICAgICAgICAgICAgICA8c3ZnIHZlcnNpb249XCIxLjFcIiBpZD1cImxvYWRlci0xXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHhtbG5zOnhsaW5rPVwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlua1wiIHg9XCIwcHhcIiB5PVwiMHB4XCJcbiAgICAgICAgICAgICAgIHdpZHRoPVwiMzJweFwiIGhlaWdodD1cIjMycHhcIiB2aWV3Qm94PVwiMCAwIDQwIDQwXCIgZW5hYmxlLWJhY2tncm91bmQ9XCJuZXcgMCAwIDQwIDQwXCIgeG1sOnNwYWNlPVwicHJlc2VydmVcIj5cbiAgICAgICAgICAgICAgPHBhdGggb3BhY2l0eT1cIjAuMlwiIGZpbGw9XCIjMDAwXCIgZD1cIk0yMC4yMDEsNS4xNjljLTguMjU0LDAtMTQuOTQ2LDYuNjkyLTE0Ljk0NiwxNC45NDZjMCw4LjI1NSw2LjY5MiwxNC45NDYsMTQuOTQ2LDE0Ljk0NlxuICAgICAgICAgICAgICAgIHMxNC45NDYtNi42OTEsMTQuOTQ2LTE0Ljk0NkMzNS4xNDYsMTEuODYxLDI4LjQ1NSw1LjE2OSwyMC4yMDEsNS4xNjl6IE0yMC4yMDEsMzEuNzQ5Yy02LjQyNSwwLTExLjYzNC01LjIwOC0xMS42MzQtMTEuNjM0XG4gICAgICAgICAgICAgICAgYzAtNi40MjUsNS4yMDktMTEuNjM0LDExLjYzNC0xMS42MzRjNi40MjUsMCwxMS42MzMsNS4yMDksMTEuNjMzLDExLjYzNEMzMS44MzQsMjYuNTQxLDI2LjYyNiwzMS43NDksMjAuMjAxLDMxLjc0OXpcIi8+XG4gICAgICAgICAgICAgIDxwYXRoIGZpbGw9XCIjMDAwXCIgZD1cIk0yNi4wMTMsMTAuMDQ3bDEuNjU0LTIuODY2Yy0yLjE5OC0xLjI3Mi00Ljc0My0yLjAxMi03LjQ2Ni0yLjAxMmgwdjMuMzEyaDBcbiAgICAgICAgICAgICAgICBDMjIuMzIsOC40ODEsMjQuMzAxLDkuMDU3LDI2LjAxMywxMC4wNDd6XCI+XG4gICAgICAgICAgICAgICAgPGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlVHlwZT1cInhtbFwiXG4gICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVOYW1lPVwidHJhbnNmb3JtXCJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJyb3RhdGVcIlxuICAgICAgICAgICAgICAgICAgZnJvbT1cIjAgMjAgMjBcIlxuICAgICAgICAgICAgICAgICAgdG89XCIzNjAgMjAgMjBcIlxuICAgICAgICAgICAgICAgICAgZHVyPVwiMS41c1wiXG4gICAgICAgICAgICAgICAgICByZXBlYXRDb3VudD1cImluZGVmaW5pdGVcIi8+XG4gICAgICAgICAgICAgICAgPC9wYXRoPlxuICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvYnV0dG9uPlxuXG5cbiAgICAgICAgICA8YnV0dG9uIGJ0bi1jYWxlbmRhciBjbGFzcz1cImJ0bi1pY29uIGJ0bi1pY29uLXJhaXNlZFwiPlxuICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgIDxzdmcgc3R5bGU9XCJ3aWR0aDoyNHB4O2hlaWdodDoyNHB4XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiPlxuICAgICAgICAgICAgICAgIDxwYXRoIGZpbGw9XCJjdXJyZW50Q29sb3JcIiBkPVwiTTE5LDE5SDVWOEgxOU0xNiwxVjNIOFYxSDZWM0g1QzMuODksMyAzLDMuODkgMyw1VjE5QTIsMiAwIDAsMCA1LDIxSDE5QTIsMiAwIDAsMCAyMSwxOVY1QzIxLDMuODkgMjAuMSwzIDE5LDNIMThWMU0xNywxMkgxMlYxN0gxN1YxMlpcIiAvPlxuICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibG9hZGluZy1pY29uXCI+XG4gICAgICAgICAgICAgICAgPHN2ZyB2ZXJzaW9uPVwiMS4xXCIgaWQ9XCJsb2FkZXItMVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB4bWxuczp4bGluaz1cImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmtcIiB4PVwiMHB4XCIgeT1cIjBweFwiXG4gICAgICAgICAgICAgICB3aWR0aD1cIjMycHhcIiBoZWlnaHQ9XCIzMnB4XCIgdmlld0JveD1cIjAgMCA0MCA0MFwiIGVuYWJsZS1iYWNrZ3JvdW5kPVwibmV3IDAgMCA0MCA0MFwiIHhtbDpzcGFjZT1cInByZXNlcnZlXCI+XG4gICAgICAgICAgICAgIDxwYXRoIG9wYWNpdHk9XCIwLjJcIiBmaWxsPVwiIzAwMFwiIGQ9XCJNMjAuMjAxLDUuMTY5Yy04LjI1NCwwLTE0Ljk0Niw2LjY5Mi0xNC45NDYsMTQuOTQ2YzAsOC4yNTUsNi42OTIsMTQuOTQ2LDE0Ljk0NiwxNC45NDZcbiAgICAgICAgICAgICAgICBzMTQuOTQ2LTYuNjkxLDE0Ljk0Ni0xNC45NDZDMzUuMTQ2LDExLjg2MSwyOC40NTUsNS4xNjksMjAuMjAxLDUuMTY5eiBNMjAuMjAxLDMxLjc0OWMtNi40MjUsMC0xMS42MzQtNS4yMDgtMTEuNjM0LTExLjYzNFxuICAgICAgICAgICAgICAgIGMwLTYuNDI1LDUuMjA5LTExLjYzNCwxMS42MzQtMTEuNjM0YzYuNDI1LDAsMTEuNjMzLDUuMjA5LDExLjYzMywxMS42MzRDMzEuODM0LDI2LjU0MSwyNi42MjYsMzEuNzQ5LDIwLjIwMSwzMS43NDl6XCIvPlxuICAgICAgICAgICAgICA8cGF0aCBmaWxsPVwiIzAwMFwiIGQ9XCJNMjYuMDEzLDEwLjA0N2wxLjY1NC0yLjg2NmMtMi4xOTgtMS4yNzItNC43NDMtMi4wMTItNy40NjYtMi4wMTJoMHYzLjMxMmgwXG4gICAgICAgICAgICAgICAgQzIyLjMyLDguNDgxLDI0LjMwMSw5LjA1NywyNi4wMTMsMTAuMDQ3elwiPlxuICAgICAgICAgICAgICAgIDxhbmltYXRlVHJhbnNmb3JtIGF0dHJpYnV0ZVR5cGU9XCJ4bWxcIlxuICAgICAgICAgICAgICAgICAgYXR0cmlidXRlTmFtZT1cInRyYW5zZm9ybVwiXG4gICAgICAgICAgICAgICAgICB0eXBlPVwicm90YXRlXCJcbiAgICAgICAgICAgICAgICAgIGZyb209XCIwIDIwIDIwXCJcbiAgICAgICAgICAgICAgICAgIHRvPVwiMzYwIDIwIDIwXCJcbiAgICAgICAgICAgICAgICAgIGR1cj1cIjEuNXNcIlxuICAgICAgICAgICAgICAgICAgcmVwZWF0Q291bnQ9XCJpbmRlZmluaXRlXCIvPlxuICAgICAgICAgICAgICAgIDwvcGF0aD5cbiAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgIDxidXR0b24gYnRuLW5leHQgY2xhc3M9XCJidG4taWNvbiBidG4taWNvbi1yYWlzZWRcIj5cbiAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICA8c3ZnIHN0eWxlPVwid2lkdGg6MjRweDtoZWlnaHQ6MjRweFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj5cbiAgICAgICAgICAgICAgICAgIDxwYXRoIGZpbGw9XCJjdXJyZW50Q29sb3JcIiBkPVwiTTQsMTBWMTRIMTNMOS41LDE3LjVMMTEuOTIsMTkuOTJMMTkuODQsMTJMMTEuOTIsNC4wOEw5LjUsNi41TDEzLDEwSDRaXCIgLz5cbiAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxvYWRpbmctaWNvblwiPlxuICAgICAgICAgICAgICAgIDxzdmcgdmVyc2lvbj1cIjEuMVwiIGlkPVwibG9hZGVyLTFcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgeG1sbnM6eGxpbms9XCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rXCIgeD1cIjBweFwiIHk9XCIwcHhcIlxuICAgICAgICAgICAgICAgd2lkdGg9XCIzMnB4XCIgaGVpZ2h0PVwiMzJweFwiIHZpZXdCb3g9XCIwIDAgNDAgNDBcIiBlbmFibGUtYmFja2dyb3VuZD1cIm5ldyAwIDAgNDAgNDBcIiB4bWw6c3BhY2U9XCJwcmVzZXJ2ZVwiPlxuICAgICAgICAgICAgICA8cGF0aCBvcGFjaXR5PVwiMC4yXCIgZmlsbD1cIiMwMDBcIiBkPVwiTTIwLjIwMSw1LjE2OWMtOC4yNTQsMC0xNC45NDYsNi42OTItMTQuOTQ2LDE0Ljk0NmMwLDguMjU1LDYuNjkyLDE0Ljk0NiwxNC45NDYsMTQuOTQ2XG4gICAgICAgICAgICAgICAgczE0Ljk0Ni02LjY5MSwxNC45NDYtMTQuOTQ2QzM1LjE0NiwxMS44NjEsMjguNDU1LDUuMTY5LDIwLjIwMSw1LjE2OXogTTIwLjIwMSwzMS43NDljLTYuNDI1LDAtMTEuNjM0LTUuMjA4LTExLjYzNC0xMS42MzRcbiAgICAgICAgICAgICAgICBjMC02LjQyNSw1LjIwOS0xMS42MzQsMTEuNjM0LTExLjYzNGM2LjQyNSwwLDExLjYzMyw1LjIwOSwxMS42MzMsMTEuNjM0QzMxLjgzNCwyNi41NDEsMjYuNjI2LDMxLjc0OSwyMC4yMDEsMzEuNzQ5elwiLz5cbiAgICAgICAgICAgICAgPHBhdGggZmlsbD1cIiMwMDBcIiBkPVwiTTI2LjAxMywxMC4wNDdsMS42NTQtMi44NjZjLTIuMTk4LTEuMjcyLTQuNzQzLTIuMDEyLTcuNDY2LTIuMDEyaDB2My4zMTJoMFxuICAgICAgICAgICAgICAgIEMyMi4zMiw4LjQ4MSwyNC4zMDEsOS4wNTcsMjYuMDEzLDEwLjA0N3pcIj5cbiAgICAgICAgICAgICAgICA8YW5pbWF0ZVRyYW5zZm9ybSBhdHRyaWJ1dGVUeXBlPVwieG1sXCJcbiAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZU5hbWU9XCJ0cmFuc2Zvcm1cIlxuICAgICAgICAgICAgICAgICAgdHlwZT1cInJvdGF0ZVwiXG4gICAgICAgICAgICAgICAgICBmcm9tPVwiMCAyMCAyMFwiXG4gICAgICAgICAgICAgICAgICB0bz1cIjM2MCAyMCAyMFwiXG4gICAgICAgICAgICAgICAgICBkdXI9XCIxLjVzXCJcbiAgICAgICAgICAgICAgICAgIHJlcGVhdENvdW50PVwiaW5kZWZpbml0ZVwiLz5cbiAgICAgICAgICAgICAgICA8L3BhdGg+XG4gICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic3BhY2VyXCI+PC9kaXY+XG5cbiAgICAgICAgICA8YnV0dG9uIHRvZ2dsZS1kYXJrIGNsYXNzPVwiYnRuLWljb24gYnRuLWhlYWRlciBjLWQtbW9iaWxlLW5vbmUgJHtjb25maWcudGltZWxpbmUud2l0aERhcmtUb2dnbGUgPT0gZmFsc2UgPyAnaGlkZScgOiAnJyB9XCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImhpZGUtbGlnaHRcIj5cbiAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCI+XG4gICAgICAgICAgICAgICAgPHBhdGggIGZpbGw9XCJjdXJyZW50Q29sb3JcIiBkPVwiTTEzLDQuOEM5LDQuOCA5LDE5LjIgMTMsMTkuMkMxNywxOS4yIDIyLDE2LjUgMjIsMTJDMjIsNy41IDE3LDQuOCAxMyw0LjhNMTMuMSwxNy4yQzEyLjcsMTYuOCAxMiwxNSAxMiwxMkMxMiw5IDEyLjcsNy4yIDEzLjEsNi44QzE2LDYuOSAyMCw4LjcgMjAsMTJDMjAsMTUuMyAxNS45LDE3LjEgMTMuMSwxNy4yTTgsMTAuNUM4LDExIDcuOSwxMS41IDcuOSwxMkM3LjksMTIuMiA3LjksMTIuNCA3LjksMTIuNkwyLjQsMTRMMS45LDEyLjFMOCwxMC41TTIsN0w5LjQsNS4xQzkuMiw1LjQgOSw1LjggOC45LDYuM0M4LjgsNi42IDguNyw3IDguNiw3LjRMMi41LDguOUwyLDdNOC4yLDE1LjVDOC4zLDE2LjIgOC41LDE2LjkgOC43LDE3LjRMMi40LDE5TDEuOSwxNy4xTDguMiwxNS41WlwiIC8+XG4gICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJoaWRlLWRhcmtcIj5cbiAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCI+XG4gICAgICAgICAgICAgICAgPHBhdGggIGZpbGw9XCJjdXJyZW50Q29sb3JcIiBkPVwiTTEzLDQuOEM5LDQuOCA5LDE5LjIgMTMsMTkuMkMxNywxOS4yIDIyLDE2LjUgMjIsMTJDMjIsNy41IDE3LDQuOCAxMyw0LjhNMTMuMSwxNy4yQzEyLjcsMTYuOCAxMiwxNSAxMiwxMkMxMiw5IDEyLjcsNy4yIDEzLjEsNi44QzE2LDYuOSAyMCw4LjcgMjAsMTJDMjAsMTUuMyAxNiwxNy4xIDEzLjEsMTcuMk0yLDVIOS41QzkuMyw1LjQgOSw1LjggOC45LDYuNEM4LjgsNi42IDguOCw2LjggOC43LDdIMlY1TTgsMTFIMlY5SDguMkM4LjEsOS42IDguMSwxMC4zIDgsMTFNOC43LDE3QzguOSwxNy44IDkuMiwxOC40IDkuNiwxOUgyLjFWMTdIOC43TTguMiwxNUgyVjEzSDhDOC4xLDEzLjcgOC4xLDE0LjQgOC4yLDE1WlwiIC8+XG4gICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvYnV0dG9uPmA7XG5cbiAgICAgaWYoY29uZmlnLnRpbWVsaW5lLmhlYWRlci5leHRlbmQuZW5hYmxlZCAhPT0gZmFsc2Upe1xuXG4gICAgICAgc3RyICs9IGA8YnV0dG9uIHRvZ2dsZS1oZWFkZXIgY2xhc3M9XCJidG4taWNvbiBidG4taWNvbi1yYWlzZWRcIj5cbiAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICA8c3ZnIHN0eWxlPVwid2lkdGg6MjRweDtoZWlnaHQ6MjRweFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj5cbiAgICAgICAgICAgICAgICAgIDxwYXRoIGZpbGw9XCJjdXJyZW50Q29sb3JcIiBkPVwiTTcuNDEsOC41OEwxMiwxMy4xN0wxNi41OSw4LjU4TDE4LDEwTDEyLDE2TDYsMTBMNy40MSw4LjU4WlwiIC8+XG4gICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvYnV0dG9uPmA7XG4gICAgIH1cblxuXG4gICAgICAgIHN0ciArPSBgPC9kaXY+YDtcbiAgICAgICAgICAvKlxuICAgICAgICAgIGBcbiAgICAgICAgICA8YnV0dG9uIHRvZ2dsZS1zaWRlYmFyLXJpZ2h0IGNsYXNzPVwiYnRuLWljb24gYnRuLWljb24tcmFpc2VkXCI+XG4gICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgPHN2ZyBzdHlsZT1cIndpZHRoOjI0cHg7aGVpZ2h0OjI0cHhcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCI+XG4gICAgICAgICAgICAgICAgICA8cGF0aCBmaWxsPVwiY3VycmVudENvbG9yXCIgZD1cIk0xNS40MSwxNi41OEwxMC44MywxMkwxNS40MSw3LjQxTDE0LDZMOCwxMkwxNCwxOEwxNS40MSwxNi41OFpcIiAvPlxuICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgPC9kaXY+XG4gICAgYDtcbiAgICAqL1xuICAgIGxldCAkciA9IGRvbS5jcmVhdGVFbGVtZW50RnJvbUhUTUwoc3RyKTtcblxuICAgICRyLnF1ZXJ5U2VsZWN0b3IoXCJbdG9nZ2xlLWRhcmtdXCIpLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBlID0+IHtcbiAgICAgICRyLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KFwidG9nZ2xlRGFya1wiLCB7XG4gICAgICAgIGJ1YmJsZXM6IHRydWUsXG4gICAgICAgIGNhbmNlbGFibGU6IGZhbHNlLFxuICAgICAgfSkpO1xuICAgIH0pO1xuXG4gICAgJHIucXVlcnlTZWxlY3RvcihcIltidG4tY2FsZW5kYXJdXCIpLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBlID0+IHtcbiAgICAgIGxldCB4ID0gZS54O1xuICAgICAgbGV0IHkgPSBlLnk7XG4gICAgICAkci5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudChcImNsaWNrQ2FsZW5kYXJJY29uXCIsIHtcbiAgICAgICAgYnViYmxlczogdHJ1ZSxcbiAgICAgICAgY2FuY2VsYWJsZTogZmFsc2UsXG4gICAgICAgIGRldGFpbDp7eCwgeX1cbiAgICAgIH0pKTtcbiAgICB9KTtcblxuICAgIGxldCAkYnRuVG9nZ2xlSGVhZGVyID0gICRyLnF1ZXJ5U2VsZWN0b3IoXCJbdG9nZ2xlLWhlYWRlcl1cIilcbiAgICBpZigkYnRuVG9nZ2xlSGVhZGVyKXtcbiAgICAgICRidG5Ub2dnbGVIZWFkZXIuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGUgPT4ge1xuICAgICAgICAkci5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudChcInRvZ2dsZUhlYWRlclwiLCB7XG4gICAgICAgICAgYnViYmxlczogdHJ1ZSxcbiAgICAgICAgICBjYW5jZWxhYmxlOiBmYWxzZSxcbiAgICAgICAgfSkpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLypcbiAgICAkci5xdWVyeVNlbGVjdG9yKFwiW3RvZ2dsZS1zaWRlYmFyLXJpZ2h0XVwiKS5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgZSA9PiB7XG4gICAgICAkci5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudChcInRvZ2dsZVNpZGViYXJSaWdodFwiLCB7XG4gICAgICAgIGJ1YmJsZXM6IHRydWUsXG4gICAgICAgIGNhbmNlbGFibGU6IGZhbHNlLFxuICAgICAgfSkpO1xuICAgIH0pO1xuICAgICovXG5cbiAgICAkci5xdWVyeVNlbGVjdG9yKFwiW2J0bi1wcmV2XVwiKS5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgZSA9PiB7XG4gICAgICAkci5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudChcImhlYWRlclByZXZcIiwge1xuICAgICAgICBidWJibGVzOiB0cnVlLFxuICAgICAgICBjYW5jZWxhYmxlOiBmYWxzZSxcbiAgICAgICAgZGV0YWlsOntcbiAgICAgICAgICBvcmlnaW5hbEV2dDogZVxuICAgICAgICB9XG4gICAgICB9KSk7XG4gICAgfSk7XG5cbiAgICAkci5xdWVyeVNlbGVjdG9yKFwiW2J0bi1jYWxlbmRhcl1cIikuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGUgPT4ge1xuICAgICAgJHIuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoXCJoZWFkZXJDYWxlbmRhclwiLCB7XG4gICAgICAgIGJ1YmJsZXM6IHRydWUsXG4gICAgICAgIGNhbmNlbGFibGU6IGZhbHNlLFxuICAgICAgICBkZXRhaWw6e1xuICAgICAgICAgIG9yaWdpbmFsRXZ0OiBlXG4gICAgICAgIH1cbiAgICAgIH0pKTtcbiAgICB9KTtcblxuICAgICRyLnF1ZXJ5U2VsZWN0b3IoXCJbYnRuLW5leHRdXCIpLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBlID0+IHtcbiAgICAgICRyLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KFwiaGVhZGVyTmV4dFwiLCB7XG4gICAgICAgIGJ1YmJsZXM6IHRydWUsXG4gICAgICAgIGNhbmNlbGFibGU6IGZhbHNlLFxuICAgICAgICBkZXRhaWw6e1xuICAgICAgICAgIG9yaWdpbmFsRXZ0OiBlXG4gICAgICAgIH1cbiAgICAgIH0pKTtcbiAgICB9KTtcblxuXG4gICAgJHIucXVlcnlTZWxlY3RvckFsbChcIi50YWI6bm90KC5kaXNhYmxlZClcIikuZm9yRWFjaCgkdGFiID0+IHtcbiAgICAgICR0YWIuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGUgPT4ge1xuXG4gICAgICAgICAgbGV0IGtleSA9IGUuY3VycmVudFRhcmdldC5nZXRBdHRyaWJ1dGUoXCJpbnB1dC1rZXlcIik7XG5cbiAgICAgICAgICBpZihrZXkpe1xuICAgICAgICAgICAgbGV0IHRhYlNlbGVjdGVkID0gY29uZmlnLnRpbWVsaW5lLnRhYnMuZmluZCh0YWIgPT4gdGFiLmlkID09IGtleSk7XG4gICAgICAgICAgICBpZih0YWJTZWxlY3RlZCApe1xuICAgICAgICAgICAgICAkci5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudChcInNlbGVjdFRhYkhlYWRlclwiLCB7XG4gICAgICAgICAgICAgICAgYnViYmxlczogdHJ1ZSxcbiAgICAgICAgICAgICAgICBjYW5jZWxhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBkZXRhaWw6e1xuICAgICAgICAgICAgICAgICAgdGFiOiB0YWJTZWxlY3RlZFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICAkci5xdWVyeVNlbGVjdG9yQWxsKFwiLnRhYnMtc2VsZWN0Om5vdCguZGlzYWJsZWQpXCIpLmZvckVhY2goJHRhYiA9PiB7XG4gICAgICAkdGFiLmFkZEV2ZW50TGlzdGVuZXIoXCJjaGFuZ2VcIiwgZSA9PiB7XG5cbiAgICAgICAgICBsZXQga2V5ID0gcGFyc2VGbG9hdChlLmN1cnJlbnRUYXJnZXQudmFsdWUpO1xuXG4gICAgICAgICAgaWYoa2V5KXtcbiAgICAgICAgICAgIGxldCB0YWJTZWxlY3RlZCA9IGNvbmZpZy50aW1lbGluZS50YWJzLmZpbmQodGFiID0+IHRhYi5pZCA9PSBrZXkpO1xuICAgICAgICAgICAgaWYodGFiU2VsZWN0ZWQpe1xuICAgICAgICAgICAgICAkci5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudChcInNlbGVjdFRhYkhlYWRlclwiLCB7XG4gICAgICAgICAgICAgICAgYnViYmxlczogdHJ1ZSxcbiAgICAgICAgICAgICAgICBjYW5jZWxhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBkZXRhaWw6e1xuICAgICAgICAgICAgICAgICAgdGFiOiB0YWJTZWxlY3RlZFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgfSk7XG4gICAgfSk7XG5cblxuICAgIHJldHVybiAkcjtcblxuICB9LFxuXG5cblxuICAvKipcbiAgICogQ3JlYSBIZWFkZXJcbiAgICogU2UgdXNhIHBhcmEgOlxuICAgKiAgICAtIE1vc3RyYXIgZmVjaGFzIGVuIGhlYWRlclxuICAgKlxuICAgKiBAcGFyYW0ge09iamVjdH0gY29uZmlnIC0gQ29uZmlndXJhY2lvbiBjYXBpYmFyYVxuICAgKiBAcmV0dXJuIHtPYmplY3R9IEVsZW1lbnRvIERvbVxuICAgKi9cbiAgY3JlYXRlSGVhZGVyKGNvbmZpZyl7XG4gICAgbGV0ICRlbGVtID0gZG9tLmNyZWF0ZUVsZW1lbnQoXCJoZWFkZXJcIik7XG4gICAgcmV0dXJuIHRoaXMucmVkcmF3SGVhZGVyKGNvbmZpZywgJGVsZW0pO1xuICB9LFxuXG5cblxuICAvKipcbiAgICogUmVjcmVhIEhlYWRlciwgdXNhZG8gcGFyYSByZWRpYnVqYXJcbiAgICogdXRpbGl6YSAkZWxlbSBjb21vIGVsZW1lbnRvIGRvbSBkb25kZSByZWNyZWFybG9cbiAgICpcbiAgICogQHBhcmFtIHtPYmplY3R9IGNvbmZpZyAtIENvbmZpZ3VyYWNpb24gY2FwaWJhcmFcbiAgICogQHBhcmFtIHtPYmplY3R9ICRlbGVtIC0gRWxlbWVudG8gRG9tIGRvbmRlIGNyZWEgSGVhZGVyXG4gICAqIEByZXR1cm4ge09iamVjdH0gRWxlbWVudG8gRG9tXG4gICAqL1xuICByZWRyYXdIZWFkZXIoY29uZmlnLCAkZWxlbSl7XG4gICAgbGV0IGRhdGVzVHJlZSA9IGRhdGVVdGlscy5nZXREYXRlVHJlZVJhbmdlKG5ldyBEYXRlKGNvbmZpZy50aW1lbGluZS5zdGFydCksIG5ldyBEYXRlKGNvbmZpZy50aW1lbGluZS5lbmQpKTtcblxuICAgIGxldCBzdHIgPSBgPGRpdiBjbGFzcz1cImhlYWRlci1jb250YWluZXJcIj4gYDtcblxuICAgIE9iamVjdC5rZXlzKGRhdGVzVHJlZSkuZm9yRWFjaChrZXlZID0+IHtcbiAgICAgIGxldCB5ZWFyID0gZGF0ZXNUcmVlW2tleVldO1xuICAgICAgc3RyICs9IGA8ZGl2IGNsYXNzPVwiYWduby1jYWxlbmRhcmlvXCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYWdubyBoaWRlXCI+JHtrZXlZfTwvc3Bhbj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1lc2VzXCI+YDtcblxuICAgICAgT2JqZWN0LmtleXMoeWVhcikuZm9yRWFjaChrZXlNID0+IHtcbiAgICAgICAgbGV0IG1vbnRoID0gZGF0ZXNUcmVlW2tleVldW2tleU1dO1xuICAgICAgICBzdHIgKz0gYCA8ZGl2IGNsYXNzPVwibWVzLWNhbGVuZGFyaW9cIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1lcyAkeyBPYmplY3Qua2V5cyhtb250aCkubGVuZ3RoIDwgMyA/ICdtZXMtcmVkdWNlZCBtZXMtcmVkdWNlZC0nICsgT2JqZWN0LmtleXMobW9udGgpLmxlbmd0aCA6ICcnfVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXMtbGFiZWxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICR7dXRpbHMuZ2V0TW9udGhCeVBvc2l0aW9uKGtleU0pfSAke2tleVl9XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGlhc1wiPmA7XG4gICAgICAgIE9iamVjdC5rZXlzKG1vbnRoKS5mb3JFYWNoKGtleUQgPT4ge1xuICAgICAgICAgIGxldCBkYXkgICAgICAgPSBkYXRlc1RyZWVba2V5WV1ba2V5TV1ba2V5RF07XG4gICAgICAgICAgbGV0IGlzV2Vla2VuZCA9IGRheS5pc1dlZWtlbmQ7XG4gICAgICAgICAgbGV0IGlzVG9kYXkgICA9IGRheS5pc1RvZGF5O1xuICAgICAgICAgIGxldCBkYXRlID0gZGF0ZVV0aWxzLmZvcm1hdERhdGUoZGF5LkRhdGUpO1xuICAgICAgICAgIHN0ciArPSBgPGRpdiBjbGFzcz1cImRpYS1jYWxlbmRhcmlvICR7aXNUb2RheT8ndG9kYXknOicnfSAgJHtpc1dlZWtlbmQ/J3dlZWtlbmQnOicnfSAke2NvbmZpZy50aW1lbGluZS5kYXRlU2VsZWN0YWJsZSA/J2lzLWNsaWNrZWFibGUnOicnfVwiIGRhdGU9XCIke2RhdGV9XCI+JHtrZXlEfTwvZGl2PmA7XG4gICAgICAgIH0pO1xuICAgICAgICBzdHIgKz0gYDwvZGl2PjwvZGl2PmA7XG4gICAgICB9KTtcbiAgICAgIHN0ciArPSBgPC9kaXY+IDwvZGl2PmA7XG5cbiAgICB9KTtcblxuICAgIHN0ciAgICAgICAgICAgICArPSBgPC9kaXY+YDtcbiAgICAkZWxlbS5pbm5lckhUTUwgID0gXCJcIjtcbiAgICAkZWxlbS5hcHBlbmQoZG9tLmNyZWF0ZUVsZW1lbnRGcm9tSFRNTChzdHIpKTtcblxuICAgIGlmKGNvbmZpZy50aW1lbGluZS5kYXRlU2VsZWN0YWJsZSl7XG4gICAgICAkZWxlbS5xdWVyeVNlbGVjdG9yQWxsKFwiLmRpYS1jYWxlbmRhcmlvW2RhdGVdXCIpLmZvckVhY2goJGRpYSA9PiB7XG4gICAgICAgICRkaWEuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGV2dCA9PiB7XG5cbiAgICAgICAgICAkZWxlbS5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudChcImNsaWNrRGF0ZVwiLCB7XG4gICAgICAgICAgICBidWJibGVzICAgIDogdHJ1ZSxcbiAgICAgICAgICAgIGNhbmNlbGFibGUgOiBmYWxzZSxcbiAgICAgICAgICAgIGRldGFpbCAgICAgOiB7XG4gICAgICAgICAgICAgICRlbGVtOiAkZGlhLFxuICAgICAgICAgICAgICBkYXRlOiAkZGlhLmdldEF0dHJpYnV0ZShcImRhdGVcIiksXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSkpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiAkZWxlbTtcbiAgfSxcblxuXG4gIC8qKlxuICAgKiBDcmVhIEhlYWRlciBleHRlbmRlZFxuICAgKiBTZSB1c2EgcGFyYSA6XG4gICAqICAgIC1Nb3N0cmFyIGlucHV0cyB5IGRhdG9zIHBhcmEgZmVjaGFzIGVuIGhlYWRlclxuICAgKlxuICAgKiBAcGFyYW0ge09iamVjdH0gY29uZmlnIC0gQ29uZmlndXJhY2lvbiBjYXBpYmFyYVxuICAgKiBAcmV0dXJuIHtPYmplY3R9IEVsZW1lbnRvIERvbSBoZWFkZXJFeHRlbmRlZFxuICAgKi9cbiAgY3JlYXRlSGVhZGVyRXh0ZW5kZWQoY29uZmlnKXtcbiAgICBpZihjb25maWcudGltZWxpbmUuaGVhZGVyLmV4dGVuZC5lbmFibGVkID09IGZhbHNlKSByZXR1cm4gbnVsbDtcblxuICAgIGxldCBkYXRlcyA9IGRhdGVVdGlscy5nZXREYXRlUmFuZ2UobmV3IERhdGUoY29uZmlnLnRpbWVsaW5lLnN0YXJ0KSwgbmV3IERhdGUoY29uZmlnLnRpbWVsaW5lLmVuZCkpO1xuICAgIGxldCBzdHIgICA9IGA8ZGl2IGNsYXNzPVwiaGVhZGVyLWNvbnRhaW5lci1leHRlbmRlZFwiPmA7XG5cbiAgICBjb25maWcudGltZWxpbmUuaGVhZGVyLmV4dGVuZC5kYXRhLmZvckVhY2goKGQgLCBkX2luZGV4KT0+IHtcbiAgICAgIGlmKGQuaXNIaWRkZW4pIHJldHVybiBcIlwiO1xuXG4gICAgICBsZXQgaXNQZXJzaXN0ZW50ID0gZC5pc1BlcnNpc3RlbnQ7XG4gICAgICBzdHIgKz0gYDxkaXYgY2xhc3M9XCJpbnB1dC1saXN0ICR7aXNQZXJzaXN0ZW50PydwZXJzaXN0ZW50JzonJ31cIj5gO1xuICAgICAgc3RyICs9IGRhdGVzLm1hcChkYXRlID0+IHtcblxuICAgICAgICBsZXQgdmFsdWUgPSAnJztcbiAgICAgICAgbGV0IGlzRnV0dXJlID0gZGF0ZVV0aWxzLmlzRnV0dXJlKGRhdGUpO1xuICAgICAgICBsZXQgaXNUb2RheSA9IGRhdGVVdGlscy5pc1RvZGF5KGRhdGUpO1xuXG4gICAgICAgIGlmKGQuZGF0YSl7XG4gICAgICAgICAgbGV0IGRhdGFGb3VuZGVkID0gZC5kYXRhLmZpbmQoZGF0YUlucHV0ID0+IHtcbiAgICAgICAgICAgIHJldHVybiBkYXRlVXRpbHMuaXNTYW1lRGF0ZShuZXcgRGF0ZShkYXRhSW5wdXQuZGF0ZSksIGRhdGUpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIGlmKGRhdGFGb3VuZGVkKXtcbiAgICAgICAgICAgIHZhbHVlID0gZGF0YUZvdW5kZWQudmFsdWUgfHwgJyc7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYoZC5lZGl0YWJsZSA9PT0gZmFsc2UgfHwgKCBpc0Z1dHVyZSAmJiBkLmVkaXRhYmxlRnV0dXJlID09IGZhbHNlIHx8ICggaXNUb2RheSAmJiBkLmVkaXRhYmxlVG9kYXkgPT0gZmFsc2UpKSl7XG4gICAgICAgICAgcmV0dXJuICBgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBkYXRlPVwiJHtkYXRlfVwiIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4PVwiJHtkX2luZGV4fVwiIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiJHtkYXRlLnZhck5hbWV9ICR7ZC5jb2xvcj8nYy0nK2QuY29sb3IrJy0tdGV4dCc6Jyd9XCIgPiBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAke3ZhbHVlfSBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PmBcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBpc0Rpc2FibGVkID0gZmFsc2U7XG4gICAgICAgIGlmKGNvbmZpZy50aW1lbGluZS5lZGl0YWJsZSA9PT0gZmFsc2Upe1xuICAgICAgICAgIGlzRGlzYWJsZWQgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGA8ZGl2IGNsYXNzPVwiZGlhLWlucHV0XCI+XG4gICAgICAgICAgICAgICAgICA8aW5wdXQgXG4gICAgICAgICAgICAgICAgICBkYXRlPVwiJHtkYXRlfVwiIFxuICAgICAgICAgICAgICAgICAgaW5kZXg9XCIke2RfaW5kZXh9XCIgXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImhlYWRlci1pbnB1dCBcbiAgICAgICAgICAgICAgICAgICR7ZGF0ZS52YXJOYW1lfSAke2QuY29sb3I/J2MtJytkLmNvbG9yKyctLXRleHQnOicnfVwiIFxuICAgICAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgICAgICAgICAke2lzRGlzYWJsZWQgPyAnZGlzYWJsZWQnOicnfSBcbiAgICAgICAgICAgICAgICAgIHZhbHVlPVwiJHt2YWx1ZX1cIj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5gO1xuICAgICAgfSkuam9pbihcIlwiKTtcbiAgICAgIHN0ciArPSBgPC9kaXY+YDtcbiAgICB9KTtcblxuICAgIHN0ciArPSBgPC9kaXY+YDtcblxuXG5cbiAgICBsZXQgciA9IGRvbS5jcmVhdGVFbGVtZW50RnJvbUhUTUwoc3RyKTtcblxuXG4gICAgci5xdWVyeVNlbGVjdG9yQWxsKFwiaW5wdXQuaGVhZGVyLWlucHV0XCIpLmZvckVhY2goaW5wdXQgPT4ge1xuICAgICAgaW5wdXQuYWRkRXZlbnRMaXN0ZW5lcihcImlucHV0XCIsIGUgPT4ge1xuICAgICAgICBsZXQgZGF0ZSAgICAgPSBlLmN1cnJlbnRUYXJnZXQuZ2V0QXR0cmlidXRlKFwiZGF0ZVwiKTtcbiAgICAgICAgbGV0IGluZGV4ICAgID0gZS5jdXJyZW50VGFyZ2V0LmdldEF0dHJpYnV0ZShcImluZGV4XCIpO1xuICAgICAgICBsZXQgdmFsdWUgICAgPSBlLmN1cnJlbnRUYXJnZXQudmFsdWU7XG4gICAgICAgIGxldCB0eXBlRGF0YSA9IGNvbmZpZy50aW1lbGluZS5oZWFkZXIuZXh0ZW5kLmRhdGFbaW5kZXhdO1xuXG4gICAgICAgIC8vcmVmcmVzaCBjb25maWcgdmFsdWVcbiAgICAgICAgbGV0IGRhdGEgPSB0eXBlRGF0YS5kYXRhLmZpbmQoIGQgPT4gZGF0ZVV0aWxzLmlzU2FtZURhdGUobmV3IERhdGUoZC5kYXRlKSwgbmV3IERhdGUoZGF0ZSkgKSApO1xuICAgICAgICBkYXRhLnZhbHVlID0gdmFsdWU7XG5cbiAgICAgICAgci5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudChcImNoYW5nZUlucHV0SGVhZGVyXCIsIHtcbiAgICAgICAgICBidWJibGVzICAgIDogdHJ1ZSxcbiAgICAgICAgICBjYW5jZWxhYmxlIDogZmFsc2UsXG4gICAgICAgICAgZGV0YWlsICAgICA6IHtcbiAgICAgICAgICAgIGRhdGUgICAgIDogZGF0ZSxcbiAgICAgICAgICAgIHR5cGVEYXRhIDogdHlwZURhdGEsXG4gICAgICAgICAgICB2YWx1ZSAgICA6IHZhbHVlXG4gICAgICAgICAgfVxuICAgICAgICB9KSk7XG4gICAgICB9KVxuICAgIH0pXG5cblxuICAgIHJldHVybiByO1xuICB9LFxuXG5cblxuXG4gIC8qKlxuICAgKiBDcmVhciBTaWRlYmFyIEl6cXVpZXJkb1xuICAgKiAgICAtIE1hbmVqYSBpdGVtcyBjb21vIGFyYm9sIGRlIDIgbml2ZWxlcyAocGFyZW50LCBjaGlsZHJlbilcbiAgICogICAgLSBFbCBzaWRlYmFyIHNlIGRpdmlkZSBlbiBuYXZMaXN0IC0gSW5pdGlhbE5hdiAtIGV4dGVuZGVkTmF2IC0gQnRuTmF2XG4gICAqICAgIC0gU2UgYWdyZWdhIGl0ZW1EZXRhaWwsIHBhcmEgZGV0YWxsZXMgZGUgaXRlbXNcbiAgICpcbiAgICpcbiAgICogVE9ETzogcGFyYSBldml0YXIgaW5jcnVzdGFyIGxhcyBpZHMgZW4gbG9zIGlucHV0cywgc2UgZGViZW4gY3JlYXJcbiAgICogbG9zIG5vZG9zIHVubyBwb3IgdW5vIGNvbW8gZWxlbWVudG8gRE9NLCB5IGFncmVnYXJsZXMgbG9zIGV2ZW50b3MgZGlyZWN0YW1lbnRlXG4gICAqIGFob3JhIHNlIGhhY2Ugc2VsZWNjaW9uYW5kbyB0b2RvcyBsb3MgaW5wdXRzIGNvbiBxdWVyeVNlbGVjdG9yQWxsXG4gICAqXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBjb25maWcgLSBDb25maWd1cmFjaW9uIGNhcGliYXJhXG4gICAqIEByZXR1cm4ge09iamVjdH0gRWxlbWVudG8gRG9tIFNpZGViYXIgSXpxdWllcmRvXG4gICAqL1xuICBjcmVhdGVOYXZMZWZ0KGNvbmZpZywgdGFiID0gbnVsbCl7XG4gICAgbGV0ICRlbGVtID0gZG9tLmNyZWF0ZUVsZW1lbnQoXCJuYXZcIiwge2NsYXNzTmFtZTpcImxlZnRcIn0pO1xuICAgIHJldHVybiB0aGlzLnJlZHJhd05hdkxlZnQoJGVsZW0sIGNvbmZpZyx0YWIpO1xuICB9LFxuXG4gIC8qKlxuICAgKiBSZWNyZWEgU2lkZWJhciBpenF1aWVyZG8sIHVzYWRvIHBhcmEgcmVkaWJ1amFyXG4gICAqIFV0aWxpemEgJGVsZW0gY29tbyBlbGVtZW50byBkb20gZG9uZGUgcmVjcmVhcmxvXG4gICAqXG4gICAqXG4gICAqIEBwYXJhbSB7T2JqZWN0fSAkZWxlbSAtIEVsZW1lbnRvIERvbSBkb25kZSBjcmVhIGVsIHNpZGViYXIgaXpxdWllcmRvXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBjb25maWcgLSBDb25maWd1cmFjaW9uIGNhcGliYXJhXG4gICAqIEByZXR1cm4ge09iamVjdH0gRWxlbWVudG8gRG9tIG5hdkxlZnRcbiAgICovXG5cbiAgcmVkcmF3TmF2TGVmdCgkZWxlbSwgY29uZmlnLCB0YWIgPSBudWxsKXtcblxuICAgIGxldCBuYXZMaXN0ICAgICAgICA9IFwiXCI7XG4gICAgbGV0IGluaXRpYWxOYXZMaXN0ID0gXCJcIjtcbiAgICBsZXQgZXhOYXZMaXN0ICAgICAgPSBcIlwiO1xuICAgIGxldCBidG5OYXZMaXN0ICAgICA9IFwiXCI7XG4gICAgbGV0IGlzRGlzYWJsZWQgICAgID0gZmFsc2U7XG4gICAgaWYoY29uZmlnLnRpbWVsaW5lLmVkaXRhYmxlID09PSBmYWxzZSl7XG4gICAgICBpc0Rpc2FibGVkID0gdHJ1ZTtcbiAgICB9XG5cblxuXG5cbiAgICBjb25maWcuZGF0YS5mb3JFYWNoKGQgPT4ge1xuXG4gICAgICAgbmF2TGlzdCArPSBgXG4gICAgICAgPGRpdiBjbGFzcz1cIm5hdi1pdGVtXCI+XG5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwibmF2LWl0ZW0tY29udGFpbmVyIHBhcmVudFwiPmBcblxuICAgICAgICBpZihkLmNoaWxkcmVuKXtcbiAgICAgICAgICAgbmF2TGlzdCArPSBgPGJ1dHRvbiBjbGFzcz1cInRyZWUtaWNvbiAke2QuaGlkZGVuID8gJycgOidyb3RhdGUnfVwiIGl0ZW0taWQ9XCIke2QuaWQgfHwgLTF9XCIgdHlwZS1ub2RlPVwiJHtkLnR5cGUgfHwgJyd9XCIgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHN0eWxlPVwid2lkdGg6MjRweDtoZWlnaHQ6MjRweFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZmlsbD1cImN1cnJlbnRDb2xvclwiIGQ9XCJNNy40MSw4LjU4TDEyLDEzLjE3TDE2LjU5LDguNThMMTgsMTBMMTIsMTZMNiwxMEw3LjQxLDguNThaXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5gO1xuICAgICAgICB9XG5cbiAgICAgICBuYXZMaXN0ICs9IGBcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaXRlbS10aXRsZSB0cnVuY2F0ZSBmdWxsLXdpZHRoICR7ZC5jbGlja2VhYmxlID8gJ2NsaWNrZWFibGUnOicnfSBcIiBpdGVtLWlkPVwiJHtkLmlkIHx8IC0xfVwiIHR5cGUtbm9kZT1cIiR7ZC50eXBlIHx8ICcnfVwiID5cbiAgICAgICAgICAgICR7ZC5sYWJlbH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+YDtcblxuICAgICAgICBpZihkLmNoaWxkcmVuKXtcbiAgICAgICAgICAgbmF2TGlzdCArPSBgXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlsZHJlbi1pdGVtcyAke2QuaGlkZGVuID8gJ2hpZGUnIDonJ30gXCIgY2hpbGQtbGlzdD1cIiR7ZC5pZCB8fCAtMX1cIj5gXG5cbiAgICAgICAgICBkLmNoaWxkcmVuLmZvckVhY2goYyA9PiB7XG4gICAgICAgICAgICBuYXZMaXN0ICs9ICBgXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoaWxkLW5hdi1pdGVtXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibmF2LWl0ZW0tY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgIGA7XG5cbiAgICAgICAgICAgICAgICAgICAgLypcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJuYXYtaXRlbS1pY29uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHN2ZyBzdHlsZT1cIndpZHRoOjI0cHg7aGVpZ2h0OjI0cHhcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGZpbGw9XCJjdXJyZW50Q29sb3JcIiBkPVwiTTE5LDE1TDEzLDIxTDExLjU4LDE5LjU4TDE1LjE3LDE2SDRWNEg2VjE0SDE1LjE3TDExLjU4LDEwLjQyTDEzLDlMMTksMTVaXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICovXG5cbiAgICAgICAgICAgIG5hdkxpc3QgKz0gIGBcbiAgICAgICAgICAgICAgICAgICAgJHsgYy5saWdodCA/ICc8c3BhbiBjbGFzcz1cImxpZ2h0ICcrIChjLmxpZ2h0ID8gKGMubGlnaHQrJy1saWdodCcpOicnKSArJ1wiPjwvc3Bhbj4nIDogJycgfVxuXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpdGVtLXRpdGxlICR7Yy5jbGlja2VhYmxlID8gJ2NsaWNrZWFibGUnOicnfVwiIGl0ZW0taWQ9XCIke2MuaWQgfHwgLTF9XCIgdHlwZS1ub2RlPVwiJHtjLnR5cGUgfHwgJyd9XCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRydW5jYXRlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAke2MubGFiZWx9XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+YDtcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgbmF2TGlzdCArPSBgXG4gICAgICAgICAgICAgIDwvZGl2PmA7XG4gICAgICAgIH1cblxuICAgICAgIG5hdkxpc3QgKz0gYDwvZGl2PmA7XG5cblxuXG5cblxuICAgICAgLy9pbml0aWFsXG4gICAgICBpbml0aWFsTmF2TGlzdCArPSBgPGRpdiBjbGFzcz1cImluaXRpYWwtbmF2LWl0ZW0gcGFyZW50XCI+YDtcbiAgICAgIGlmKGQud2l0aE5hdil7XG4gICAgICAgIGNvbmZpZy50aW1lbGluZS5uYXYubGVmdC5pbml0aWFsLnZhcnMuZm9yRWFjaCh2ID0+IHtcbiAgICAgICAgICBsZXQgdmFsdWUgPSBkLnZhbHVlc1t2LnZhck5hbWVdID8gZC52YWx1ZXNbdi52YXJOYW1lXSA6ICcnO1xuICAgICAgICAgIGlmKHYucm91bmQgJiYgIWlzTmFOKHZhbHVlKSl7XG4gICAgICAgICAgICB2YWx1ZSA9IHV0aWxzLnJvdW5kKHZhbHVlLCB2LnJvdW5kKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYodi5pbnB1dCl7XG5cbiAgICAgICAgICAgIHN3aXRjaCAodi5pbnB1dCkge1xuICAgICAgICAgICAgICBjYXNlICdob3VyJzpcbiAgICAgICAgICAgICAgICB2YWx1ZSAgID0gdmFsdWUuc3BsaXQoXCI6XCIpO1xuICAgICAgICAgICAgICAgIGxldCBoaFZhbHVlID0gdmFsdWVbMF07XG4gICAgICAgICAgICAgICAgbGV0IG1tVmFsdWUgPSB2YWx1ZVsxXTtcbiAgICAgICAgICAgICAgICBpbml0aWFsTmF2TGlzdCArPSBgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIml0ZW0tY29sIGhhcy1pbnB1dFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhvdXItaW5wdXRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJudW1iZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dC10eXBlPVwidGltZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heD1cIjIzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluPVwiMDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dC1rZXk9XCIke3Yua2V5IHx8ICcnfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0taWQ9XCIke2QuaWQgfHwgLTF9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZS1ub2RlPVwiJHtkLnR5cGUgfHwgJyd9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9XCIke2hoVmFsdWV9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtpc0Rpc2FibGVkID8gJ2Rpc2FibGVkJzonJ31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJoaFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj46PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0LXR5cGU9XCJ0aW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4PVwiNTlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW49XCIwMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0LWtleT1cIiR7di5rZXkgfHwgJyd9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS1pZD1cIiR7ZC5pZCB8fCAtMX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlLW5vZGU9XCIke2QudHlwZSB8fCAnJ31cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT1cIiR7bW1WYWx1ZX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2lzRGlzYWJsZWQgPyAnZGlzYWJsZWQnOicnfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1tXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5gO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICBjYXNlICd0ZXh0JzpcbiAgICAgICAgICAgICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBpbml0aWFsTmF2TGlzdCArPSBgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIml0ZW0tY29sIGhhcy1pbnB1dFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0ICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cIiR7di5pbnB1dCB8fCAndGV4dCd9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXQtdHlwZT1cIiR7di5pbnB1dCB8fCAndGV4dCd9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXQta2V5PVwiJHt2LmtleSB8fCAnJ31cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLWlkPVwiJHtkLmlkIHx8IC0xfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUtbm9kZT1cIiR7ZC50eXBlIHx8ICcnfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7aXNEaXNhYmxlZCA/ICdkaXNhYmxlZCc6Jyd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPVwiJHt2YWx1ZX1cIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+YDtcbiAgICAgICAgICAgIH1cblxuXG4gICAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICBpbml0aWFsTmF2TGlzdCArPSBgXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpdGVtLWNvbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7dmFsdWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PmA7XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICAgaW5pdGlhbE5hdkxpc3QgKz0gYFxuICAgICAgICAgICAgICAgICAgPC9kaXY+YDtcblxuICAgICAgaWYoZC5jaGlsZHJlbil7XG4gICAgICAgIGQuY2hpbGRyZW4uZm9yRWFjaChjID0+IHtcbiAgICAgICAgICBpbml0aWFsTmF2TGlzdCArPSBgPGRpdiBjbGFzcz1cImNoaWxkLWluaXRpYWwtbmF2LWl0ZW0gJHtkLmhpZGRlbiA/ICdoaWRlJyA6Jyd9XCIgY2hpbGQ9XCIke2QuaWQgfHwgLTF9XCI+YDtcbiAgICAgICAgICBjb25maWcudGltZWxpbmUubmF2LmxlZnQuaW5pdGlhbC52YXJzLmZvckVhY2godiA9PiB7XG5cbiAgICAgICAgICAgICAgaWYodi5vbmx5VGFiICYmIHRhYiAmJiB2Lm9ubHlUYWIgIT09IHRhYi5rZXkpIHJldHVybjtcblxuICAgICAgICAgICAgICBsZXQgdmFsdWUgPSBjLnZhbHVlc1t2LnZhck5hbWVdID8gYy52YWx1ZXNbdi52YXJOYW1lXSA6ICcnO1xuICAgICAgICAgICAgICBpZih2LnJvdW5kICYmICFpc05hTih2YWx1ZSkpe1xuICAgICAgICAgICAgICAgIHZhbHVlID0gdXRpbHMucm91bmQodmFsdWUsIHYucm91bmQpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmKHYuaW5wdXQpe1xuXG4gICAgICAgICAgICAgICAgc3dpdGNoICh2LmlucHV0KSB7XG4gICAgICAgICAgICAgICAgICBjYXNlICdob3VyJzpcbiAgICAgICAgICAgICAgICAgIHZhbHVlICAgPSB2YWx1ZS5zcGxpdChcIjpcIik7XG4gICAgICAgICAgICAgICAgICBsZXQgaGhWYWx1ZSA9IHZhbHVlWzBdO1xuICAgICAgICAgICAgICAgICAgbGV0IG1tVmFsdWUgPSB2YWx1ZVsxXTtcbiAgICAgICAgICAgICAgICAgIGluaXRpYWxOYXZMaXN0ICs9IGBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIml0ZW0tY29sIGhhcy1pbnB1dFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJob3VyLWlucHV0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dC10eXBlPVwidGltZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXg9XCIyM1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW49XCIwMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dC1rZXk9XCIke3Yua2V5IHx8ICcnfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLWlkPVwiJHtjLmlkIHx8IC0xfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlLW5vZGU9XCIke2MudHlwZSB8fCAnJ31cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9XCIke2hoVmFsdWV9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7aXNEaXNhYmxlZCA/ICdkaXNhYmxlZCc6Jyd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImhoXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj46PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJudW1iZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXQtdHlwZT1cInRpbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4PVwiNTlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluPVwiMDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXQta2V5PVwiJHt2LmtleSB8fCAnJ31cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS1pZD1cIiR7Yy5pZCB8fCAtMX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZS1ub2RlPVwiJHtjLnR5cGUgfHwgJyd9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPVwiJHttbVZhbHVlfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2lzRGlzYWJsZWQgPyAnZGlzYWJsZWQnOicnfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5gO1xuICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICBjYXNlICd0ZXh0JzpcbiAgICAgICAgICAgICAgICAgIGNhc2UgJ251bWJlcic6XG4gICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgaW5pdGlhbE5hdkxpc3QgKz0gYFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaXRlbS1jb2wgaGFzLWlucHV0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiJHt2LmlucHV0IHx8ICd0ZXh0J31cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXQtdHlwZT1cIiR7di5pbnB1dCB8fCAndGV4dCd9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0LWtleT1cIiR7di5rZXkgfHwgJyd9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0taWQ9XCIke2MuaWQgfHwgLTF9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUtbm9kZT1cIiR7Yy50eXBlIHx8ICcnfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2lzRGlzYWJsZWQgPyAnZGlzYWJsZWQnOicnfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9XCIke3ZhbHVlfVwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+YDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICAgICAgaW5pdGlhbE5hdkxpc3QgKz0gYFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIml0ZW0tY29sXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7dmFsdWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5gO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgfSlcbiAgICAgICAgICAgaW5pdGlhbE5hdkxpc3QgKz0gYFxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PmA7XG4gICAgICAgIH0pXG4gICAgICB9XG5cblxuXG5cblxuXG5cblxuICAgICAgLy9FeHRcbiAgICAgIGV4TmF2TGlzdCArPSBgPGRpdiBjbGFzcz1cImV4LW5hdi1pdGVtIHBhcmVudFwiPmA7XG4gICAgICBpZihkLndpdGhFeE5hdil7XG4gICAgICAgIGNvbmZpZy50aW1lbGluZS5uYXYubGVmdC5leHRlbmQudmFycy5mb3JFYWNoKHYgPT4ge1xuICAgICAgICAgIGxldCB2YWx1ZSA9IGQudmFsdWVzW3YudmFyTmFtZV0gPyBkLnZhbHVlc1t2LnZhck5hbWVdIDogJyc7XG4gICAgICAgICAgaWYodi5yb3VuZCAmJiAhaXNOYU4odmFsdWUpKXtcbiAgICAgICAgICAgIHZhbHVlID0gdXRpbHMucm91bmQodmFsdWUsIHYucm91bmQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZih2LmlucHV0KXtcbiAgICAgICAgICAgIHN3aXRjaCAodi5pbnB1dCkge1xuICAgICAgICAgICAgICBjYXNlICdob3VyJzpcbiAgICAgICAgICAgICAgICB2YWx1ZSAgID0gdmFsdWUuc3BsaXQoXCI6XCIpO1xuICAgICAgICAgICAgICAgIGxldCBoaFZhbHVlID0gdmFsdWVbMF07XG4gICAgICAgICAgICAgICAgbGV0IG1tVmFsdWUgPSB2YWx1ZVsxXTtcbiAgICAgICAgICAgICAgICBleE5hdkxpc3QgKz0gYFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpdGVtLWNvbCBoYXMtaW5wdXRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJob3VyLWlucHV0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXQtdHlwZT1cInRpbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXg9XCIyM1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbj1cIjBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dC1rZXk9XCIke3Yua2V5IHx8ICcnfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0taWQ9XCIke2QuaWQgfHwgLTF9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZS1ub2RlPVwiJHtkLnR5cGUgfHwgJyd9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9XCIke2hoVmFsdWV9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtpc0Rpc2FibGVkID8gJ2Rpc2FibGVkJzonJ31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJoaFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj46PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0LXR5cGU9XCJ0aW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4PVwiNTlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW49XCIwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXQta2V5PVwiJHt2LmtleSB8fCAnJ31cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLWlkPVwiJHtkLmlkIHx8IC0xfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUtbm9kZT1cIiR7ZC50eXBlIHx8ICcnfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPVwiJHttbVZhbHVlfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7aXNEaXNhYmxlZCA/ICdkaXNhYmxlZCc6Jyd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PmA7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIGNhc2UgJ3RleHQnOlxuICAgICAgICAgICAgICBjYXNlICdudW1iZXInOlxuICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGV4TmF2TGlzdCArPSBgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIml0ZW0tY29sIGhhcy1pbnB1dFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCIke3YuaW5wdXQgfHwgJ3RleHQnfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0LXR5cGU9XCIke3YuaW5wdXQgfHwgJ3RleHQnfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0LWtleT1cIiR7di5rZXkgfHwgJyd9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS1pZD1cIiR7ZC5pZCB8fCAtMX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlLW5vZGU9XCIke2QudHlwZSB8fCAnJ31cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2lzRGlzYWJsZWQgPyAnZGlzYWJsZWQnOicnfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT1cIiR7dmFsdWV9XCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PmA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICB9ZWxzZXtcbiAgICAgICAgICAgIGV4TmF2TGlzdCArPSBgXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpdGVtLWNvbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7dmFsdWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PmA7XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICAgZXhOYXZMaXN0ICs9IGBcbiAgICAgICAgICAgICAgICAgIDwvZGl2PmA7XG5cbiAgICAgIGlmKGQuY2hpbGRyZW4pe1xuICAgICAgICBkLmNoaWxkcmVuLmZvckVhY2goYyA9PiB7XG4gICAgICAgICAgZXhOYXZMaXN0ICs9IGA8ZGl2IGNsYXNzPVwiY2hpbGQtZXgtbmF2LWl0ZW0gJHtkLmhpZGRlbiA/ICdoaWRlJyA6Jyd9XCIgY2hpbGQ9XCIke2QuaWQgfHwgLTF9XCI+YDtcbiAgICAgICAgICBjb25maWcudGltZWxpbmUubmF2LmxlZnQuZXh0ZW5kLnZhcnMuZm9yRWFjaCh2ID0+IHtcblxuICAgICAgICAgICAgICBpZih2Lm9ubHlUYWIgJiYgdGFiICYmIHYub25seVRhYiAhPT0gdGFiLmtleSkgcmV0dXJuO1xuXG4gICAgICAgICAgICAgIGxldCB2YWx1ZSA9IGMudmFsdWVzW3YudmFyTmFtZV0gPyBjLnZhbHVlc1t2LnZhck5hbWVdIDogJyc7XG4gICAgICAgICAgICAgIGlmKHYucm91bmQgJiYgIWlzTmFOKHZhbHVlKSl7XG4gICAgICAgICAgICAgICAgdmFsdWUgPSB1dGlscy5yb3VuZCh2YWx1ZSwgdi5yb3VuZCk7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZih2LmlucHV0KXtcblxuICAgICAgICAgICAgICAgIHN3aXRjaCAodi5pbnB1dCkge1xuICAgICAgICAgICAgICAgICAgY2FzZSAnaG91cic6XG4gICAgICAgICAgICAgICAgICB2YWx1ZSAgID0gdmFsdWUuc3BsaXQoXCI6XCIpO1xuICAgICAgICAgICAgICAgICAgbGV0IGhoVmFsdWUgPSB2YWx1ZVswXTtcbiAgICAgICAgICAgICAgICAgIGxldCBtbVZhbHVlID0gdmFsdWVbMV07XG4gICAgICAgICAgICAgICAgICBleE5hdkxpc3QgKz0gYFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaXRlbS1jb2wgaGFzLWlucHV0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhvdXItaW5wdXRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0LXR5cGU9XCJ0aW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heD1cIjIzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbj1cIjBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXQta2V5PVwiJHt2LmtleSB8fCAnJ31cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS1pZD1cIiR7Yy5pZCB8fCAtMX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZS1ub2RlPVwiJHtjLnR5cGUgfHwgJyd9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPVwiJHtoaFZhbHVlfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2lzRGlzYWJsZWQgPyAnZGlzYWJsZWQnOicnfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJoaFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+Ojwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0LXR5cGU9XCJ0aW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heD1cIjU5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbj1cIjBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXQta2V5PVwiJHt2LmtleSB8fCAnJ31cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS1pZD1cIiR7Yy5pZCB8fCAtMX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZS1ub2RlPVwiJHtjLnR5cGUgfHwgJyd9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPVwiJHttbVZhbHVlfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2lzRGlzYWJsZWQgPyAnZGlzYWJsZWQnOicnfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5gO1xuICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICBjYXNlICd0ZXh0JzpcbiAgICAgICAgICAgICAgICAgIGNhc2UgJ251bWJlcic6XG4gICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgZXhOYXZMaXN0ICs9IGBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIml0ZW0tY29sIGhhcy1pbnB1dFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiJHt2LmlucHV0IHx8ICd0ZXh0J31cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXQtdHlwZT1cIiR7di5pbnB1dCB8fCAndGV4dCd9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0LWtleT1cIiR7di5rZXkgfHwgJyd9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0taWQ9XCIke2MuaWQgfHwgLTF9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUtbm9kZT1cIiR7Yy50eXBlIHx8ICcnfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2lzRGlzYWJsZWQgPyAnZGlzYWJsZWQnOicnfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9XCIke3ZhbHVlfVwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+YDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICAgICAgZXhOYXZMaXN0ICs9IGBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpdGVtLWNvbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke3ZhbHVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+YDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgICAgIGV4TmF2TGlzdCArPSBgXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+YDtcbiAgICAgICAgfSlcbiAgICAgIH1cblxuXG5cblxuICAgICAgLy9idXR0b25zXG4gICAgICBidG5OYXZMaXN0ICs9IGA8ZGl2IGNsYXNzPVwiYnRuLW5hdi1pdGVtIHBhcmVudFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ0bi1uYXYtaXRlbS1jb250ZW50XCI+YDtcbiAgICAgIGlmKGNvbmZpZy50aW1lbGluZS5uYXYubGVmdC5idXR0b25zICYmIGNvbmZpZy50aW1lbGluZS5uYXYubGVmdC5idXR0b25zLnZhcnMpe1xuXG4gICAgICAgIGNvbmZpZy50aW1lbGluZS5uYXYubGVmdC5idXR0b25zLnZhcnMuZm9yRWFjaChidG4gPT4ge1xuXG5cblxuICAgICAgICAgIGlmKGQud2l0aEJ0bk5hdil7XG5cbiAgICAgICAgICAgIGlmKGJ0bi5pY29uKXtcbiAgICAgICAgICAgICAgICBidG5OYXZMaXN0ICs9IGBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4tc2hhcGUgJHtidG4uY2xhc3NOYW1lfVwiIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dC1rZXk9XCIke2J0bi5rZXkgfHwgJyd9XCIgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0taWQ9XCIke2QuaWQgfHwgLTF9XCIgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7aXNEaXNhYmxlZCA/ICdkaXNhYmxlZCc6Jyd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUtbm9kZT1cIiR7ZC50eXBlIHx8ICcnfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2J0bi5pY29uID8gYnRuLmljb24gOiAnJ31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPmA7XG4gICAgICAgICAgICB9XG5cblxuICAgICAgICAgICAgaWYoYnRuLmljb25Gb3JtYXR0ZXIpe1xuICAgICAgICAgICAgICAgIGJ0bk5hdkxpc3QgKz0gYFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0bi1zaGFwZSAke2J0bi5jbGFzc05hbWV9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXQta2V5PVwiJHtidG4ua2V5IHx8ICcnfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0taWQ9XCIke2QuaWQgfHwgLTF9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtpc0Rpc2FibGVkID8gJ2Rpc2FibGVkJzonJ31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZS1ub2RlPVwiJHtkLnR5cGUgfHwgJyd9XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7YnRuLmljb25Gb3JtYXR0ZXIgPyBidG4uaWNvbkZvcm1hdHRlcihkLCBidG4pIDogJyd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5gO1xuICAgICAgICAgICAgfVxuXG5cbiAgICAgICAgICAgIGlmKGJ0bi5zaGFwZSl7XG4gICAgICAgICAgICAgICAgYnRuTmF2TGlzdCArPSBgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuLXNoYXBlIGJ0bi0ke2J0bi5zaGFwZX0gJHtidG4uY2xhc3NOYW1lfVwiIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dC1rZXk9XCIke2J0bi5rZXkgfHwgJyd9XCIgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0taWQ9XCIke2QuaWQgfHwgLTF9XCIgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7aXNEaXNhYmxlZCA/ICdkaXNhYmxlZCc6Jyd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUtbm9kZT1cIiR7ZC50eXBlIHx8ICcnfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkeyBidG4uZm9ybWF0dGVyID8gYnRuLmZvcm1hdHRlcihkLCBidG4pIDogJyd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPmA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICB9XG5cblxuXG4gICAgICB9KVxuICAgIH1cbiAgICAgICAgICAgYnRuTmF2TGlzdCArPSBgXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PmA7XG5cblxuXG5cbiAgICAgIGlmKGQuY2hpbGRyZW4pe1xuICAgICAgICBkLmNoaWxkcmVuLmZvckVhY2goYyA9PiB7XG5cbiAgICAgICAgICAvL2J1dHRvbnNcbiAgICAgICAgICBidG5OYXZMaXN0ICs9IGA8ZGl2IGNsYXNzPVwiYnRuLWNoaWxkLW5hdi1pdGVtIHBhcmVudCAke2QuaGlkZGVuID8gJ2hpZGUnIDonJ31cIiBjaGlsZD1cIiR7ZC5pZCB8fCAtMX1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnRuLW5hdi1pdGVtLWNvbnRlbnRcIj5gO1xuXG4gICAgICAgIGlmKGNvbmZpZy50aW1lbGluZS5uYXYubGVmdC5idXR0b25zICYmIGNvbmZpZy50aW1lbGluZS5uYXYubGVmdC5idXR0b25zLnZhcnMpe1xuICAgICAgICAgIGNvbmZpZy50aW1lbGluZS5uYXYubGVmdC5idXR0b25zLnZhcnMuZm9yRWFjaChidG4gPT4ge1xuXG5cbiAgICAgICAgICBpZihidG4uaWNvbil7XG4gICAgICAgICAgICAgIGJ0bk5hdkxpc3QgKz0gYFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4tc2hhcGUgJHtidG4uY2xhc3NOYW1lfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dC1rZXk9XCIke2J0bi5rZXkgfHwgJyd9XCIgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLWlkPVwiJHtjLmlkIHx8IC0xfVwiIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtpc0Rpc2FibGVkID8gJ2Rpc2FibGVkJzonJ31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUtbm9kZT1cIiR7Yy50eXBlIHx8ICcnfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtidG4uaWNvbiA/IGJ0bi5pY29uIDogJyd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+YDtcbiAgICAgICAgICB9XG5cblxuICAgICAgICAgIGlmKGJ0bi5pY29uRm9ybWF0dGVyKXtcbiAgICAgICAgICAgICAgYnRuTmF2TGlzdCArPSBgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0bi1zaGFwZSAke2J0bi5jbGFzc05hbWV9XCIgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dC1rZXk9XCIke2J0bi5rZXkgfHwgJyd9XCIgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLWlkPVwiJHtjLmlkIHx8IC0xfVwiIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtpc0Rpc2FibGVkID8gJ2Rpc2FibGVkJzonJ31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUtbm9kZT1cIiR7Yy50eXBlIHx8ICcnfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtidG4uaWNvbkZvcm1hdHRlciA/IGJ0bi5pY29uRm9ybWF0dGVyKGMsIGJ0bikgOiAnJ31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5gO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmKGJ0bi5zaGFwZSl7XG4gICAgICAgICAgICAgIGJ0bk5hdkxpc3QgKz0gYFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4tc2hhcGUgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidG4tJHtidG4uc2hhcGV9ICR7YnRuLmNsYXNzTmFtZX1cIiBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0LWtleT1cIiR7YnRuLmtleSB8fCAnJ31cIiBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0taWQ9XCIke2MuaWQgfHwgLTF9XCIgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2lzRGlzYWJsZWQgPyAnZGlzYWJsZWQnOicnfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZS1ub2RlPVwiJHtjLnR5cGUgfHwgJyd9XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHsgYnRuLmZvcm1hdHRlciA/IGJ0bi5mb3JtYXR0ZXIoYywgYnRuKSA6ICcnfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPmA7XG4gICAgICAgICAgfVxuXG5cblxuICAgICAgICAgIH0pXG4gICAgICAgIH1cblxuICAgICAgICAgICAgICAgYnRuTmF2TGlzdCArPSBgXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+YDtcblxuICAgICAgICB9KVxuICAgICAgfVxuXG5cblxuXG4gICAgfSk7XG5cblxuXG4gICAgbGV0IGl0ZW1EZXRhaWwgPSAgYCA8ZGl2IGNsYXNzPVwiZGV0YWlsLW5hdi1pdGVtIGhpZGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgJHsgdGhpcy5nZXREZXRhaWxOYXZJdGVtQ29udGVudCgpIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PmBcblxuXG5cbiAgICBsZXQgc3RyID0gYDxkaXYgY2xhc3M9XCJuYXYtY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgJHtpdGVtRGV0YWlsfVxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibmF2LWl0ZW0tbGlzdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICR7bmF2TGlzdH1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbml0aWFsLW5hdi1saXN0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgJHtpbml0aWFsTmF2TGlzdH1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJleHRlbmQtbmF2LWxpc3RcIj5cbiAgICAgICAgICAgICAgICAgICAgICAke2V4TmF2TGlzdH1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidG4tbmF2LWxpc3RcIj5cbiAgICAgICAgICAgICAgICAgICAgICAke2J0bk5hdkxpc3R9XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+YDtcblxuICAgIGxldCBuYXZDb250YWluZXIgPSBkb20uY3JlYXRlRWxlbWVudEZyb21IVE1MKHN0cik7XG4gICAgJGVsZW0uaW5uZXJIVE1MID0gXCJcIjtcbiAgICAkZWxlbS5hcHBlbmQobmF2Q29udGFpbmVyKTtcblxuXG5cblxuICAgIC8vZGV0YWxsZSBkZSBuYXYtaXRlbVxuICAgICRlbGVtLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuaXRlbS10aXRsZS5jbGlja2VhYmxlXCIpLmZvckVhY2goaSA9PiB7XG4gICAgICAgICBpLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZW92ZXJcIiwgZSA9PiB7XG4gICAgICAgIGxldCBwb3MgICAgICA9IHV0aWxzLmV2ZW50VG9Qb3NpdGlvbk5hdkxlZnQoY29uZmlnLCBlLCRlbGVtKTtcbiAgICAgICAgbGV0IGl0ZW1JZCAgID0gaS5nZXRBdHRyaWJ1dGUoXCJpdGVtLWlkXCIpO1xuICAgICAgICBsZXQgaXRlbSAgICAgPSB1dGlscy5nZXRJdGVtQnlJZChjb25maWcsIGl0ZW1JZCk7XG4gICAgICAgIGxldCB0eXBlTm9kZSA9IGkuZ2V0QXR0cmlidXRlKFwidHlwZS1ub2RlXCIpO1xuICAgICAgICBpLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KFwib3Zlck5hdkl0ZW1cIiwge1xuICAgICAgICAgIGJ1YmJsZXMgICAgOiB0cnVlLFxuICAgICAgICAgIGNhbmNlbGFibGUgOiBmYWxzZSxcbiAgICAgICAgICBkZXRhaWwgICAgIDoge1xuICAgICAgICAgICAgb3JpZ2luYWxFdnQgOiBlLFxuICAgICAgICAgICAgaXRlbSAgICAgICAgOiBpdGVtLFxuICAgICAgICAgICAgdHlwZSAgICAgICAgOiB0eXBlTm9kZSxcbiAgICAgICAgICAgIHBvcyAgICAgICAgIDogcG9zXG4gICAgICAgICAgfVxuICAgICAgICB9KSk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuXG5cbiAgICAvL29jdWx0YSBkZXRhbGxlIGRlIG5hdi1pdGVtLCBhbCBzYWxpciBkZWwgbmF2LWl0ZW0tbGlzdFxuICAgICRlbGVtLnF1ZXJ5U2VsZWN0b3JBbGwoXCIubmF2LWl0ZW0tbGlzdFwiKS5mb3JFYWNoKGkgPT4ge1xuICAgICAgaS5hZGRFdmVudExpc3RlbmVyKFwibW91c2VsZWF2ZVwiLCBlID0+e1xuICAgICAgICBpLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KFwibGVhdmVOYXZJdGVtXCIsIHtcbiAgICAgICAgICBidWJibGVzOiB0cnVlLFxuICAgICAgICAgIGNhbmNlbGFibGU6IGZhbHNlLFxuICAgICAgICB9KSk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIC8vb2N1bHRhIGRldGFsbGUgZGUgbmF2LWl0ZW0tbGlzdCwgYWwgc2FsaXIgZGUgbmF2LWl0ZW1cbiAgICAkZWxlbS5xdWVyeVNlbGVjdG9yQWxsKFwiLml0ZW0tdGl0bGU6bm90KC5jbGlja2VhYmxlKVwiKS5mb3JFYWNoKGkgPT4ge1xuICAgICAgaS5hZGRFdmVudExpc3RlbmVyKFwibW91c2Vtb3ZlXCIsIGUgPT57XG4gICAgICAgIGkuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoXCJsZWF2ZU5hdkl0ZW1cIiwge1xuICAgICAgICAgIGJ1YmJsZXM6IHRydWUsXG4gICAgICAgICAgY2FuY2VsYWJsZTogZmFsc2UsXG4gICAgICAgIH0pKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG5cblxuXG5cbiAgICAkZWxlbS5xdWVyeVNlbGVjdG9yQWxsKFwiLml0ZW0tdGl0bGUuY2xpY2tlYWJsZVwiKS5mb3JFYWNoKGkgPT4ge1xuICAgICAgaS5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgZSA9PntcbiAgICAgICAgbGV0IGl0ZW1JZCAgID0gaS5nZXRBdHRyaWJ1dGUoXCJpdGVtLWlkXCIpO1xuICAgICAgICBsZXQgdHlwZU5vZGUgPSBpLmdldEF0dHJpYnV0ZShcInR5cGUtbm9kZVwiKTtcbiAgICAgICAgbGV0IHZhbHVlICAgID0gaS52YWx1ZTtcbiAgICAgICAgaS5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudChcImNsaWNrTmF2TGVmdEl0ZW1cIiwge1xuICAgICAgICAgIGJ1YmJsZXM6IHRydWUsXG4gICAgICAgICAgY2FuY2VsYWJsZTogZmFsc2UsXG4gICAgICAgICAgZGV0YWlsOiB7XG4gICAgICAgICAgICBpdGVtSWQ6IGl0ZW1JZCxcbiAgICAgICAgICAgIHR5cGU6dHlwZU5vZGUsXG4gICAgICAgICAgICB2YWx1ZTogdmFsdWVcbiAgICAgICAgICB9XG4gICAgICAgIH0pKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgJGVsZW0ucXVlcnlTZWxlY3RvckFsbChcImlucHV0XCIpLmZvckVhY2goaSA9PiB7XG4gICAgICBpLmFkZEV2ZW50TGlzdGVuZXIoXCJjaGFuZ2VcIiwgZSA9PntcbiAgICAgICAgbGV0IGlucHV0VHlwZT0gaS5nZXRBdHRyaWJ1dGUoXCJpbnB1dC10eXBlXCIpO1xuICAgICAgICBsZXQga2V5ICAgICAgPSBpLmdldEF0dHJpYnV0ZShcImlucHV0LWtleVwiKTtcbiAgICAgICAgbGV0IGl0ZW1JZCAgID0gaS5nZXRBdHRyaWJ1dGUoXCJpdGVtLWlkXCIpO1xuICAgICAgICBsZXQgdHlwZU5vZGUgPSBpLmdldEF0dHJpYnV0ZShcInR5cGUtbm9kZVwiKTtcbiAgICAgICAgbGV0IGl0ZW0gICAgID0gdXRpbHMuZ2V0SXRlbUJ5SWQoY29uZmlnLCBpdGVtSWQpO1xuICAgICAgICBsZXQgdmFsdWUgICAgPSBpLnZhbHVlO1xuICAgICAgICBpZihpbnB1dFR5cGUgPT0gXCJ0aW1lXCIpe1xuICAgICAgICAgIGxldCBoaF9pbnB1dCA9IGkucGFyZW50RWxlbWVudC5xdWVyeVNlbGVjdG9yKFwiaW5wdXQuaGhcIikudmFsdWU7XG4gICAgICAgICAgbGV0IG1tX2lucHV0ID0gaS5wYXJlbnRFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXCJpbnB1dC5tbVwiKS52YWx1ZTtcbiAgICAgICAgICBtbV9pbnB1dCA9IG1tX2lucHV0IDwxMCA/IFwiMFwiKyBwYXJzZUZsb2F0KG1tX2lucHV0KSA6IG1tX2lucHV0O1xuICAgICAgICAgIGkucGFyZW50RWxlbWVudC5xdWVyeVNlbGVjdG9yKFwiaW5wdXQubW1cIikudmFsdWUgPSBtbV9pbnB1dDtcbiAgICAgICAgICB2YWx1ZSA9IGhoX2lucHV0ICtcIjpcIittbV9pbnB1dDtcbiAgICAgICAgfVxuICAgICAgICBpLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KFwic2F2ZU5hdkxlZnRJbnB1dFwiLCB7XG4gICAgICAgICAgYnViYmxlczogdHJ1ZSxcbiAgICAgICAgICBjYW5jZWxhYmxlOiBmYWxzZSxcbiAgICAgICAgICBkZXRhaWw6IHtcbiAgICAgICAgICAgIGtleSAgICA6IGtleSxcbiAgICAgICAgICAgIGl0ZW1JZCA6IGl0ZW1JZCxcbiAgICAgICAgICAgIGl0ZW0gICA6IGl0ZW0sXG4gICAgICAgICAgICB0eXBlICAgOiB0eXBlTm9kZSxcbiAgICAgICAgICAgIHZhbHVlICA6IHZhbHVlLFxuICAgICAgICAgICAgdGFiU2VsZWN0ZWQ6IHRhYlxuICAgICAgICAgIH1cbiAgICAgICAgfSkpO1xuICAgICAgfSk7XG4gICAgfSk7XG5cblxuXG4gICAgJGVsZW0ucXVlcnlTZWxlY3RvckFsbChcImJ1dHRvbi5idG4tc2hhcGVcIikuZm9yRWFjaChpID0+IHtcbiAgICAgIGkuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGUgPT57XG4gICAgICAgIGxldCBrZXkgICAgICA9IGkuZ2V0QXR0cmlidXRlKFwiaW5wdXQta2V5XCIpO1xuICAgICAgICBsZXQgaXRlbUlkICAgPSBpLmdldEF0dHJpYnV0ZShcIml0ZW0taWRcIik7XG4gICAgICAgIGxldCB0eXBlTm9kZSA9IGkuZ2V0QXR0cmlidXRlKFwidHlwZS1ub2RlXCIpO1xuICAgICAgICBpLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KFwiY2xpY2tOYXZMZWZ0QnV0dG9uXCIsIHtcbiAgICAgICAgICBidWJibGVzOiB0cnVlLFxuICAgICAgICAgIGNhbmNlbGFibGU6IGZhbHNlLFxuICAgICAgICAgIGRldGFpbDoge1xuICAgICAgICAgICAga2V5ICAgIDoga2V5LFxuICAgICAgICAgICAgaXRlbUlkIDogaXRlbUlkLFxuICAgICAgICAgICAgdHlwZSAgIDogdHlwZU5vZGUsXG4gICAgICAgICAgfVxuICAgICAgICB9KSk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuXG5cblxuXG5cbiAgICAkZWxlbS5xdWVyeVNlbGVjdG9yQWxsKFwiYnV0dG9uLnRyZWUtaWNvblwiKS5mb3JFYWNoKGkgPT4ge1xuICAgICAgaS5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgZSA9PntcblxuICAgICAgICBsZXQgaXRlbUlkICAgICAgPSBpLmdldEF0dHJpYnV0ZShcIml0ZW0taWRcIik7XG4gICAgICAgIGxldCB0eXBlTm9kZSAgICA9IGkuZ2V0QXR0cmlidXRlKFwidHlwZS1ub2RlXCIpO1xuICAgICAgICBsZXQgZGF0YUNvbmZpZyAgPSBjb25maWcuZGF0YS5maW5kKGQgPT4gZC5pZCA9PSBpdGVtSWQpO1xuXG4gICAgICAgIGxldCAkbmF2SXRlbSAgICA9IGUuY3VycmVudFRhcmdldC5jbG9zZXN0KFwiLm5hdi1pdGVtXCIpO1xuICAgICAgICBsZXQgJGNoaWxkcmVuICAgPSAkbmF2SXRlbS5xdWVyeVNlbGVjdG9yKFwiLmNoaWxkcmVuLWl0ZW1zXCIpO1xuICAgICAgICBsZXQgaXRlbXNUb0hpZGUgPSBlLmN1cnJlbnRUYXJnZXQuY2xvc2VzdChcIm5hdi5sZWZ0XCIpLnF1ZXJ5U2VsZWN0b3JBbGwoXCJbY2hpbGQ9J1wiK2l0ZW1JZCtcIiddLCBbY2hpbGQtbGlzdD0nXCIraXRlbUlkK1wiJ11cIik7XG5cbiAgICAgICAgaWYoJGNoaWxkcmVuKXtcbiAgICAgICAgICBpZigkY2hpbGRyZW4uY2xhc3NMaXN0LmNvbnRhaW5zKFwiaGlkZVwiKSl7XG4gICAgICAgICAgICBlLmN1cnJlbnRUYXJnZXQuY2xhc3NMaXN0LmFkZCgncm90YXRlJylcbiAgICAgICAgICAgIGl0ZW1zVG9IaWRlLmZvckVhY2goaSA9PiBpLmNsYXNzTGlzdC5yZW1vdmUoXCJoaWRlXCIpKTtcbiAgICAgICAgICAgIGRhdGFDb25maWcuaGlkZGVuID0gZmFsc2U7XG4gICAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICBlLmN1cnJlbnRUYXJnZXQuY2xhc3NMaXN0LnJlbW92ZSgncm90YXRlJylcbiAgICAgICAgICAgIGl0ZW1zVG9IaWRlLmZvckVhY2goaSA9PiBpLmNsYXNzTGlzdC5hZGQoXCJoaWRlXCIpKTtcbiAgICAgICAgICAgIGRhdGFDb25maWcuaGlkZGVuID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuXG4gICAgICAgIGkuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoXCJjbGlja05hdkxlZnRUcmVlSWNvblwiLCB7XG4gICAgICAgICAgYnViYmxlczogdHJ1ZSxcbiAgICAgICAgICBjYW5jZWxhYmxlOiBmYWxzZSxcbiAgICAgICAgICBkZXRhaWw6IHtcbiAgICAgICAgICAgIGl0ZW1JZDogaXRlbUlkLFxuICAgICAgICAgICAgdHlwZTp0eXBlTm9kZSxcbiAgICAgICAgICB9XG4gICAgICAgIH0pKTtcblxuICAgICAgICAvL2UuY3VycmVudFRhcmdldC5wYXJlbnRcbiAgICAgIH0pO1xuICAgIH0pO1xuXG5cblxuXG4gICAgcmV0dXJuICRlbGVtO1xuICB9LFxuXG5cblxuICAvKipcbiAgICogQ3JlYSBIdG1sIGNvbW8gU3RyaW5nLCBwYXJhIGVsIGRldGFsbGUgZGUgaXRlbXMgZW4gZWwgU2lkZWJhciBJenF1aWVyZG9cbiAgICpcbiAgICogQHBhcmFtIHtPYmplY3R9IFtpdGVtPXt9XSAtIENvbmZpZ3VyYWNpb24gZGUgaXRlbVxuICAgKiBAcmV0dXJuIHtTdHJpbmd9IEh0bWwgZGUgdmVudGFuYSBkZSBkZXRhbGxlXG4gICAqL1xuICBnZXREZXRhaWxOYXZJdGVtQ29udGVudChpdGVtID0ge30pe1xuICAgIGlmKGl0ZW0ubmF2T3ZlciA9PSB1bmRlZmluZWQpIGl0ZW0ubmF2T3ZlciA9IHt9O1xuXG4gICAgcmV0dXJuIGBcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRlci1kZXRhaWxcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGl0bGUgdHJ1bmNhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICR7aXRlbS5sYWJlbCB8fCAnJ31cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3VidGl0bGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICR7aXRlbS5uYXZPdmVyLnN1YnRpdGxlIHx8ICcnfVxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkZXItY2hpcCAke2l0ZW0ubGlnaHQgPyBpdGVtLmxpZ2h0KyctbGlnaHQnIDogJyd9ICAke2l0ZW0ubmF2T3Zlci5jaGlwID8gJycgOiAnaGlkZSd9XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAke2l0ZW0ubmF2T3Zlci5jaGlwIHx8ICcnfVxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGV0YWlsLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgICAgICR7aXRlbS5uYXZPdmVyLmNvbnRlbnQgfHwgJyd9XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PmA7XG4gIH0sXG5cblxuXG4gIC8qKlxuICAgKiBDcmVhIFNpZGViYXIgRGVyZWNob1xuICAgKiBVc2FkbyBwcmluY2lwYWxtZW50ZSBwYXJhIGZvcm11bGFyaW8gZGUgaW5ncmVzbyBkZSBkYXRvcyBwYXJhIGxvcyBkaWFzXG4gICAqIHNlbGVjY2lvbmFkb3NcbiAgICpcbiAgICogQHBhcmFtIHtPYmplY3R9IGNvbmZpZyAtIENvbmZpZ3VyYWNpb24gY2FwaWJhcmFcbiAgICogQHBhcmFtIHtPYmplY3R9IHRhYiAtIFRhYiBkZSByZWZlcmVuY2lhLCBwYXJhIGxhIGNyZWFjaW9uIGRlbCBmb3JtdWxhcmlvXG4gICAqIEByZXR1cm4ge09iamVjdH0ge2VsZW1lbnQsIGlucHV0c30sIGVsZW1lbnQgZXMgZWwgZWxlbWVudG8gRG9tIGRlbCBzaWRlYmFyLFxuICAgKiAgICAgICAgICAgICAgICAgIGlucHV0cyBlcyB1biBhcnJheSBkZSBlbGVtZW50b3MgRG9tIGRlIGNhZGEgaW5wdXQgY3JlYWRvXG4gICAqICAgICAgICAgICAgICAgICAgKG5vIHNvbiBlbGVtZW50b3MgaHRtbCBkZSB0aXBvIGlucHV0KVxuICAgKi9cbiAgY3JlYXRlTmF2UmlnaHQoY29uZmlnLCB0YWIgPSBudWxsKXtcbiAgICB2YXIgJGVsZW0gPSBkb20uY3JlYXRlRWxlbWVudChcIm5hdlwiLHtjbGFzc05hbWU6XCJyaWdodFwifSk7XG4gICAgcmV0dXJuIHRoaXMucmVkcmF3TmF2UmlnaHQoY29uZmlnLCAkZWxlbSwgdGFiKTtcbiAgfSxcblxuICAvKipcbiAgICogUmVjcmVhIFNpZGViYXIgRGVyZWNob1xuICAgKiBVdGlsaXphICRlbGVtIGNvbW8gZWxlbWVudG8gZG9tIGRvbmRlIHJlY3JlYXJsb1xuICAgKlxuICAgKiBAcGFyYW0ge09iamVjdH0gY29uZmlnIC0gQ29uZmlndXJhY2lvbiBjYXBpYmFyYVxuICAgKiBAcGFyYW0ge09iamVjdH0gJGVsZW0gLSBFbGVtZW50byBEb20gZG9uZGUgY3JlYSBlbCBzaWRlYmFyIGRlcmVjaG9cbiAgICogQHBhcmFtIHtPYmplY3R9IHRhYiAtIFRhYiBkZSByZWZlcmVuY2lhLCBwYXJhIGxhIGNyZWFjaW9uIGRlbCBmb3JtdWxhcmlvXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBkYXRhRGF5IC0gZGF0b3MgZGVsIGRpYSBzZWxlY2Npb25hbmRvLCBwYXJhIGF1dG9ycmVsbGVubyBkZSBmb3JtdWxhcmlvXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBkYXlTZWxlY3RlZCAtIGRhdG9zIGRlbCBkaWEgc2VsZWNjaW9uYWRvXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBkYXlTZWxlY3RlZC5kYXRlIC0gZmVjaGEgZGVsIGRpYSBzZWxlY2Npb25hZG9cbiAgICogQHBhcmFtIHtPYmplY3R9IGRheVNlbGVjdGVkLml0ZW0gLSBJdGVtIGRlIFNpZGViYXIgcmVsYWNpb25hZG8gYWwgZGlhIHNlbGVjY2lvbmFkb1xuICAgKiBAcGFyYW0ge09iamVjdH0gZGF5U2VsZWN0ZWQucG9zIC0gcG9zaWNpb24gZGUgZGlhIHNlbGVjY2lvbmFkb1xuICAgKiBAcmV0dXJuIHtPYmplY3R9IEVsZW1lbnRvIERvbSBTaWRlYmFyIERlcmVjaG9cbiAgICovXG4gIHJlZHJhd05hdlJpZ2h0KGNvbmZpZywgJGVsZW0sIHRhYiA9IG51bGwsIGRhdGFEYXkgPSBudWxsLCBkYXlTZWxlY3RlZCA9IG51bGwpe1xuICAgIGxldCAkbmF2UmlnaHQgICAgICA9ICRlbGVtOyAvL2RvbS5jcmVhdGVFbGVtZW50KFwibmF2XCIse2NsYXNzTmFtZTpcInJpZ2h0XCJ9KTtcbiAgICBsZXQgJGRpdkNvbnRhaW5lciAgPSBkb20uY3JlYXRlRWxlbWVudChcImRpdlwiLHtjbGFzc05hbWU6XCJuYXYtaW5wdXQtY29udGFpbmVyXCJ9KTtcbiAgICBsZXQgJGlucHV0cyAgICAgICAgPSBbXTtcbiAgICBsZXQgY2hlY2tib3hJbnB1dHMgPSBbXTtcbiAgICBsZXQgdGFiU2VsZWN0ZWQgICAgPSB0YWI7XG5cbiAgICBpZih0YWJTZWxlY3RlZCAmJiB0YWJTZWxlY3RlZC5pbnB1dHMpe1xuICAgICAgdGFiU2VsZWN0ZWQuaW5wdXRzLmZvckVhY2goaSA9PiB7XG4gICAgICAgIGlmKGkuZGlzYWJsZWQpIHJldHVybjtcblxuICAgICAgICBsZXQgJGlucHV0ID0gdGhpcy5jcmVhdGVJbnB1dChpLCBkYXRhRGF5LCBkYXlTZWxlY3RlZCk7XG4gICAgICAgIGlmKCRpbnB1dCl7XG4gICAgICAgICAgJGRpdkNvbnRhaW5lci5hcHBlbmRDaGlsZCgkaW5wdXQpO1xuICAgICAgICAgICRpbnB1dHMucHVzaCgkaW5wdXQpO1xuXG4gICAgICAgICAgaWYoaS50eXBlID09IFwiY2hlY2tib3hcIil7XG4gICAgICAgICAgICBjaGVja2JveElucHV0cy5wdXNoKCRpbnB1dCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vbWFuZWpvIGRlIGV2ZW50b3MgcGFyYSBpbnB1dHMgY29uIHNob3dJZlxuICAgIGlmKGNoZWNrYm94SW5wdXRzKXtcbiAgICAgIGNoZWNrYm94SW5wdXRzLmZvckVhY2goJGMgPT4ge1xuICAgICAgICAvL29idGllbmUga2V5IGRlIGNoZWNrYm94XG4gICAgICAgIGxldCBrZXkgPSAkYy5nZXRBdHRyaWJ1dGUoJ2lucHV0LWtleScpO1xuICAgICAgICBsZXQgcHJvcHMgPSB0YWJTZWxlY3RlZC5pbnB1dHMuZmluZChpID0+IHsgcmV0dXJuIGkua2V5ID09IGtleX0pO1xuXG4gICAgICAgIGxldCBpc0NoZWNrZWQgPSBmYWxzZTtcbiAgICAgICAgaWYoZGF0YURheSl7XG4gICAgICAgICAgaXNDaGVja2VkID0gdXRpbHMuZ2V0VmFyQnlQYXRoKGRhdGFEYXksIHByb3BzLnZhck5hbWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy9vYnRpZW5lIGlucHV0cyByZWxhY2lvbmFkb3MgZGVzZGUgY29uZmlnIHBhcmEgbW9zdHJhci9vY3VsdGFyXG4gICAgICAgIGxldCBpbnB1dHNUb0hpZGUgPSB0YWJTZWxlY3RlZC5pbnB1dHMuZmlsdGVyKGkgPT4geyByZXR1cm4gaS5zaG93SWYgJiYgaS5zaG93SWYgPT0ga2V5fSk7XG4gICAgICAgIGxldCBpbnB1dHNUb0hpZGVLZXlzID0gaW5wdXRzVG9IaWRlLm1hcChpID0+IGkua2V5KTtcblxuICAgICAgICAvL29idGllbmUgaW5wdXRzIGRlbCBkb20sIGZpbHRyYW5kbyBjb24gaW5wdXRzVG9IaWRlXG4gICAgICAgIGxldCAkaW5wdXRzSGlkZGVuID0gJGlucHV0cy5maWx0ZXIoJGkgPT4ge1xuICAgICAgICAgIGxldCBpbnB1dEtleSA9ICRpLmdldEF0dHJpYnV0ZShcImlucHV0LWtleVwiKTtcbiAgICAgICAgICByZXR1cm4gaW5wdXRzVG9IaWRlS2V5cy5pbmRleE9mKGlucHV0S2V5KSA+IC0xO1xuICAgICAgICB9KTtcblxuICAgICAgICAvL3NpIGhheSBpbnB1dHMsXG4gICAgICAgIGlmKCRpbnB1dHNIaWRkZW4pe1xuICAgICAgICAgIGlmKCFpc0NoZWNrZWQpe1xuICAgICAgICAgICAgJGlucHV0c0hpZGRlbi5mb3JFYWNoKCRpID0+IHtcbiAgICAgICAgICAgICAgJGkuY2xhc3NMaXN0LmFkZChcImhpZGVcIik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgJGMuYWRkRXZlbnRMaXN0ZW5lcihcImlucHV0XCIsIGUgPT4ge1xuICAgICAgICAgICAgJGlucHV0c0hpZGRlbi5mb3JFYWNoKCRpID0+IHtcbiAgICAgICAgICAgICAgbGV0IGZuID0gJGMucXVlcnlTZWxlY3RvcihcImlucHV0W3R5cGU9J2NoZWNrYm94J11cIikuY2hlY2tlZCA/IFwicmVtb3ZlXCIgOiBcImFkZFwiO1xuICAgICAgICAgICAgICAkaS5jbGFzc0xpc3RbZm5dKFwiaGlkZVwiKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAkZGl2Q29udGFpbmVyLmFwcGVuZENoaWxkKHRoaXMuY3JlYXRlTmF2UmlnaHRidXR0b25zKCkpOyAvLyBzYXZlIGNhbmNlbCBidXR0b25zXG4gICAgJG5hdlJpZ2h0LmlubmVySFRNTCA9IFwiXCI7XG4gICAgJG5hdlJpZ2h0LmFwcGVuZENoaWxkKCRkaXZDb250YWluZXIpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGVsZW1lbnQ6ICRuYXZSaWdodCxcbiAgICAgIGlucHV0czogJGlucHV0c1xuICAgIH1cblxuICB9LFxuXG5cblxuICAvKipcbiAgICogQ3JlYSBDb3JuZXIgaW5mZXJpb3IgaXpxdWllcmRvLCBjb21vIHRpdHVsbyBwYXJhIGZvb3RlclxuICAgKlxuICAgKiBAcGFyYW0ge09iamVjdH0gY29uZmlnIC0gQ29uZmlndXJhY2lvbiBjYXBpYmFyYVxuICAgKiBAcmV0dXJuIHtPYmplY3R9IEVsZW1lbnRvIERvbSBDb3JuZXIgRm9vdGVyXG4gICAqL1xuICBjcmVhdGVDb3JuZXJGb290ZXIoY29uZmlnKXtcbiAgICBpZihjb25maWcudGltZWxpbmUuZm9vdGVyID09PSB1bmRlZmluZWQgfHwgY29uZmlnLnRpbWVsaW5lLmZvb3Rlci5lbmFibGVkID09IGZhbHNlKSByZXR1cm4gbnVsbDtcbiAgICBsZXQgc3RyID0gJyc7XG5cbiAgICBpZihjb25maWcudGltZWxpbmUuZm9vdGVyKXtcbiAgICAgIHN0ciArPSBgPGRpdiBjbGFzcz1cImNvcm5lci1mb290ZXJcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29ybmVyLXRpdGxlXCI+XG4gICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgJHtjb25maWcudGltZWxpbmUuZm9vdGVyLmxhYmVsfVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5gXG4gICAgfVxuICAgIHJldHVybiBkb20uY3JlYXRlRWxlbWVudEZyb21IVE1MKHN0cik7XG4gIH0sXG5cblxuICAvKipcbiAgICogQ3JlYSBGb290ZXIgcGFyYSBwbGFuaWxsYVxuICAgKiBJbmljaWFsbWVudGUgY3JlYWRvIHBhcmEgdG90YWxlc1xuICAgKlxuICAgKiBAcGFyYW0ge09iamVjdH0gY29uZmlnIC0gQ29uZmlndXJhY2lvbiBjYXBpYmFyYVxuICAgKiBAcmV0dXJuIHtPYmplY3R9IEVsZW1lbnRvIERvbSBDb3JuZXIgRm9vdGVyXG4gICAqL1xuICBjcmVhdGVGb290ZXIoY29uZmlnKXtcbiAgICBpZihjb25maWcudGltZWxpbmUuZm9vdGVyID09PSB1bmRlZmluZWQgfHwgY29uZmlnLnRpbWVsaW5lLmZvb3Rlci5lbmFibGVkID09IGZhbHNlKSByZXR1cm4gbnVsbDtcblxuICAgIGxldCBzdHIgPSBgXG4gICAgICAgIDxmb290ZXI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZvb3Rlci1jb250YWluZXJcIj5cbiAgICAgICAgICBgO1xuICAgIGNvbmZpZy50aW1lbGluZS5mb290ZXIuZGF0YS5mb3JFYWNoKGQgPT4ge1xuICAgICAgc3RyICs9IGBcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvb3Rlci1pdGVtXCI+JHtkLnZhbHVlfTwvZGl2PlxuICAgICAgICAgICAgYDtcbiAgICB9KVxuICAgIHN0ciArPSBgXG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZm9vdGVyPlxuICAgICAgICBgO1xuXG4gICAgcmV0dXJuIGRvbS5jcmVhdGVFbGVtZW50RnJvbUhUTUwoc3RyKTtcbiAgfSxcblxuXG4gIC8qKlxuICAgKiBDcmVhIEZvb3RlciBwYXJhIHBsYW5pbGxhXG4gICAqIEluaWNpYWxtZW50ZSBjcmVhZG8gcGFyYSB0b3RhbGVzXG4gICAqXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBjb25maWcgLSBDb25maWd1cmFjaW9uIGNhcGliYXJhXG4gICAqIEBwYXJhbSB7T2JqZWN0W119IHNlbGVjdGVkIC0gYXJyYXkgZGUgb2JqZXRvcywgZGUgZGlhcyBzZWxlY2Npb25hZG9zXG4gICAqIEByZXR1cm4ge09iamVjdH0gRWxlbWVudG8gRG9tIENvcm5lciBGb290ZXJcbiAgICovXG4gIGNyZWF0ZVNlbGVjdEJvYXJkKGNvbmZpZywgc2VsZWN0ZWQpe1xuICAgIGxldCAkZWxlbSA9IGRvbS5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHtjbGFzc05hbWU6IFwic2VsZWN0LWNvbnRhaW5lclwifSk7XG4gICAgcmV0dXJuIHRoaXMucmVkcmF3U2VsZWN0Qm9hcmQoJGVsZW0sIHNlbGVjdGVkKTtcbiAgfSxcblxuXG5cbiAgLyoqXG4gICAqIENyZWEgbGluZWEgdmVydGljYWwgcGFyYSBmZWNoYSBBY3R1YWxcbiAgICpcbiAgICogQHBhcmFtIHtPYmplY3R9IGNvbmZpZyAtIENvbmZpZ3VyYWNpb24gY2FwaWJhcmFcbiAgICogQHJldHVybiB7T2JqZWN0fSBFbGVtZW50byBEb20gQ29ybmVyIEZvb3RlclxuICAgKi9cbiAgY3JlYXRlVG9kYXlMaW5lKGNvbmZpZyl7XG4gICAgcmV0dXJuIHRoaXMucmVkcmF3VG9kYXlMaW5lKGNvbmZpZywgZG9tLmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwge2NsYXNzTmFtZTpcInRvZGF5LWxpbmVcIn0pKTtcbiAgfSxcblxuXG5cbiAgLyoqXG4gICAqIFJlY3JlYSBsaW5lYSB2ZXJ0aWNhbCBwYXJhIGZlY2hhIEFjdHVhbFxuICAgKiBzaSBlbCBlbGVtZW50byAkZWxlbSBubyBlcyBlbnZpYWRvLCBzZSBjcmVhIHVuIG51ZXZvIGVsZW1lbnRvXG4gICAqXG4gICAqIFNpIGVsIGRpYSBhY3R1YWwgbm8gZXN0YSBkZW50cm8gZGVsIHJhbmdvIGRlIGZlY2hhcyBkZWwgY29uZmlnLFxuICAgKiBkZXNoYWJpbGl0YSBsYSBsaW5lYSBjb24gbGEgY2xhc2UgY3NzIC5kaXNhYmxlLWxpbmVcbiAgICpcbiAgICogQHBhcmFtIHtPYmplY3R9IGNvbmZpZyAtIENvbmZpZ3VyYWNpb24gY2FwaWJhcmFcbiAgICogQHBhcmFtIHtPYmplY3R9IFskZWxlbT1udWxsXSAtIEVsZW1lbnRvIERvbSBkb25kZSByZWNyZWEgbGEgbGluZWEsIHNpIGVzIG51bGwsIGxhIGNyZWFcbiAgICogQHJldHVybiB7T2JqZWN0fSBFbGVtZW50byBEb20gQ29ybmVyIEZvb3RlclxuICAgKi9cbiAgcmVkcmF3VG9kYXlMaW5lKGNvbmZpZywgJGVsZW0gPSBudWxsKXtcbiAgICBsZXQgZW5kVGltZSAgID0gbmV3IERhdGUoY29uZmlnLnRpbWVsaW5lLmVuZCkuZ2V0VGltZSgpO1xuICAgIGxldCB0b2RheVRpbWUgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcblxuICAgIGlmKCRlbGVtID09IG51bGwpICRlbGVtID0gZG9tLmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwge2NsYXNzTmFtZTpcInRvZGF5LWxpbmVcIn0pO1xuXG4gICAgaWYoZW5kVGltZSA8IHRvZGF5VGltZSkge1xuICAgICAgJGVsZW0uY2xhc3NMaXN0LmFkZChcImRpc2FibGUtbGluZVwiKVxuICAgIH1lbHNle1xuICAgICAgJGVsZW0uY2xhc3NMaXN0LnJlbW92ZShcImRpc2FibGUtbGluZVwiKVxuICAgIH1cblxuICAgIGxldCBkaWZmRGF5cyAgPSBNYXRoLmZsb29yKCBkYXRlVXRpbHMuZGlmZkRheXMoY29uZmlnLnRpbWVsaW5lLnN0YXJ0LCBkYXRlVXRpbHMuZm9ybWF0RGF0ZShuZXcgRGF0ZSgpKSApKTtcbiAgICBsZXQgZGF5V2lkdGggPSBwYXJzZUZsb2F0KHV0aWxzLmdldENTU1ZhcmlhYmxlKGNvbmZpZywgXCItLWRheS13aWR0aFwiKSk7XG4gICAgbGV0IGRpZmYgICAgICA9IGRpZmZEYXlzICogZGF5V2lkdGg7XG4gICAgZGlmZiAgICAgICAgICs9IChkYXlXaWR0aCAvIDIpIC0gMjsgLy8gcGFyYSBjZW50cmFyIGxpbmVhXG4gICAgT2JqZWN0LmFzc2lnbigkZWxlbS5zdHlsZSx7J21hcmdpbi1sZWZ0JzogZGlmZitcInB4XCJ9KTtcbiAgICByZXR1cm4gJGVsZW07XG4gIH0sXG5cblxuXG4gIC8qKlxuICAgKiBDcmVhIGVsZW1lbnRvIEZsb2F0Qm94LCBxdWUgY29udGllbmUgbG9zIGRhdG9zIHF1ZSBzZSBtdWVzdHJhIGVuIGxhIHRhYmxhXG4gICAqXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBjb25maWcgLSBDb25maWd1cmFjaW9uIGNhcGliYXJhXG4gICAqIEBwYXJhbSB7T2JqZWN0fSB0YWIgLSBUYWIgZGUgcmVmZXJlbmNpYSwgcGFyYSBtb3N0cmFyIGRhdG9zIGNvbmZpZ3VyYWRvcyBwb3IgdGFiXG4gICAqIEByZXR1cm4ge09iamVjdH0gRWxlbWVudG8gRG9tIENvcm5lciBGb290ZXJcbiAgICovXG4gIGNyZWF0ZUZsb2F0Qm94KGNvbmZpZywgdGFiKXtcbiAgICBsZXQgJGNvbnRhaW5lciA9IGRvbS5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHtjbGFzc05hbWU6IFwiZmxvYXQtYm94LWNvbnRhaW5lclwifSk7XG4gICAgcmV0dXJuIHRoaXMucmVkcmF3RmxvYXRCb3goY29uZmlnLCB0YWIsICRjb250YWluZXIpO1xuICB9LFxuXG5cbiAgLyoqXG4gICAqIFJlY3JlYSBlbGVtZW50byBGbG9hdEJveCwgcXVlIGNvbnRpZW5lIGxvcyBkYXRvcyBxdWUgc2UgbXVlc3RyYSBlbiBsYSB0YWJsYVxuICAgKiBTZSB1c2EgcHJpbmNpcGFsbWVudGUgcGFyYSBtb3N0cmFyIGRhdG9zIGVuIGxhIHRhYmxhIGRlIGxhIHBsYW5pbGxhXG4gICAqIGxvcyBtdWVzdHJhIGRlIG1hbmVyYSBmbG90YW50ZSwgY2FsY3VsYW5kbyBlbCBUb3AgeSBlbCBMZWZ0IHNlZ3VuIGxhIHBvc2Npb25cbiAgICpcbiAgICogU2UgY29uc2lkZXJhbiBsb3MgZWxlbWVudG9zIHBhZHJlcyBvY3VsdG9zLCBwYXJhIG9jdWx0YXIgbG9zIGRhdG9zXG4gICAqXG4gICAqIFNlIGluc2VydGFuIGxvcyBlbGVtZW50b3MgRmxvYXRCb3gsIGNvbW8gZWxlbWVudG8gY29uIGRhdG9zIGRlIHVuIGl0ZW0geSBkaWEgZXNwZWNpZmljb1xuICAgKlxuICAgKlxuICAgKiBAcGFyYW0ge09iamVjdH0gY29uZmlnIC0gQ29uZmlndXJhY2lvbiBjYXBpYmFyYVxuICAgKiBAcGFyYW0ge09iamVjdH0gdGFiIC0gVGFiIGRlIHJlZmVyZW5jaWEsIHBhcmEgbW9zdHJhciBkYXRvcyBjb25maWd1cmFkb3MgcG9yIHRhYlxuICAgKiBAcmV0dXJuIHtPYmplY3R9IEVsZW1lbnRvIERvbSBDb3JuZXIgRm9vdGVyXG4gICAqL1xuICByZWRyYXdGbG9hdEJveChjb25maWcsIHRhYiwgJGNvbnRhaW5lcil7XG5cbiAgICAkY29udGFpbmVyLmlubmVySFRNTCA9IFwiXCI7XG4gICAgbGV0IHRhYlNlbGVjdGVkICAgICAgPSB0YWIgfHwgbnVsbDtcblxuICAgIGNvbmZpZy5kYXRhLmZvckVhY2goZGUgPT4ge1xuICAgICAgLy9wYXJlbnQgRGF0YVxuICAgICAgZGUuY2hpbGRyZW4uZm9yRWFjaChkcyA9PiB7XG4gICAgICAgIGRzLmRhdGEuZm9yRWFjaChkYXRhID0+IHtcblxuICAgICAgICAgIGlmKCghZGF0YS5tZXNzYWdlIHx8IGRhdGEubWVzc2FnZS52YWx1ZSA9PSBudWxsKSAmJiBPYmplY3QuZW50cmllcyhkYXRhLnZhbHVlcykubGVuZ3RoID09PSAwICkgcmV0dXJuO1xuXG4gICAgICAgICAgLy9jaGlsZHJlbiBEYXRhXG4gICAgICAgICAgbGV0IHBvc2l0aW9uID0gdGhpcy5nZXRQb3NpdGlvbkZsb2F0Qm94KGNvbmZpZywgZGF0YSwgZHMpO1xuXG4gICAgICAgICAgbGV0IGNsYXNzTmFtZSA9ICcnO1xuICAgICAgICAgIGlmKCBkYXRhLm1lc3NhZ2UgJiYgZGF0YS5tZXNzYWdlLnZhbHVlKXtcbiAgICAgICAgICAgIGNsYXNzTmFtZSArPSAnaGFzLW1lc3NhZ2UgJztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiggZGF0YS5lcnJvcnMgJiYgZGF0YS5lcnJvcnMubGVuZ3RoID4gMCl7XG4gICAgICAgICAgICBjbGFzc05hbWUgKz0gJ2hhcy1lcnJvcnMgJztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiggZGUuaGlkZGVuICl7XG4gICAgICAgICAgICBjbGFzc05hbWUgKz0gJ2hpZGUgJztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBsZXQgc3RyID0gYFxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbG9hdC1ib3ggJHtjbGFzc05hbWV9ICR7ZGUuaGlkZGVuPydoaWRlJzonJ31cIlxuICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCIke3Bvc2l0aW9uPyBwb3NpdGlvbjogJyd9XCJcbiAgICAgICAgICAgICAgICAgICAgIGl0ZW0taWQ9XCIke2RzLmlkIHx8IC0xfVwiXG4gICAgICAgICAgICAgICAgICAgICB0eXBlLW5vZGU9XCIke2RzLnR5cGUgfHwgJyd9XCI+IGA7XG5cblxuICAgICAgICAgICAgICAgIGlmKHRhYlNlbGVjdGVkICYmIHRhYlNlbGVjdGVkLmZsb2F0Qm94KXtcblxuICAgICAgICAgICAgICAgICAgLy9udW1lcm9zIGVuIGVsIGZsb2F0Qm94XG4gICAgICAgICAgICAgICAgICBpZih0YWJTZWxlY3RlZC5mbG9hdEJveC5udW1zKXtcbiAgICAgICAgICAgICAgICAgICAgdGFiU2VsZWN0ZWQuZmxvYXRCb3gubnVtcy5mb3JFYWNoKG4gPT4ge1xuXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IGRhdGFGbG9hdEJveCA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgbGV0IGNsYXNzTmFtZSA9IFwiXCI7XG5cbiAgICAgICAgICAgICAgICAgICAgICBpZihuLnZhck5hbWUpe1xuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUZsb2F0Qm94ID0gdXRpbHMuZ2V0VmFyQnlQYXRoKGRhdGEudmFsdWVzLCBuLnZhck5hbWUpO1xuICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgIGxldCBzaG93SWYgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgIGlmKG4udmFyU2hvdyl7XG4gICAgICAgICAgICAgICAgICAgICAgICBzaG93SWYgPSBCb29sZWFuKCB1dGlscy5nZXRWYXJCeVBhdGgoZGF0YS52YWx1ZXMsIG4udmFyU2hvdykgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFGbG9hdEJveCA9IGRhdGFGbG9hdEJveCB8fCBcIlwiO1xuICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgIGxldCBoaWRlSWYgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICBpZihuLnZhckhpZGUpe1xuICAgICAgICAgICAgICAgICAgICAgICAgaGlkZUlmID0gQm9vbGVhbiggdXRpbHMuZ2V0VmFyQnlQYXRoKGRhdGEudmFsdWVzLCBuLnZhckhpZGUpICk7XG4gICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgaWYobi5zaGFwZSl7XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWUgKz0gXCJzaGFwZS1cIituLnNoYXBlO1xuICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgIGlmKGRhdGFGbG9hdEJveCAhPT0gbnVsbCAmJiBzaG93SWYgJiYgIWhpZGVJZil7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdHIgKz1gPHNwYW4gY2xhc3M9XCJkYXRhICR7bi5jb2xvcn0gJHtjbGFzc05hbWV9XCI+JHsgZGF0YUZsb2F0Qm94IH08L3NwYW4+YDtcbiAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgLy9wdW50b3MgZW4gZWwgZmxvYXRCb3hcbiAgICAgICAgICAgICAgICAgIGlmKHRhYlNlbGVjdGVkLmZsb2F0Qm94LmRvdHMpe1xuICAgICAgICAgICAgICAgICAgICBzdHIgKz1gXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRvdC1jb250YWluZXItbWlkZGxlXCI+YDtcbiAgICAgICAgICAgICAgICAgICAgdGFiU2VsZWN0ZWQuZmxvYXRCb3guZG90cy5mb3JFYWNoKG4gPT4ge1xuXG4gICAgICAgICAgICAgICAgICAgICAgaWYodXRpbHMuZ2V0VmFyQnlQYXRoKGRhdGEudmFsdWVzLCBuLnZhck5hbWUpICE9PSBudWxsKXtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0ciArPWBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZG90ICR7bi5jb2xvcn0gJHtuLnNoYXBlIHx8ICcnfVwiPjwvZGl2PmA7XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICBzdHIgKz0gYFxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+YDtcbiAgICAgICAgICAgICAgICAgIH1cblxuXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBzdHIgKz0gYFxuICAgICAgICAgICAgICAgIDwvZGl2PmA7XG5cblxuICAgICAgICAgICAgICAgIGxldCAkZWxlbSA9IGRvbS5jcmVhdGVFbGVtZW50RnJvbUhUTUwoc3RyKTtcblxuICAgICAgICAgICAgICAgICRlbGVtLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZW92ZXJcIiwgZSA9PiB7XG4gICAgICAgICAgICAgICAgICAkZWxlbS5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudChcIm1vdXNlT3ZlckZsb2F0Qm94XCIsIHtcbiAgICAgICAgICAgICAgICAgICAgYnViYmxlczogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgY2FuY2VsYWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIGRldGFpbDoge1xuICAgICAgICAgICAgICAgICAgICAgIGl0ZW0gOiBkcyxcbiAgICAgICAgICAgICAgICAgICAgICBkYXRhOiBkYXRhLFxuICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbmFsRXZ0IDogZVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAkZWxlbS5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgZSA9PiB7XG4gICAgICAgICAgICAgICAgICAkZWxlbS5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudChcImNsaWNrRmxvYXRCb3hcIiwge1xuICAgICAgICAgICAgICAgICAgICBidWJibGVzOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBjYW5jZWxhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgZGV0YWlsOiB7XG4gICAgICAgICAgICAgICAgICAgICAgaXRlbSAgICAgICAgOiBkcyxcbiAgICAgICAgICAgICAgICAgICAgICBkYXRhICAgICAgICA6IGRhdGEsXG4gICAgICAgICAgICAgICAgICAgICAgb3JpZ2luYWxFdnQgOiBlXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICB9KTtcblxuXG4gICAgICAgICAgICAgICRjb250YWluZXIuYXBwZW5kQ2hpbGQoJGVsZW0pO1xuXG5cbiAgICAgICAgfSk7XG4gICAgICB9KVxuICAgIH0pXG5cbiAgICByZXR1cm4gJGNvbnRhaW5lcjtcbiAgfSxcblxuXG5cblxuICAvKipcbiAgICogQ3JlYSBEZXRhaWxEYXksIGRldGFsbGUgZGUgdmFsb3JlcyBkZSBpdGVtIHkgRGlhXG4gICAqIHNlIHVzYSBwYXJhOlxuICAgKiAgICAtIE11ZXN0cmEgbm9tYnJlIGRlIGl0ZW0geSBkZXRhbGxlc1xuICAgKiAgICAtIE11ZXN0cmEgY2Fwc3VsYXMgZGUgZGF0b3NcbiAgICogICAgLSBNdWVzdHJhIFBpbGxzLCBwaWxkb3JhcyBkZSBkYXRvcyByZXN1bWlkb3NcbiAgICogICAgLSBNdWVzdHJhIGFsZXJ0YXNcbiAgICogICAgLSBNdWVzdHJhIE1lbnNhamVcbiAgICpcbiAgICogQHBhcmFtIHtPYmplY3R9IGNvbmZpZyAtIENvbmZpZ3VyYWNpb24gY2FwaWJhcmFcbiAgICogQHBhcmFtIHtPYmplY3R9IGl0ZW0gLSBJdGVtIHJlbGFjaW9uYWRvXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBkYXRhRGF5IC0gdmFsb3JlcyBkZSBpdGVtIHkgRGlhXG4gICAqIEBwYXJhbSB7Qm9vbGVhbn0gW29ubHlTdHJpbmdDb250ZW50ID0gZmFsc2VdIC0gcGFyYSBlc2NvZ2VyIHNpIGRldnVlbHZlIFN0cmluZyBvIERvbUVsZW1lbnRcbiAgICogQHJldHVybiB7U3RyaW5nfE9iamVjdH0gRWxlbWVudG8gY29tbyBTdHJpbmcgbyBEb21FbGVtZW50XG4gICAqL1xuICBjcmVhdGVEZXRhaWxEYXkoY29uZmlnLCBpdGVtLCBkYXRhRGF5LCBvbmx5U3RyaW5nQ29udGVudCA9IGZhbHNlKXtcblxuICAgIGxldCBzdHIgPSBgXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRlci1kZXRhaWxcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZSB0cnVuY2F0ZVwiPlxuICAgICAgICAgICAgICAkeyBpdGVtLmxhYmVsIHx8ICcnIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1YnRpdGxlXCI+XG4gICAgICAgICAgICAgICR7IGRhdGFEYXkgPyBkYXRlVXRpbHMuZm9ybWF0RGF0ZVJlYWRlYWJsZShkYXRhRGF5LmRhdGUpIDogJycgfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibGlzdC1kZXRhaWwgbGlzdFwiPmBcblxuXG5cbiAgICAvL0NBUFNVTEVTXG4gICAgaWYoZGF0YURheSl7XG4gICAgICBjb25maWcudGltZWxpbmUuZGV0YWlsRGF5LmNhcHN1bGVzLmZvckVhY2goY2FwID0+IHtcbiAgICAgICAgLy9wYXJhIGNvbXByb2JhciBzaSB0aWVuZSBkYXRvcywgc2Ugb2J0aWVuZSBlbCBwcmltZXIgdmFsb3JcbiAgICAgICAgLy9kZSBsYSBsaXN0YSBkZSB2YWx1ZXMgZGUgdW5hIGNhcHN1bGFcbiAgICAgICAgbGV0IGhhc1ZhbHVlcyA9IGNhcC52YWx1ZXMuZmlsdGVyKHYgPT4gdXRpbHMuZ2V0VmFyQnlQYXRoKGRhdGFEYXkudmFsdWVzLCB2LnZhck5hbWUpKS5sZW5ndGggPiAwO1xuICAgICAgICBsZXQgaGlkZUlmID0gZmFsc2U7XG5cbiAgICAgICAgaWYoY2FwLmhpZGVJZil7XG4gICAgICAgICAgaGlkZUlmID0gQm9vbGVhbih1dGlscy5nZXRWYXJCeVBhdGgoZGF0YURheS52YWx1ZXMsIGNhcC5oaWRlSWYpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmKGhhc1ZhbHVlcyAmJiAhaGlkZUlmKXtcbiAgICAgICAgICBzdHIgKz0gYFxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaXRlbS1kZXRhaWwgJHtjYXAuY29sb3IgfHwgJyd9XCI+XG5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGVmdC1pY29uICR7Y2FwLnNoYXBlIHx8ICcnfSBcIj48L2Rpdj5cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJuYW1lXCI+XG4gICAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgJHtjYXAudGl0bGUgfHwgJyd9XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+YDtcblxuICAgICAgICAgIHN0ciArPSBgXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIml0ZW0tZGVzY3JpcHRpb25cIj4gYDtcblxuXG4gICAgICAgICAgY2FwLnZhbHVlcy5mb3JFYWNoKHYgPT4ge1xuICAgICAgICAgICAgbGV0IHZhbHVlID0gdXRpbHMuZ2V0VmFyQnlQYXRoKGRhdGFEYXkudmFsdWVzLCB2LnZhck5hbWUpO1xuICAgICAgICAgICAgaWYoY2FwLmlzTGFiZWxlZEFycmF5KXtcbiAgICAgICAgICAgICAgdmFsdWUuZm9yRWFjaCh2YWx1ZUxhYmVsZWQgPT4ge1xuXG4gICAgICAgICAgICAgICAgbGV0IG91dHB1dFZhbHVlID0gbnVsbDtcbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICBpZih2YWx1ZUxhYmVsZWQudmFsdWUpe1xuICAgICAgICAgICAgICAgICAgb3V0cHV0VmFsdWUgPSB2LnJvdW5kID8gdXRpbHMucm91bmQodmFsdWVMYWJlbGVkLnZhbHVlLCB2LnJvdW5kKSA6IHZhbHVlTGFiZWxlZC52YWx1ZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZih2LmZvcm1hdHRlcil7XG4gICAgICAgICAgICAgICAgICBvdXRwdXRWYWx1ZSA9IHYuZm9ybWF0dGVyKHZhbHVlTGFiZWxlZCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgc3RyICs9IHZhbHVlTGFiZWxlZC52YWx1ZSA9PSBudWxsID8gJycgOiBgXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRlc2NcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgJHt2YWx1ZUxhYmVsZWQubGFiZWx9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAke3YucHJlZml4IHx8ICcnfVxuICAgICAgICAgICAgICAgICAgICAgICAgJHtvdXRwdXRWYWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICR7dmFsdWVMYWJlbGVkLnN1ZmZpeCB8fCB2LnN1ZmZpeCB8fCAnJ31cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5gO1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICAgIGxldCBvdXRwdXRWYWx1ZSA9IHYucm91bmQgPyB1dGlscy5yb3VuZCh2YWx1ZSwgdi5yb3VuZCkgOiB2YWx1ZTtcbiAgICAgICAgICAgICAgc3RyICs9IHZhbHVlID09IG51bGwgPyAnJyA6IGBcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRlc2NcIj5cbiAgICAgICAgICAgICAgICAgICAgICAke3YucHJlZml4IHx8ICcnfVxuICAgICAgICAgICAgICAgICAgICAgICR7b3V0cHV0VmFsdWV9XG4gICAgICAgICAgICAgICAgICAgICAgJHt2LnN1ZmZpeCB8fCAnJ31cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIHN0ciArPSBgXG4gICAgICAgICAgICAgICAgPC9kaXY+YDtcblxuXG4gICAgICAgICAgc3RyICs9IGBcbiAgICAgICAgICAgICAgPC9kaXY+YDsvLyBlbmQgLml0ZW0tZGV0YWlsXG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuXG4gICAgc3RyICs9IGBcbiAgICAgICAgPC9kaXY+YDsgLy8gbGlzdC1kZXRhaWxcblxuXG5cblxuICAgIC8vUElMTFNcbiAgICBpZihjb25maWcudGltZWxpbmUuZGV0YWlsRGF5LnBpbGxzVmFyTmFtZSAmJlxuICAgICAgZGF0YURheSAmJiBkYXRhRGF5LnZhbHVlc1tjb25maWcudGltZWxpbmUuZGV0YWlsRGF5LnBpbGxzVmFyTmFtZV0pe1xuXG4gICAgICBzdHIgKz0gYFxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJlbGVtZW50cy1kZXRhaWxcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJuYW1lXCI+ICR7IGNvbmZpZy50aW1lbGluZS5kZXRhaWxEYXkucGlsbHNUaXRsZSB9IDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImVsZW1lbnRzLWxpc3RcIj5gO1xuXG4gICAgICAgICAgZGF0YURheS52YWx1ZXNbY29uZmlnLnRpbWVsaW5lLmRldGFpbERheS5waWxsc1Zhck5hbWVdLmZvckVhY2goZSA9PiB7XG4gICAgICAgICAgICBzdHIgKz1gXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZWxlbWVudC1kZXRhaWxcIj5cbiAgICAgICAgICAgICAgPGI+JHtlLmxhYmVsfTwvYj5cbiAgICAgICAgICAgICAgJHtlLnZhbHVlfVxuICAgICAgICAgICAgPC9kaXY+YDtcbiAgICAgICAgICB9KTtcblxuICAgICAgc3RyICs9IGBcbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+YDsgLy9lbmQgLmVsZW1lbnQtZGV0YWlsID4gLmVsZW1lbnQtbGlzdFxuICAgIH1cblxuXG5cblxuICAgIC8vc3RyICs9IGA8L2Rpdj5gO1xuXG5cbiAgICBpZihkYXRhRGF5ICYmIGRhdGFEYXkuZXJyb3JzICYmIGRhdGFEYXkuZXJyb3JzLmxlbmd0aCA+IDApe1xuICAgICAgZGF0YURheS5lcnJvcnMuZm9yRWFjaChlcnIgPT4ge1xuICAgICAgICBsZXQgYWxlcnRJY29uID0gYDxzcGFuIGNsYXNzPVwiYWxlcnQtaWNvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHN0eWxlPVwid2lkdGg6MjRweDtoZWlnaHQ6MjRweFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGZpbGw9XCJjdXJyZW50Q29sb3JcIiBkPVwiTTEzIDE0SDExVjlIMTNNMTMgMThIMTFWMTZIMTNNMSAyMUgyM0wxMiAyTDEgMjFaXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+YFxuICAgICAgICBzdHIgKz0gYFxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJhbGVydFwiPlxuICAgICAgICAgICAgJHthbGVydEljb259XG4gICAgICAgICAgICAke2Vyci5sYWJlbCB9XG4gICAgICAgICAgPC9kaXY+YDtcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgaWYoZGF0YURheSAmJiBkYXRhRGF5Lm1lc3NhZ2UgJiYgZGF0YURheS5tZXNzYWdlLnZhbHVlKXtcbiAgICAgIHN0ciArPWBcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibXNqLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1zalwiPlxuICAgICAgICAgICAgICAkeyBkYXRhRGF5Lm1lc3NhZ2UudmFsdWUgfHwgJyd9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtc2otZGV0YWlsXCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZW1haWxcIj4gJHsgZGF0YURheS5tZXNzYWdlLmF1dGhvciB8fCAnJ30gPC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRhdGVcIj4gJHsgZGF0YURheS5tZXNzYWdlLmRhdGUgPyBkYXRlVXRpbHMuZm9ybWF0RGF0ZVJlYWRlYWJsZShuZXcgRGF0ZShkYXRhRGF5Lm1lc3NhZ2UuZGF0ZSkpIDogJyd9IDwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5gO1xuICAgIH1cblxuICAgIGxldCBzdHJDb250YWluZXIgPSBgPGRpdiBjbGFzcz1cImRldGFpbC1kYXkgZGQtaGlkZVwiPiAke3N0cn0gPC9kaXY+YDtcblxuICAgIGlmIChvbmx5U3RyaW5nQ29udGVudCkgcmV0dXJuIHN0cjtcblxuICAgIHJldHVybiBkb20uY3JlYXRlRWxlbWVudEZyb21IVE1MKHN0ckNvbnRhaW5lcik7XG4gIH0sXG5cblxuXG4gIC8qKlxuICAgKiBSZWNyZWEgQmFja2dyb3VuZCwgcXVlIGVzIGVsIGZvbmRvIGdyaWQsIGNvbW8gdGFibGFcbiAgICpcbiAgICogQHBhcmFtIHtPYmplY3R9IGNvbmZpZyAtIENvbmZpZ3VyYWNpb24gY2FwaWJhcmFcbiAgICogQHBhcmFtIHtPYmplY3R9ICRlbGVtIC0gRWxlbWVudG8gcmVsYWNpb25hZG8sIGRvbmRlIHNlIGNyZSBlbCBiYWNrZ3JvdW5kXG4gICAqIEByZXR1cm4ge09iamVjdH0gRWxlbWVudG8gRG9tIENvcm5lciBGb290ZXJcbiAgICovXG4gIHJlZHJhd0JhY2tncm91bmQoY29uZmlnLCAkZWxlbSl7XG4gICAgcmV0dXJuIHRoaXMuY3JlYXRlQmFja2dyb3VuZChjb25maWcsICRlbGVtKTtcbiAgfSxcblxuXG5cbiAgLyoqXG4gICAqIFJlY3JlYSBIVE1MIGRlIGRldGFpbERheVxuICAgKlxuICAgKiBAcGFyYW0ge09iamVjdH0gY29uZmlnIC0gQ29uZmlndXJhY2lvbiBjYXBpYmFyYVxuICAgKiBAcGFyYW0ge09iamVjdH0gaXRlbSAtIEl0ZW0gcmVsYWNpb25hZG9cbiAgICogQHBhcmFtIHtPYmplY3R9IGRhdGFEYXkgLSB2YWxvcmVzIGRlIGl0ZW0geSBEaWFcbiAgICogQHJldHVybiB7U3RyaW5nfSBFbGVtZW50byBjb21vIFN0cmluZywgZGUgZGV0YWlsRGF5XG4gICAqL1xuICByZWRyYXdEZXRhaWxEYXkoY29uZmlnLCBpdGVtLCBkYXRhRGF5KXtcbiAgICByZXR1cm4gdGhpcy5jcmVhdGVEZXRhaWxEYXkoY29uZmlnLCBpdGVtLCBkYXRhRGF5LCB0cnVlKTtcbiAgfSxcblxuXG4gIC8qKlxuICAgKiBSZXBvc2ljaW9uYSBGbG9hdEJveFxuICAgKiB2ZXJpZmljYSBzaSBlbCBwYXJlbnQgZXN0YSBkZXNwbGVnYWRvLCBwYXJhIG9jdWx0YXIgbG9zIGRhdG9zXG4gICAqXG4gICAqIFNvbG8gYWN0dWFsaXphIGxhcyBhbHR1cmFzIGRlIGxvcyBmbG9hdGJveFxuICAgKiBubyByZWNyZWEgbG9zIGZsb2F0Ym94LCBlcyBtYXMgb3B0aW1vXG4gICAqXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBjb25maWcgLSBDb25maWd1cmFjaW9uIGNhcGliYXJhXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBpdGVtIC0gSXRlbSByZWxhY2lvbmFkb1xuICAgKi9cbiAgcmVwb3NpdGlvbkZsb2F0Qm94KGNvbmZpZywgJGZsb2F0Qm94Q29udGFpbmVyKXtcbiAgICAgICRmbG9hdEJveENvbnRhaW5lci5xdWVyeVNlbGVjdG9yQWxsKFwiLmZsb2F0LWJveFwiKS5mb3JFYWNoKCRmID0+IHtcbiAgICAgICAgbGV0IGl0ZW1JZCA9ICRmLmdldEF0dHJpYnV0ZShcIml0ZW0taWRcIik7XG4gICAgICAgIGxldCBpdGVtSGVpZ2h0ID0gcGFyc2VGbG9hdCh1dGlscy5nZXRDU1NWYXJpYWJsZShjb25maWcsIFwiLS1pdGVtLWhlaWdodFwiKSk7XG4gICAgICAgIGxldCBpdGVtLHBhcmVudDtcbiAgICAgICAgKHtpdGVtLCBwYXJlbnR9ID0gdXRpbHMuZ2V0SXRlbUJ5SWQoY29uZmlnLCBpdGVtSWQsIFwiY2hpbGRcIiwgdHJ1ZSkpO1xuICAgICAgICBpZihpdGVtKXtcbiAgICAgICAgICBsZXQgdG9wICAgICAgPSB1dGlscy5nZXRQb3NpdGlvbkJ5SXRlbShjb25maWcsIGl0ZW0pO1xuICAgICAgICAgICRmLnN0eWxlLnRvcCA9ICh0b3AgKiBpdGVtSGVpZ2h0ICkgK1wicHhcIjtcbiAgICAgICAgICBpZihwYXJlbnQgJiYgcGFyZW50LmhpZGRlbil7XG4gICAgICAgICAgICAkZi5jbGFzc0xpc3QuYWRkKFwiaGlkZVwiKTtcbiAgICAgICAgICB9ZWxzZSBpZigkZi5jbGFzc0xpc3QuY29udGFpbnMoXCJoaWRlXCIpKXtcbiAgICAgICAgICAgICRmLmNsYXNzTGlzdC5yZW1vdmUoXCJoaWRlXCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH0sXG5cblxuXG4gIC8qKlxuICAgKiBSZWNyZWEgaW5kaWNhZG9yZXMgZGUgZGlhcyBzZWxlY2Npb25hZG9zXG4gICAqXG4gICAqIEBwYXJhbSB7T2JqZWN0fSAkZWxlbSAtIEVsZW1lbnRvIERvbSBkb25kZSBjcmVhIGxvcyBlbGVtZW50b3Mgc2VsZWNjaW9uYWRvc1xuICAgKiBAcGFyYW0ge09iamVjdFtdfSBzZWxlY3RlZCAtIEFycmF5IGNvbiBsb3MgZGlhcyBzZWxlY2Npb25hZG9zXG4gICAqIEByZXR1cm4ge09iamVjdH0gRWxlbWVudG8gRG9tIHF1ZSBjb250aWVuZSBsb3MgaW5kaWNhZG9yZXMgZGUgZGlhcyBzZWxlY2Npb25hZG9zXG4gICAqL1xuICByZWRyYXdTZWxlY3RCb2FyZCgkZWxlbSwgc2VsZWN0ZWQpe1xuICAgICRlbGVtLmlubmVySFRNTCA9IFwiXCI7XG4gICAgaWYoc2VsZWN0ZWQpe1xuICAgICAgc2VsZWN0ZWQuZm9yRWFjaChzID0+IHtcbiAgICAgICAgbGV0ICRzID0gZG9tLmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwge2NsYXNzTmFtZTogXCJzZWxlY3RlZC1kYXlcIiwgYXR0cmlidXRlczpbXG4gICAgICAgICAge25hbWU6XCJzZWxlY3RlZC1pbmRleFwiLCB2YWx1ZTpzLmluZGV4IH1cbiAgICAgICAgXX0pO1xuICAgICAgICAkcy5zdHlsZS5sZWZ0ID0gcy5wb3MubGVmdCArIFwicHhcIjtcbiAgICAgICAgJHMuc3R5bGUudG9wID0gcy5wb3MudG9wICsgXCJweFwiO1xuICAgICAgICAkZWxlbS5hcHBlbmQoJHMpO1xuICAgICAgfSlcbiAgICB9XG4gICAgcmV0dXJuICRlbGVtO1xuICB9LFxuXG5cblxuICAvKipcbiAgICogT2J0aWVuZSBTdHJpbmcgY29uIGVzdGlsb3MgQ1NTIGRlIGxhIHBvc2ljaW9uIGRlIHVuIGZsb2F0Qm94XG4gICAqIGNhbGN1bGFkbyBzZWd1biBpdGVtIHkgZmVjaGEgZGUgbG9zIHZhbG9yZXNcbiAgICpcbiAgICogQHBhcmFtIHtPYmplY3R9IGNvbmZpZyAtIENvbmZpZ3VyYWNpb24gY2FwaWJhcmEsIHBhcmEgdmVyIGZlY2hhIGRlIGluaWNpb1xuICAgKiBAcGFyYW0ge09iamVjdH0gZGF0YSAtIERhdG9zIGRlbCBkaWEgaW5kaWNhZG9cbiAgICogQHBhcmFtIHtPYmplY3R9IGl0ZW0gLSBJdGVtIHJlbGFjaW9uYWRvXG4gICAqIEByZXR1cm4ge1N0cmluZ30gU3RyaW5nIENTUyB0b3AgeSBsZWZ0ICwgcGFyYSBwb3NpY2lvbmFyIGZsb2F0Qm94IGVuIHRhYmxlXG4gICAqL1xuICBnZXRQb3NpdGlvbkZsb2F0Qm94KGNvbmZpZywgZGF0YSwgaXRlbSl7XG4gICAgbGV0IGxlZnQgPSBkYXRlVXRpbHMuZGlmZkRheXMoY29uZmlnLnRpbWVsaW5lLnN0YXJ0LCBkYXRhLmRhdGUpO1xuICAgIGxldCB0b3AgID0gdXRpbHMuZ2V0UG9zaXRpb25CeUl0ZW0oY29uZmlnLCBpdGVtKTtcbiAgICBsZXQgZGF5V2lkdGggPSBwYXJzZUZsb2F0KHV0aWxzLmdldENTU1ZhcmlhYmxlKGNvbmZpZywgXCItLWRheS13aWR0aFwiKSk7XG4gICAgbGV0IGl0ZW1IZWlnaHQgPSBwYXJzZUZsb2F0KHV0aWxzLmdldENTU1ZhcmlhYmxlKGNvbmZpZywgXCItLWl0ZW0taGVpZ2h0XCIpKTtcbiAgICBsZWZ0ICAgICo9IGRheVdpZHRoO1xuICAgIHRvcCAgICAgKj0gaXRlbUhlaWdodDtcbiAgICByZXR1cm4gXCJ0b3A6IFwiK3RvcCtcIi41cHg7IGxlZnQ6XCIrbGVmdCtcIi41cHg7XCI7XG4gIH0sXG5cblxuXG5cbiAgLyoqXG4gICAqIENyZWEgQm90b24gY29tbyBlbGVtZW50byBEb21cbiAgICpcbiAgICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gcHJvcGllZGFkZXMgcGFyYSBib3RvblxuICAgKiBAcGFyYW0ge1N0cmluZ30gcHJvcHMuY2xhc3NOYW1lIC0gY2xhc3NlcyBjc3MgcGFyYSBib3RvblxuICAgKiBAcGFyYW0geyp9IHByb3BzLmtleSAtIGtleSBwYXJhIGlkZW50aWZpY2FyIGEgYm90b25cbiAgICogQHBhcmFtIHtTdHJpbmd9IHByb3BzLmxhYmVsIC0gVGV4dG8gYm90b25cbiAgICogQHJldHVybiB7T2JqZWN0fSBFbGVtZW50byBEb20gZGVsIGJvdG9uIGNyZWFkb1xuICAgKi9cbiAgY3JlYXRlQnV0dG9uKHByb3BzKXtcbiAgICByZXR1cm4gZG9tLmNyZWF0ZUVsZW1lbnRGcm9tSFRNTChgXG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiJHtwcm9wcy5jbGFzc05hbWUgfHwgJyd9IGlucHV0LWtleT1cIiR7cHJvcHMua2V5IHx8ICcnfVwiPlxuICAgICAgICAgICAgICAke3Byb3BzLmxhYmVsIHx8ICcnfVxuICAgICAgICAgICAgPC9idXR0b24+YCk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIENyZWEgQm90b25lcyBkZSBndWFyZGFyIHkgY2FuY2VsYXIgbG9zIGRhdG9zIGRlIGZvcm11bGFyaW8gZGVsIHNpZGViYXIgZGVyZWNob1xuICAgKlxuICAgKiBAcmV0dXJuIHtPYmplY3R9IEVsZW1lbnRvIERvbSBkZWwgYm90b25lcyBjcmVhZG9zXG4gICAqL1xuICBjcmVhdGVOYXZSaWdodGJ1dHRvbnMoKXtcbiAgICBsZXQgc2F2ZUJ0biAgICA9IHRoaXMuY3JlYXRlQnV0dG9uKHtsYWJlbDonR3VhcmRhcicsIGNsYXNzTmFtZTonYnRuLXJhaXNlZCd9KTtcbiAgICBsZXQgY2FuY2VsQnRuICA9IHRoaXMuY3JlYXRlQnV0dG9uKHtsYWJlbDonQ2FuY2VsYXInLCBjbGFzc05hbWU6J2J0bi1vdXRsaW5lJ30pO1xuICAgIGxldCBidG5TZWN0aW9uID0gZG9tLmNyZWF0ZUVsZW1lbnRGcm9tSFRNTChgPGRpdiBjbGFzcz1cImJ1dHRvbi1zZWN0aW9uXCI+PC9kaXY+YCk7XG4gICAgYnRuU2VjdGlvbi5hcHBlbmRDaGlsZChzYXZlQnRuKTtcbiAgICBidG5TZWN0aW9uLmFwcGVuZENoaWxkKGNhbmNlbEJ0bik7XG5cbiAgICBzYXZlQnRuLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBlID0+IHtcbiAgICAgIHNhdmVCdG4uZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoXCJzYXZlTXVsdGlJbnB1dFwiLCB7XG4gICAgICAgIGJ1YmJsZXM6IHRydWUsXG4gICAgICAgIGNhbmNlbGFibGU6IGZhbHNlLFxuICAgICAgfSkpO1xuICAgIH0pO1xuXG4gICAgY2FuY2VsQnRuLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBlID0+IHtcbiAgICAgIGNhbmNlbEJ0bi5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudChcImNhbmNlbE11bHRpSW5wdXRcIiwge1xuICAgICAgICBidWJibGVzOiB0cnVlLFxuICAgICAgICBjYW5jZWxhYmxlOiBmYWxzZSxcbiAgICAgIH0pKTtcbiAgICB9KTtcblxuICAgIHJldHVybiBidG5TZWN0aW9uO1xuICB9LFxuXG5cblxuICAvKipcbiAgICogQ3JlYSBJbnB1dCBjb21vIGVsZW1lbnRvIERvbVxuICAgKlxuICAgKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBjb25maWcgcGFyYSBJbnB1dFxuICAgKiBAcGFyYW0ge09iamVjdH0gW2RhdGFEYXkgPSBudWxsXSAtIHZhbG9yZXMgZGUgaXRlbSB5IERpYSwgb3BjaW9uYWxcbiAgICogQHBhcmFtIHtPYmplY3R9IFtkYXlTZWxlY3RlZCA9IG51bGxdIC0gZGF0b3MgZGVsIGRpYSBzZWxlY2Npb25hZG9cbiAgICogQHJldHVybiB7T2JqZWN0fSBFbGVtZW50byBEb20gZGVsIGlucHV0IGNyZWFkb1xuICAgKi9cbiAgY3JlYXRlSW5wdXQocHJvcHMsIGRhdGFEYXk9IG51bGwsIGRheVNlbGVjdGVkID0gbnVsbCl7XG4gICAgbGV0IHIgPSBudWxsO1xuXG4gICAgaWYocHJvcHMuaXNIaWRkZW4pIHJldHVybiByO1xuXG4gICAgc3dpdGNoIChwcm9wcy50eXBlKSB7XG4gICAgICBjYXNlIFwiaW5wdXRMaXN0XCI6XG4gICAgICAgIHIgPSB0aGlzLmNyZWF0ZUlucHV0TGlzdChwcm9wcywgZGF0YURheSwgZGF5U2VsZWN0ZWQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJ0aXRsZVwiOlxuICAgICAgICByID0gdGhpcy5jcmVhdGVUaXRsZShwcm9wcyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcIm51bWJlclwiOlxuICAgICAgICByID0gdGhpcy5jcmVhdGVJbnB1dE51bWJlcihwcm9wcywgZGF0YURheSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcImZsb2F0XCI6XG4gICAgICAgIHIgPSB0aGlzLmNyZWF0ZUlucHV0RmxvYXQocHJvcHMsIGRhdGFEYXkpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJtZXNzYWdlXCI6XG4gICAgICAgIHIgPSB0aGlzLmNyZWF0ZUlucHV0TWVzc2FnZShwcm9wcywgZGF0YURheSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcInRleHRhcmVhXCI6XG4gICAgICAgIHIgPSB0aGlzLmNyZWF0ZUlucHV0VGV4dEFyZWEocHJvcHMsIGRhdGFEYXkpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJjaGVja2JveFwiOlxuICAgICAgICByID0gdGhpcy5jcmVhdGVJbnB1dENoZWNrYm94KHByb3BzLCBkYXRhRGF5KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiaW5wdXQtYm94XCI6XG4gICAgICAgIHIgPSB0aGlzLmNyZWF0ZUlucHV0Qm94KHByb3BzLCBkYXRhRGF5KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwidGltZVwiOlxuICAgICAgICByID0gdGhpcy5jcmVhdGVJbnB1dFRpbWUocHJvcHMsIGRhdGFEYXkpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJ0ZXh0XCI6XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByID0gdGhpcy5jcmVhdGVJbnB1dFRleHQocHJvcHMsIGRhdGFEYXkpO1xuICAgIH1cblxuICAgIHJldHVybiByO1xuICB9LFxuXG5cblxuICAvKipcbiAgICogQ3JlYSBJbnB1dCBjb24gZm9ybWF0byBIb3JhLCBjb21vIGVsZW1lbnRvIERvbVxuICAgKlxuICAgKiBVc2EgMiBpbnB1dHMsIGhvcmEgeSBtaW51dG9zXG4gICAqXG4gICAqIGVsIHZhbHVlIHF1ZSBpbnRlcnByZXRhIGVzIFN0cmluZyBISDpNTVxuICAgKlxuICAgKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBjb25maWcgcGFyYSBJbnB1dFxuICAgKiBAcGFyYW0ge09iamVjdH0gW2RhdGFEYXkgPSBudWxsXSAtIHZhbG9yZXMgZGUgaXRlbSB5IERpYSwgb3BjaW9uYWxcbiAgICogQHJldHVybiB7T2JqZWN0fSBFbGVtZW50byBEb20gZGVsIGlucHV0IGNyZWFkb1xuICAgKi9cbiAgY3JlYXRlSW5wdXRUaW1lKHByb3BzLCBkYXRhRGF5KXtcbiAgICBsZXQgaGhWYWx1ZSA9ICcnO1xuICAgIGxldCBtbVZhbHVlID0gJyc7XG5cbiAgICBpZihkYXRhRGF5ICYmIGRhdGFEYXkudmFsdWVzKXtcbiAgICAgIGxldCB2YWx1ZSA9IHV0aWxzLmdldFZhckJ5UGF0aChkYXRhRGF5LCBwcm9wcy52YXJOYW1lKTtcblxuICAgICAgaWYodmFsdWUpe1xuICAgICAgICB2YWx1ZSAgID0gdmFsdWUuc3BsaXQoXCI6XCIpO1xuICAgICAgICBoaFZhbHVlID0gdmFsdWVbMF07XG4gICAgICAgIG1tVmFsdWUgPSB2YWx1ZVsxXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsZXQgciA9IGRvbS5jcmVhdGVFbGVtZW50RnJvbUhUTUwoYFxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1zZWN0aW9uXCIgaW5wdXQta2V5PVwiJHtwcm9wcy5rZXkgfHwgJyd9XCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtc3VidGl0bGUgZC1ibG9ja1wiPlxuICAgICAgICAgICAgICAke3Byb3BzLmxhYmVsIHx8ICcnfVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpbWVcIj5cbiAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJudW1iZXJcIlxuICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJob3VyXCJcbiAgICAgICAgICAgICAgICAgICAgIGlkPVwidGVzdFwiXG4gICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIjAwXCJcbiAgICAgICAgICAgICAgICAgICAgIG1pbj1cIjBcIlxuICAgICAgICAgICAgICAgICAgICAgbWF4PVwiMjRcIlxuICAgICAgICAgICAgICAgICAgICAgdmFsdWU9XCIke2hoVmFsdWV9XCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ltYm9sXCI+Ojwvc3Bhbj5cbiAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJudW1iZXJcIlxuICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtaW51dGVzXCJcbiAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiMDBcIlxuICAgICAgICAgICAgICAgICAgICAgbWluPVwiMFwiXG4gICAgICAgICAgICAgICAgICAgICBtYXg9XCI1OVwiXG4gICAgICAgICAgICAgICAgICAgICB2YWx1ZT1cIiR7bW1WYWx1ZX1cIj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PmApO1xuXG4gICAgbGV0IGhoID0gci5xdWVyeVNlbGVjdG9yKCcuaG91cicpO1xuICAgIGxldCBtbSA9IHIucXVlcnlTZWxlY3RvcignLm1pbnV0ZXMnKTtcblxuICAgIGhoLmFkZEV2ZW50TGlzdGVuZXIoXCJpbnB1dFwiLCBlID0+IHtcbiAgICAgIGhoLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KFwiY2hhbmdlVGltZUlucHV0SEhcIiwge1xuICAgICAgICBidWJibGVzOiB0cnVlLFxuICAgICAgICBjYW5jZWxhYmxlOiBmYWxzZSxcbiAgICAgICAgZGV0YWlsOntcbiAgICAgICAgICBrZXk6IHByb3BzLmtleSxcbiAgICAgICAgICB2YWx1ZTogZS5zcmNFbGVtZW50LnZhbHVlXG4gICAgICAgIH1cbiAgICAgIH0pKTtcbiAgICB9KTtcblxuICAgIG1tLmFkZEV2ZW50TGlzdGVuZXIoXCJpbnB1dFwiLCBlID0+IHtcbiAgICAgIG1tLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KFwiY2hhbmdlVGltZUlucHV0TU1cIiwge1xuICAgICAgICBidWJibGVzOiB0cnVlLFxuICAgICAgICBjYW5jZWxhYmxlOiBmYWxzZSxcbiAgICAgICAgZGV0YWlsOntcbiAgICAgICAgICBrZXk6IHByb3BzLmtleSxcbiAgICAgICAgICB2YWx1ZTogZS5zcmNFbGVtZW50LnZhbHVlXG4gICAgICAgIH1cbiAgICAgIH0pKTtcbiAgICB9KTtcblxuICAgIHRoaXMuYWRkS2V5RG93bklucHV0RXZlbnRzKGhoKTtcbiAgICB0aGlzLmFkZEtleURvd25JbnB1dEV2ZW50cyhtbSk7XG5cbiAgICByZXR1cm4gcjtcbiAgfSxcblxuXG4gIC8qKlxuICAgKiBDcmVhIFRpdGxlIGNvbW8gZWxlbWVudG8gRG9tXG4gICAqIFNlIGNvbmZpZ3VyYSBjb21vIGlucHV0LCBwZXJvIG5vIGRldnVlbHZlIGRhdG9zLCBlcyB1biB0ZXh0b1xuICAgKlxuICAgKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBjb25maWcgcGFyYSBJbnB1dFxuICAgKiBAcmV0dXJuIHtPYmplY3R9IEVsZW1lbnRvIERvbSBkZWwgaW5wdXQgY3JlYWRvXG4gICAqL1xuICBjcmVhdGVUaXRsZShwcm9wcyl7XG4gICAgcmV0dXJuIGRvbS5jcmVhdGVFbGVtZW50RnJvbUhUTUwoYFxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1zZWN0aW9uXCIgaW5wdXQta2V5PVwiJHtwcm9wcy5rZXkgfHwgJyd9XCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtdGl0bGUgXCI+XG4gICAgICAgICAgICAgICR7cHJvcHMubGFiZWx9XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9kaXY+YCk7XG4gIH0sXG5cblxuXG4gIC8qKlxuICAgKiBDcmVhIElucHV0IHRpcG8gTnVtZXJpY28gY29tbyBlbGVtZW50byBEb21cbiAgICpcbiAgICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gY29uZmlnIHBhcmEgSW5wdXRcbiAgICogQHBhcmFtIHtPYmplY3R9IGRhdGFEYXkgLSB2YWxvcmVzIGRlIGl0ZW0geSBEaWEsIG9wY2lvbmFsXG4gICAqIEByZXR1cm4ge09iamVjdH0gRWxlbWVudG8gRG9tIGRlbCBpbnB1dCBjcmVhZG9cbiAgICovXG4gIGNyZWF0ZUlucHV0TnVtYmVyKHByb3BzLCBkYXRhRGF5KXtcbiAgICBsZXQgdmFsdWUgPSBcIlwiO1xuICAgIGlmKGRhdGFEYXkgJiYgZGF0YURheS52YWx1ZXMpe1xuICAgICAgdmFsdWUgPSB1dGlscy5nZXRWYXJCeVBhdGgoZGF0YURheSwgcHJvcHMudmFyTmFtZSk7XG4gICAgfVxuICAgIHZhbHVlID0gdmFsdWUgfHwgJyc7XG5cbiAgICBsZXQgZWxlbSA9IGRvbS5jcmVhdGVFbGVtZW50RnJvbUhUTUwoYFxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1zZWN0aW9uXCIgaW5wdXQta2V5PVwiJHtwcm9wcy5rZXkgfHwgJyd9XCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtc3VidGl0bGUgZC1ibG9ja1wiPlxuICAgICAgICAgICAgICAke3Byb3BzLmxhYmVsfVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJudW1iZXJcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJuYXYtaW5wdXRcIlxuICAgICAgICAgICAgICAgICAgdmFsdWU9XCIke3ZhbHVlfVwiPlxuICAgICAgICAgIDwvZGl2PmApO1xuXG4gICAgbGV0IGlucHV0RWxlbSA9IGVsZW0ucXVlcnlTZWxlY3RvcihcImlucHV0XCIpO1xuICAgIHRoaXMuYWRkS2V5RG93bklucHV0RXZlbnRzKGlucHV0RWxlbSk7XG5cbiAgICByZXR1cm4gZWxlbTtcbiAgfSxcblxuXG5cblxuICAvKipcbiAgICogQ3JlYSBsaXN0YSBkZSBJbnB1dHMsIGNvbiBhcnJheSBkZSB2YWxvcmVzLCBjb21vIGVsZW1lbnRvIERvbVxuICAgKlxuICAgKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBjb25maWcgcGFyYSBJbnB1dFxuICAgKiBAcGFyYW0ge09iamVjdH0gZGF0YURheSAtIHZhbG9yZXMgZGUgaXRlbSB5IERpYSwgb3BjaW9uYWxcbiAgICogQHBhcmFtIHtPYmplY3R9IFtkYXlTZWxlY3RlZCA9IG51bGxdIC0gZGF0b3MgZGVsIGRpYSBzZWxlY2Npb25hZG9cbiAgICogQHJldHVybiB7T2JqZWN0fSBFbGVtZW50byBEb20gZGVsIGlucHV0IGNyZWFkb1xuICAgKi9cbiAgY3JlYXRlSW5wdXRMaXN0KHByb3BzLCBkYXRhRGF5LCBkYXlTZWxlY3RlZCA9IG51bGwpe1xuICAgIGxldCB2YWx1ZSA9IG51bGw7XG4gICAgbGV0IGlucHV0TGlzdCA9IFtdO1xuXG4gICAgLy9vYnRpZW5lIGlucHV0cyBkZWZhdWx0LCBwYXJhIGNyZWFybG9zLCBzaW4gdmFsb3Jlc1xuICAgIGlmKGRheVNlbGVjdGVkICYmIEFycmF5LmlzQXJyYXkoZGF5U2VsZWN0ZWQuaXRlbS52YWx1ZXNbcHJvcHMuaW5wdXRMaXN0XSkpe1xuXG4gICAgICBpbnB1dExpc3QgPSBkYXlTZWxlY3RlZC5pdGVtLnZhbHVlc1twcm9wcy5pbnB1dExpc3RdLm1hcChpbnB1dFJvdyA9PiB7XG5cbiAgICAgICAgLy9saW1waWEgaW5wdXRMaXN0IGlucHV0c1xuICAgICAgICAvL0FURU5USU9OIHBvc2libGVtZW50ZSBpbm5lY2VzYXJpYVxuICAgICAgICBpbnB1dFJvdy5pbnB1dHMubWFwKGlucHV0ID0+IHtcbiAgICAgICAgICBpbnB1dC52YWx1ZTtcbiAgICAgICAgICByZXR1cm4gaW5wdXQ7XG4gICAgICAgIH0pXG5cblxuICAgICAgICAvL29idGllbmUgdmFsb3JlcyBkZWwgZGlhXG4gICAgICAgIGlmIChkYXRhRGF5ICYmIGRhdGFEYXkudmFsdWVzKSB7XG4gICAgICAgICAgbGV0IGlucHV0VmFsdWVzID0gdXRpbHMuZ2V0VmFyQnlQYXRoKGRhdGFEYXksIHByb3BzLnZhbHVlc1BhdGgpO1xuXG4gICAgICAgICAgLy9hdXRvcnJlbGxlbmFcbiAgICAgICAgICBpZihpbnB1dFZhbHVlcyl7XG4gICAgICAgICAgICBpbnB1dFJvdy5pbnB1dHMuZm9yRWFjaChpbnB1dCA9PiB7XG4gICAgICAgICAgICAgIGxldCB2YWx1ZXMgPSBpbnB1dFZhbHVlcy5maW5kKHYgPT4gdi5pZCA9PSBpbnB1dFJvdy5pZCk7XG4gICAgICAgICAgICAgIGlucHV0LnZhbHVlID0gdmFsdWVzID8gdmFsdWVzW2lucHV0LnZhck5hbWVdIDogbnVsbDtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gaW5wdXRSb3c7XG5cbiAgICAgIH0pO1xuICAgIH1cblxuXG4gICAgbGV0IHN0ciA9IGA8ZGl2IGlucHV0LWtleT1cIiR7cHJvcHMua2V5IHx8ICcnfVwiID5gO1xuICAgICAgaW5wdXRMaXN0LmZvckVhY2goaW5wdXRSb3cgPT4ge1xuICAgICAgICBzdHIgKz0gYFxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LXNlY3Rpb24gaW5wdXQtc2VjdGlvbi1mbGV4XCIgPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1zdWJ0aXRsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgJHtpbnB1dFJvdy5sYWJlbH1cbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+YDtcblxuICAgICAgICAgIGlucHV0Um93LmlucHV0cy5mb3JFYWNoKGlucHV0ID0+IHtcbiAgICAgICAgICAgIHN0ciArPSBgIFxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtc2VjdGlvbi1jb2xcIiA+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXN1YnRpdGxlIFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgJHtpbnB1dC5sYWJlbH1cbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJudW1iZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0LWlkPVwiJHtpbnB1dFJvdy5pZH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0LWxhYmVsPVwiJHtpbnB1dC5sYWJlbH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibmF2LWlucHV0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT1cIiR7aW5wdXQudmFsdWV9XCI+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PmA7XG4gICAgICAgICAgfSlcbiAgICAgICAgICBzdHIgKz0gYFxuICAgICAgICAgICAgICAgICAgPC9kaXY+YDtcbiAgICAgIH0pXG4gICAgc3RyICs9IGA8L2Rpdj5gO1xuXG4gICAgbGV0IGVsZW0gPSBkb20uY3JlYXRlRWxlbWVudEZyb21IVE1MKHN0cik7XG5cbiAgICBsZXQgaW5wdXRzRWxlbSA9IGVsZW0ucXVlcnlTZWxlY3RvckFsbChcImlucHV0XCIpO1xuICAgIGlucHV0c0VsZW0uZm9yRWFjaChpbnB1dEVsZW0gPT4gIHRoaXMuYWRkS2V5RG93bklucHV0RXZlbnRzKGlucHV0RWxlbSkpO1xuICAgIHJldHVybiBlbGVtO1xuICB9LFxuXG5cblxuICAvKipcbiAgICogQ3JlYSBJbnB1dCBkZSB0ZXh0byBUZXh0QXJlYSBjb21vIGVsZW1lbnRvIERvbVxuICAgKlxuICAgKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBjb25maWcgcGFyYSBJbnB1dFxuICAgKiBAcGFyYW0ge09iamVjdH0gZGF0YURheSAtIHZhbG9yZXMgZGUgaXRlbSB5IERpYSwgb3BjaW9uYWxcbiAgICogQHJldHVybiB7T2JqZWN0fSBFbGVtZW50byBEb20gZGVsIGlucHV0IGNyZWFkb1xuICAgKi9cbiAgY3JlYXRlSW5wdXRUZXh0QXJlYShwcm9wcywgZGF0YURheSl7XG4gICAgbGV0IHZhbHVlID0gXCJcIjtcbiAgICBpZihkYXRhRGF5ICYmIGRhdGFEYXkudmFsdWVzKXtcbiAgICAgIHZhbHVlID0gdXRpbHMuZ2V0VmFyQnlQYXRoKGRhdGFEYXksIHByb3BzLnZhck5hbWUpO1xuICAgIH1cbiAgICBsZXQgZWxlbSA9IGRvbS5jcmVhdGVFbGVtZW50RnJvbUhUTUwoYFxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1zZWN0aW9uXCIgaW5wdXQta2V5PVwiJHtwcm9wcy5rZXkgfHwgJyd9XCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtc3VidGl0bGUgZC1ibG9ja1wiPlxuICAgICAgICAgICAgICAke3Byb3BzLmxhYmVsfVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPHRleHRhcmVhIGNsYXNzPVwiXCIgdmFsdWU9XCIke3ZhbHVlfVwiPjwvdGV4dGFyZWE+XG4gICAgICAgICAgPC9kaXY+YCk7XG5cbiAgICBsZXQgaW5wdXRFbGVtID0gZWxlbS5xdWVyeVNlbGVjdG9yKFwidGV4dGFyZWFcIik7XG4gICAgdGhpcy5hZGRLZXlEb3duSW5wdXRFdmVudHMoaW5wdXRFbGVtKTtcbiAgICByZXR1cm4gZWxlbTtcbiAgfSxcblxuXG5cbiAgLyoqXG4gICAqIENyZWEgSW5wdXQgZGUgTWVuc2FqZSBjb21vIGVsZW1lbnRvIERvbVxuICAgKiB1dGlsaXphIFRleHRBcmVhXG4gICAqXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIGNvbmZpZyBwYXJhIElucHV0XG4gICAqIEBwYXJhbSB7T2JqZWN0fSBkYXRhRGF5IC0gdmFsb3JlcyBkZSBpdGVtIHkgRGlhLCBvcGNpb25hbFxuICAgKiBAcmV0dXJuIHtPYmplY3R9IEVsZW1lbnRvIERvbSBkZWwgaW5wdXQgY3JlYWRvXG4gICAqL1xuICBjcmVhdGVJbnB1dE1lc3NhZ2UocHJvcHMsIGRhdGFEYXkpe1xuICAgIGxldCB2YWx1ZSA9XCJcIjtcbiAgICBpZihkYXRhRGF5ICYmIGRhdGFEYXkubWVzc2FnZSl7XG4gICAgICB2YWx1ZSA9IHV0aWxzLmdldFZhckJ5UGF0aChkYXRhRGF5LCBwcm9wcy52YXJOYW1lKTtcbiAgICB9XG4gICAgbGV0IGVsZW0gPSBkb20uY3JlYXRlRWxlbWVudEZyb21IVE1MKGBcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtc2VjdGlvbiBtc2otaW5wdXQtY29udGFpbmVyXCJcbiAgICAgICAgICAgICAgaW5wdXQta2V5PVwiJHtwcm9wcy5rZXkgfHwgJyd9XCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtc3VidGl0bGUgZC1ibG9ja1wiPlxuICAgICAgICAgICAgICBNZW5zYWplXG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8dGV4dGFyZWEgY2xhc3M9XCJtc2pcIj4ke3ZhbHVlIHx8ICcnfTwvdGV4dGFyZWE+XG4gICAgICAgICAgPC9kaXY+YCk7XG5cbiAgICBsZXQgaW5wdXRFbGVtID0gZWxlbS5xdWVyeVNlbGVjdG9yKFwidGV4dGFyZWFcIik7XG4gICAgdGhpcy5hZGRLZXlEb3duSW5wdXRFdmVudHMoaW5wdXRFbGVtKTtcbiAgICByZXR1cm4gZWxlbTtcblxuICB9LFxuXG5cblxuICAvKipcbiAgICogQ3JlYSBJbnB1dCBkZSB0ZXh0byBjb21vIGVsZW1lbnRvIERvbVxuICAgKlxuICAgKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBjb25maWcgcGFyYSBJbnB1dFxuICAgKiBAcGFyYW0ge09iamVjdH0gZGF0YURheSAtIHZhbG9yZXMgZGUgaXRlbSB5IERpYSwgb3BjaW9uYWxcbiAgICogQHJldHVybiB7T2JqZWN0fSBFbGVtZW50byBEb20gZGVsIGlucHV0IGNyZWFkb1xuICAgKi9cbiAgY3JlYXRlSW5wdXRUZXh0KHByb3BzLCBkYXRhRGF5KXtcbiAgICBsZXQgdmFsdWUgPSBcIlwiO1xuICAgIGlmKGRhdGFEYXkgJiYgZGF0YURheS52YWx1ZXMpe1xuICAgICAgdmFsdWUgPSB1dGlscy5nZXRWYXJCeVBhdGgoZGF0YURheSwgcHJvcHMudmFyTmFtZSk7XG4gICAgfVxuICAgIGxldCBlbGVtID0gZG9tLmNyZWF0ZUVsZW1lbnRGcm9tSFRNTChgXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LXNlY3Rpb25cIiBpbnB1dC1rZXk9XCIke3Byb3BzLmtleSB8fCAnJ31cIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1zdWJ0aXRsZSBkLWJsb2NrXCI+XG4gICAgICAgICAgICAgICR7cHJvcHMubGFiZWx9XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cIm5hdi1pbnB1dFwiIHZhbHVlPVwiJHt2YWx1ZX1cIj5cbiAgICAgICAgICA8L2Rpdj5gKTtcblxuICAgIGxldCBpbnB1dEVsZW0gPSBlbGVtLnF1ZXJ5U2VsZWN0b3IoXCJpbnB1dFwiKTtcbiAgICB0aGlzLmFkZEtleURvd25JbnB1dEV2ZW50cyhpbnB1dEVsZW0pO1xuICAgIHJldHVybiBlbGVtO1xuXG4gIH0sXG5cblxuXG4gIC8qKlxuICAgKiBDcmVhIElucHV0IE51bWVybyBGbG90YW50ZSwgY29tbyBlbGVtZW50byBEb21cbiAgICpcbiAgICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gY29uZmlnIHBhcmEgSW5wdXRcbiAgICogQHBhcmFtIHtPYmplY3R9IGRhdGFEYXkgLSB2YWxvcmVzIGRlIGl0ZW0geSBEaWEsIG9wY2lvbmFsXG4gICAqIEByZXR1cm4ge09iamVjdH0gRWxlbWVudG8gRG9tIGRlbCBpbnB1dCBjcmVhZG9cbiAgICovXG4gIGNyZWF0ZUlucHV0RmxvYXQocHJvcHMsIGRhdGFEYXkpe1xuICAgIGxldCB2YWx1ZSA9IFwiXCI7XG4gICAgaWYoZGF0YURheSAmJiBkYXRhRGF5LnZhbHVlcyl7XG4gICAgICB2YWx1ZSA9IHV0aWxzLmdldFZhckJ5UGF0aChkYXRhRGF5LCBwcm9wcy52YXJOYW1lKTtcbiAgICB9XG4gICAgbGV0IGVsZW0gPSBkb20uY3JlYXRlRWxlbWVudEZyb21IVE1MKGBcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtc2VjdGlvblwiIGlucHV0LWtleT1cIiR7cHJvcHMua2V5IHx8ICcnfVwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXN1YnRpdGxlIGQtYmxvY2tcIj5cbiAgICAgICAgICAgICAgJHtwcm9wcy5sYWJlbH1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwibnVtYmVyXCIgY2xhc3M9XCJuYXYtaW5wdXRcIiB2YWx1ZT1cIiR7dmFsdWV9XCI+XG4gICAgICAgICAgPC9kaXY+YCk7XG5cbiAgICBsZXQgaW5wdXRFbGVtID0gZWxlbS5xdWVyeVNlbGVjdG9yKFwiaW5wdXRcIik7XG4gICAgdGhpcy5hZGRLZXlEb3duSW5wdXRFdmVudHMoaW5wdXRFbGVtKTtcbiAgICByZXR1cm4gZWxlbTtcblxuICB9LFxuXG5cbiAgLyoqXG4gICAqIENyZWEgSW5wdXRCb3gsIGNvbW8gZWxlbWVudG8gRG9tXG4gICAqIHVuIElucHV0Qm94IGVzIHVuIGNvbnRlbmVkb3IgY29uIHVuYSBsaXN0YSBkZSBpbnB1dHNcbiAgICpcbiAgICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gY29uZmlnIHBhcmEgSW5wdXRcbiAgICogQHBhcmFtIHtPYmplY3R9IGRhdGFEYXkgLSB2YWxvcmVzIGRlIGl0ZW0geSBEaWEsIG9wY2lvbmFsXG4gICAqIEByZXR1cm4ge09iamVjdH0gRWxlbWVudG8gRG9tIGRlbCBpbnB1dCBjcmVhZG9cbiAgICovXG4gIGNyZWF0ZUlucHV0Qm94KHByb3BzLCBkYXRhRGF5KXtcbiAgICBsZXQgdmFsdWUgPSBbXTtcbiAgICBpZihkYXRhRGF5ICYmIGRhdGFEYXkudmFsdWVzKXtcbiAgICAgIHZhbHVlID0gdXRpbHMuZ2V0VmFyQnlQYXRoKGRhdGFEYXksIHByb3BzLnZhck5hbWUpO1xuICAgIH1cblxuICAgIGxldCBzdHIgID0gYDxkaXYgY2xhc3M9XCJpbnB1dC1ib3ggXCIgaW5wdXQta2V5PVwiJHtwcm9wcy5rZXkgfHwgJyd9XCI+YDtcblxuICAgIGlmKHByb3BzLmlucHV0cyl7XG4gICAgICBwcm9wcy5pbnB1dHMuZm9yRWFjaChpID0+IHtcbiAgICAgICAgbGV0IHZhbHVlX2ZvdW5kID0gdmFsdWUgPyB2YWx1ZS5maW5kKHZhbCA9PiB2YWwuaWQgPT0gaS5pZCkgOiBudWxsO1xuICAgICAgICBsZXQgdiA9IHZhbHVlX2ZvdW5kIHx8ICcnO1xuICAgICAgICBsZXQgdG9vbHRpcCA9IFwiXCI7XG4gICAgICAgIGxldCBpY29uID0gXCJcIjtcblxuICAgICAgICBpZihpLnRvb2x0aXApe1xuICAgICAgICB0b29sdGlwID0gYFxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1pbmktaW5wdXQtc2VjdGlvbi0tdG9vbHRpcFwiPlxuICAgICAgICAgICAgICAgICAgICAke2kudG9vbHRpcH1cbiAgICAgICAgICAgICAgICAgIDwvZGl2PmA7XG4gICAgICAgIH1cblxuICAgICAgICBpZihpLmNvbG9ySWNvbil7XG4gICAgICAgICAgaWNvbj0gYDxkaXYgY2xhc3M9XCJtaW5pLWlucHV0LXNlY3Rpb24tLWljb24gJHtpLmNvbG9ySWNvbn1cIj4gPC9kaXY+YDtcbiAgICAgICAgfVxuXG5cblxuICAgICAgICBzdHIgKz0gYFxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1pbmktaW5wdXQtc2VjdGlvblwiPlxuICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJ0cnVuY2F0ZVwiPlxuICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICAgICAgICAgICAgICBpbnB1dC1pZD1cIiR7aS5pZCB8fCAnJyB9XCJcbiAgICAgICAgICAgICAgICAgICAgICBpbnB1dC1rZXk9XCIke2kua2V5IHx8IGkubGFiZWx9XCJcbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT1cIiR7di52YWx1ZSB8fCAnJ31cIj5cbiAgICAgICAgICAgICAgICAgICAgICR7aWNvbiB9XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtaW5pLWlucHV0LXNlY3Rpb24tLW5hbWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICR7aS5sYWJlbH1cbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICR7dG9vbHRpcH1cbiAgICAgICAgICAgIDwvZGl2PmA7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBzdHIgKz0gYDwvZGl2PmA7XG4gICAgcmV0dXJuIGRvbS5jcmVhdGVFbGVtZW50RnJvbUhUTUwoc3RyKTtcbiAgfSxcblxuXG5cbiAgLyoqXG4gICAqIENyZWEgQ2hlY2tib3gsIGNvbW8gZWxlbWVudG8gRG9tXG4gICAqXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIGNvbmZpZyBwYXJhIElucHV0XG4gICAqIEBwYXJhbSB7T2JqZWN0fSBkYXRhRGF5IC0gdmFsb3JlcyBkZSBpdGVtIHkgRGlhLCBvcGNpb25hbFxuICAgKiBAcmV0dXJuIHtPYmplY3R9IEVsZW1lbnRvIERvbSBkZWwgaW5wdXQgY3JlYWRvXG4gICAqL1xuICBjcmVhdGVJbnB1dENoZWNrYm94KHByb3BzLCBkYXRhRGF5KXtcbiAgICBsZXQgdmFsdWUgPSBcIlwiO1xuICAgIGlmKGRhdGFEYXkgJiYgZGF0YURheS52YWx1ZXMpe1xuICAgICAgdmFsdWUgPSB1dGlscy5nZXRWYXJCeVBhdGgoZGF0YURheSwgcHJvcHMudmFyTmFtZSk7XG4gICAgfVxuICAgIGxldCByID0gZG9tLmNyZWF0ZUVsZW1lbnRGcm9tSFRNTChgXG4gICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtc2VjdGlvblwiIGlucHV0LWtleT1cIiR7cHJvcHMua2V5IHx8ICcnfVwiPlxuICAgICAgICA8bGFiZWw+XG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIG5hbWU9XCIke3Byb3BzLmtleSB8fCAnJ31cIiBpbnB1dC1rZXk9XCIke3Byb3BzLmtleSB8fCAnJ31cIiAke3ZhbHVlPydjaGVja2VkJzonJ30+XG4gICAgICAgICAgJHtwcm9wcy5sYWJlbH1cbiAgICAgICAgPC9sYWJlbD5cbiAgICAgIDwvZGl2PmApO1xuXG4gICAgICByZXR1cm4gcjtcbiAgICB9LFxuICAgIFxuICBhZGRLZXlEb3duSW5wdXRFdmVudHMoaW5wdXQpe1xuICAgIGlucHV0LmFkZEV2ZW50TGlzdGVuZXIoXCJrZXlkb3duXCIsIGZ1bmN0aW9uKGV2ZW50KSB7XG4gICAgICBpZiAoZXZlbnQua2V5Q29kZSA9PT0gMTMpIHsgLy9FTlRFUlxuICAgICAgICBpbnB1dC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudChcInNhdmVNdWx0aUlucHV0XCIsIHtcbiAgICAgICAgICBidWJibGVzOiB0cnVlLFxuICAgICAgICAgIGNhbmNlbGFibGU6IGZhbHNlLFxuICAgICAgICB9KSk7XG4gICAgICB9XG4gICAgICBpZiAoZXZlbnQua2V5Q29kZSA9PT0gMjcpIHsgLy9FU0NcbiAgICAgICAgaW5wdXQuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoXCJjYW5jZWxNdWx0aUlucHV0XCIsIHtcbiAgICAgICAgICBidWJibGVzOiB0cnVlLFxuICAgICAgICAgIGNhbmNlbGFibGU6IGZhbHNlLFxuICAgICAgICB9KSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0sXG5cblxuICBjcmVhdGVDb250ZXh0TWVudSggeyBjb25maWcsIGV2dD1udWxsLCBwb3NpdGlvbiA9IG51bGwsIGRhdGU9bnVsbCwgaXRlbT1udWxsLCBzZWxlY3RlZCA9IFtdfSApe1xuXG4gICAgaWYoY29uZmlnLnRpbWVsaW5lLmNvbnRleHRNZW51ID09PSB1bmRlZmluZWQpIHJldHVybiB7ZWxlbTogbnVsbCwgaXNWaXNpYmxlOiBmYWxzZX0gO1xuXG4gICAgbGV0IGNsYXNzTmFtZSA9IFwiXCI7XG4gICAgbGV0IHN0eWxlID0gXCJcIjtcbiAgICBsZXQgbGVmdCA9IDA7XG4gICAgbGV0IHRvcCA9IDA7XG4gICAgbGV0IGlzVmlzaWJsZSA9IHRydWU7XG5cbiAgICBpZihldnQpe1xuICAgICAgbGVmdCA9IGV2dC5jbGllbnRYICsgNTtcbiAgICAgIHRvcCA9IGV2dC5jbGllbnRZICsgNSAtIGV2dC5jdXJyZW50VGFyZ2V0Lm9mZnNldFRvcDtcbiAgICB9XG5cbiAgICBpZihwb3NpdGlvbil7XG4gICAgICBzdHlsZSArPSBgdG9wOiAkeyB0b3AgfXB4OyBsZWZ0OiAkeyBsZWZ0IH1weGA7XG4gICAgfWVsc2V7XG4gICAgICBjbGFzc05hbWUgKz0gXCJjbS1oaWRlXCI7XG4gICAgICBpc1Zpc2libGUgPSBmYWxzZTtcbiAgICB9XG5cblxuICAgIGxldCBzdHJIdG1sID0gJyc7XG5cbiAgICBzdHJIdG1sICs9IGAgPGRpdiBjbGFzcz1cImNhcC1jb250ZXh0LW1lbnUtY29udGFpbmVyICR7Y2xhc3NOYW1lfVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FwLWNvbnRleHQtbWVudVwiIHN0eWxlPVwiJHtzdHlsZX1cIj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgIDwvZGl2PmA7XG5cbiAgICBsZXQgJGNvbnRleHRNZW51Q29udGFpbmVyID0gZG9tLmNyZWF0ZUVsZW1lbnRGcm9tSFRNTChzdHJIdG1sKTtcbiAgICBsZXQgJGNvbnRleHRNZW51ID0gJGNvbnRleHRNZW51Q29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoXCIuY2FwLWNvbnRleHQtbWVudVwiKTtcblxuICAgIGNvbmZpZy50aW1lbGluZS5jb250ZXh0TWVudS5vcHRpb25zLmZvckVhY2gob3B0aW9uID0+IHtcblxuICAgICAgaWYob3B0aW9uLnNob3dJZil7XG4gICAgICAgIGxldCBzaG93ID0gb3B0aW9uLnNob3dJZih7aXRlbSwgZGF0ZSwgc2VsZWN0ZWR9KTtcbiAgICAgICAgaWYoIXNob3cpIHJldHVybjtcbiAgICAgIH1cblxuXG4gICAgICBsZXQgaXNFbmFibGVkID0gdHJ1ZTtcbiAgICAgIGlmKG9wdGlvbi5lbmFibGVJZil7XG4gICAgICAgIGlzRW5hYmxlZCA9IG9wdGlvbi5lbmFibGVJZih7aXRlbSwgZGF0ZSwgc2VsZWN0ZWR9KTtcbiAgICAgIH1cblxuICAgICAgbGV0IG9wdGlvbkNsYXNzTmFtZSA9IFwiXCI7XG5cbiAgICAgIGlmKCFpc0VuYWJsZWQpe1xuICAgICAgICBvcHRpb25DbGFzc05hbWUgKz0gXCJpcy1kaXNhYmxlZFwiO1xuICAgICAgfVxuXG4gICAgICBsZXQgb3B0aW9uU3RySHRtbCA9IGBcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcC1jb250ZXh0LW1lbnUtLWl0ZW0gJHtvcHRpb25DbGFzc05hbWV9XCI+XG4gICAgICAgICAgJHtvcHRpb24ubGFiZWx9XG4gICAgICAgIDwvZGl2PmA7XG5cbiAgICAgIGxldCAkb3B0aW9uID0gZG9tLmNyZWF0ZUVsZW1lbnRGcm9tSFRNTChvcHRpb25TdHJIdG1sKTtcblxuICAgICAgaWYoaXNFbmFibGVkKXtcbiAgICAgICAgJG9wdGlvbi5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgKGV2dENsaWNrKSA9PiBvcHRpb24ub25DbGljayh7XG4gICAgICAgICAgY29uZmlnLCBldnQ6ZXZ0Q2xpY2ssIGRhdGUsIGl0ZW0sIHNlbGVjdGVkXG4gICAgICAgIH0pKTtcbiAgICAgIH1lbHNle1xuICAgICAgICAkb3B0aW9uLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCAoZXZ0Q2xpY2spID0+IHtcbiAgICAgICAgICBldnRDbGljay5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGV2dENsaWNrLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgJGNvbnRleHRNZW51LmFwcGVuZCgkb3B0aW9uKTtcbiAgICB9KTtcblxuICAgIHJldHVybiB7XG4gICAgICBlbGVtOiAkY29udGV4dE1lbnVDb250YWluZXIsXG4gICAgICBpc1Zpc2libGVcbiAgICB9O1xuXG4gIH0sXG5cbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFLQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUVBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBSEE7QUFLQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUhBO0FBT0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUhBO0FBT0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUhBO0FBT0E7QUFHQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBSEE7QUFPQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFIQTtBQU9BO0FBQ0E7QUFFQTtBQUNBO0FBR0E7QUFFQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBSEE7QUFRQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBSUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBSEE7QUFTQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFNQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQTdDQTtBQWlEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBN0NBO0FBZ0RBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBUUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUE3Q0E7QUFnREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQTdDQTtBQWdEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFJQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFJQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUtBO0FBSUE7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSkE7QUFIQTtBQVVBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQUhBO0FBU0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQU5BO0FBSEE7QUFZQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUFIQTtBQVNBO0FBQ0E7QUFPQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUhBO0FBVUE7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRkE7QUFLQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUFIQTtBQVNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBSEE7QUFTQTtBQUdBO0FBR0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFLQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQURBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFFQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQTlCQTtBQUNBO0FBZ0NBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUhBO0FBUUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBSEE7QUFRQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFEQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUZBO0FBS0E7QUFDQTtBQWh0RkEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/util/tableElements.js\n");
|
|
246
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _util_domUtils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util/domUtils */ \"./src/util/domUtils.js\");\n/* harmony import */ var _util_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/utils */ \"./src/util/utils.js\");\n/* harmony import */ var _util_dateUtils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/dateUtils */ \"./src/util/dateUtils.js\");\n/* harmony import */ var _styleUtils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./styleUtils */ \"./src/util/styleUtils.js\");\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n //------------------------ CREATE\n\n /**\n * Crea elemento Table\n * Contendrá los elementos que apareceran dentro de la tabla de planilla\n * Se Usa para :\n * - Agregar background con patron estilo tabla\n * - Agregar dayMouseOver, div que indica posicion de mouse\n * - Agregar DetailDay, para detalles de datos en tabla\n * - Agregar SelectedContainer, para dias seleccionados\n * - Agregar FloatBoxContainer, para visualizacion de datos en tabla\n *\n * @param {Object} config - Configuracion capibara\n * @return {Object} Elemento Dom creado\n */\n createAgTable(config) {\n let e = _util_domUtils__WEBPACK_IMPORTED_MODULE_0__[\"default\"].createElement(\"div\", {\n className: \"capibara\"\n });\n\n if (config.timeline.dark) {\n e.classList.add(\"dark-theme\");\n }\n\n if (config.timeline.nav.left.extend.isShow) {//e.classList.add(\"extended\");\n }\n\n if (config.timeline.header.extend.isShow) {\n e.classList.add(\"header-extended\");\n }\n\n return e;\n },\n\n /**\n * Crea y posiciona fondo de tabla\n * Este fondo contiene un patron de CSS que le da la apariencia de tabla\n * por lo cual se debe reposicionar segun la fecha de inicio, para hacer\n * calzar los fines de semana\n *\n * @param {Object} config - Configuracion capibara\n * @param {Object} [$elem = null] - Elemento background, si es null, lo crea\n * @return {Object} elemento Dom Background\n */\n createBackground(config, $elem = null) {\n let w = parseFloat(_util_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getCSSVariable(config, \"--day-width\"));\n let h = parseFloat(_util_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getCSSVariable(config, \"--item-height\"));\n let start = new Date(config.timeline.start);\n let end = new Date(config.timeline.end);\n end.setTime(end.getTime() + _util_dateUtils__WEBPACK_IMPORTED_MODULE_2__[\"default\"].dayInMilliseconds); // add 24 hours\n\n let dCorrected = new Date(start.valueOf() + start.getTimezoneOffset() * 60000);\n let weekDay = dCorrected.getDay();\n let diffWeekDays = (weekDay - 1) * w * -1;\n let diff_time = end.getTime() - start.getTime();\n let days = diff_time / _util_dateUtils__WEBPACK_IMPORTED_MODULE_2__[\"default\"].dayInMilliseconds;\n let rows = 0;\n config.data.forEach(d => {\n rows++;\n\n if (d.children && !d.hidden) {\n rows += d.children.length;\n }\n });\n $elem = $elem || _util_domUtils__WEBPACK_IMPORTED_MODULE_0__[\"default\"].createElement(\"div\", {\n className: \"background-grid\"\n });\n $elem.style[\"background-position\"] = diffWeekDays + 'px 0, 0 0, ' + diffWeekDays + 'px 0';\n $elem.style.width = days * w + \"px\";\n $elem.style.height = rows * h + 1 + \"px\";\n return $elem;\n },\n\n /**\n * Crea Plot Container Vertical\n * Los plots son elementos que agregan secciones de fondo en la planilla\n *\n * @param {Object} config - Configuracion capibara\n * @return {Object} Elemento Dom plotVerticalContainer\n */\n createPlotVerticalContainer(config) {\n let $elem = _util_domUtils__WEBPACK_IMPORTED_MODULE_0__[\"default\"].createElement(\"div\", {\n className: \"plot-vertical-container\"\n });\n return this.redrawPlotVerticalContainer(config, $elem);\n },\n\n createPlotHorizontalContainer(config) {\n let $elem = _util_domUtils__WEBPACK_IMPORTED_MODULE_0__[\"default\"].createElement(\"div\", {\n className: \"plot-horizontal-container\"\n });\n return this.redrawPlotHorizontalContainer(config, $elem);\n },\n\n /**\n * Recrea plotVerticalContainer, usando elemento existente\n * usa un elemento existente para usar la funcion para redibujar el elemento\n *\n * Los Plots se insertan como divs, con posicion especificada,\n * con ancho de dia\n *\n * @param {Object} config - Configuracion capibara\n * @param {Object} $elem - Elemento Dom donde crea plotVerticalContainer\n * @return {Object} Elemento Dom plotVerticalContainer\n */\n redrawPlotVerticalContainer(config, $elem) {\n $elem.innerHTML = \"\";\n\n if (config.timeline.plots && config.timeline.plots.vertical) {\n config.timeline.plots.vertical.forEach(p => {\n let diffDays = Math.floor(_util_dateUtils__WEBPACK_IMPORTED_MODULE_2__[\"default\"].diffDays(config.timeline.start, p.date));\n let dayWidth = parseFloat(_util_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getCSSVariable(config, \"--day-width\"));\n let left = diffDays * dayWidth;\n let plot = _util_domUtils__WEBPACK_IMPORTED_MODULE_0__[\"default\"].createElement(\"div\", {\n classNames: [\"plot-vertical\", p.className || ''],\n style: {\n 'margin-left': left + \"px\"\n }\n });\n $elem.appendChild(plot);\n });\n }\n\n return $elem;\n },\n\n redrawPlotHorizontalContainer(config, $elem) {\n $elem.innerHTML = \"\";\n\n if (config.timeline.plots && config.timeline.plots.horizontal) {\n config.timeline.plots.horizontal.forEach(p => {\n let item = _util_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getItemById(config, p.idNode, p.typeNode);\n let topPosition = _util_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getPositionByItem(config, item, \"parent\");\n let itemHeight = parseFloat(_util_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getCSSVariable(config, \"--item-height\"));\n let plot = _util_domUtils__WEBPACK_IMPORTED_MODULE_0__[\"default\"].createElement(\"div\", {\n classNames: [\"plot-horizontal\", p.className || ''],\n style: {\n 'margin-top': topPosition * itemHeight + \"px\"\n }\n });\n $elem.appendChild(plot);\n });\n }\n\n return $elem;\n },\n\n /**\n * Crea Corner Izquierdo\n * Se usa para :\n * - titulos relacionados con los datos del sidebar izquierdo\n * - titulos para inputs de header, absolute a la derecha\n * - boton para mostrar/ocultar sidebar izquierdo\n * - promedios\n *\n * @param {Object} config - Configuracion capibara\n * @return {Object} Elemento Dom Corner\n */\n createCorner(config, tab = null) {\n let $elem = _util_domUtils__WEBPACK_IMPORTED_MODULE_0__[\"default\"].createElement(\"div\", {\n className: \"corner\"\n });\n return this.redrawCorner($elem, config, tab);\n },\n\n redrawCorner($elem, config, tab = null) {\n let labelsInitialCorner = config.timeline.nav.left.initial.vars.filter(v => v.onlyTab == undefined || v.onlyTab && tab && v.onlyTab == tab.key).map(d => `<span class=\"item-col\">${d.label}</span>`).join(\"\");\n let labelsExtendCorner = config.timeline.nav.left.extend.vars.filter(v => v.onlyTab == undefined || v.onlyTab && tab && v.onlyTab == tab.key).map(d => `<span class=\"item-col\">${d.label}</span>`).join(\"\");\n let labelsHeaderExtend = config.timeline.header.extend.data.map(d => {\n if (d.isHidden) return \"\";\n let avgBox = '';\n let avg = '';\n\n if (d.average) {\n //let yesterday = new Date();\n //yesterday.setDate(yesterday.getDate() - 1)\n //let avg = utils.getAverage(d.data, yesterday, d.average);\n //avgBox = ` <div class=\"average-box\"> <span> <span class=\"symbol\">x̄</span> ${d.average} </span> </div> `;\n avg = ` <span class=\"average\"> ( <span> <span class=\"symbol\">x̄</span> ${d.average} </span>) </span> `;\n }\n\n ;\n return `<div class=\"input-title-container ${d.isPersistent ? 'persistent' : ''}\">\n ${avgBox}\n <span cap-tooltip=\"Promedio ${d.label} : ${d.average} ${d.suffix || ''}\" class=\"input-title ${d.color ? 'c-' + d.color + '--text' : ''} \">\n ${avg}\n ${d.label}\n </span>\n\n </div>`;\n }).join(\"\");\n let template = `<div>\n\n <button toggle-sidebar class=\"btn-icon btn-icon-raised btn-toggle-sidebar c-d-mobile-none\">\n <span>\n <svg style=\"width:24px;height:24px\" viewBox=\"0 0 24 24\">\n <path fill=\"currentColor\" d=\"M8.59,16.58L13.17,12L8.59,7.41L10,6L16,12L10,18L8.59,16.58Z\" />\n </svg>\n </span>\n </button>\n\n <div class=\"corner-title\">\n <span class=\"bottom-text\">\n ${config.timeline.corner.left.label}\n </span>\n </div>\n\n <div class=\"initial-corner\">\n <div class=\"initial-corner-title\">\n <span class=\"bottom-container hide\">\n ${config.timeline.corner.initial.label}\n </span>\n\n <div class=\"bottom-container\">\n ${labelsInitialCorner}\n </div>\n\n </div>\n </div>\n\n\n <div class=\"extend-corner\">\n <div class=\"ex-corner-title\">\n <span class=\"bottom-container hide\">\n ${config.timeline.corner.extend.label}\n </span>\n\n <div class=\"bottom-container\">\n ${labelsExtendCorner}\n </div>\n\n </div>\n </div>\n\n\n <div class=\"btn-nav-corner\">\n <div class=\"input-titles\">\n ${labelsHeaderExtend}\n </div>\n </div>\n\n <div class=\"progress-bar progress-bar-left hide-progress\"></div>\n\n </div>`;\n let r = _util_domUtils__WEBPACK_IMPORTED_MODULE_0__[\"default\"].createElementFromHTML(template);\n $elem.innerHTML = \"\";\n $elem.append(r);\n $elem.querySelector(\"[toggle-sidebar]\").addEventListener(\"click\", e => {\n r.dispatchEvent(new CustomEvent(\"toggleSidebar\", {\n bubbles: true,\n cancelable: false\n }));\n });\n return $elem;\n },\n\n /**\n * Crea Corner Derecho\n * Se usa para :\n * - titulos relacionados con los datos del sidebar Derecho\n *\n * @param {Object} config - Configuracion capibara\n * @return {Object} Elemento Dom corner\n */\n createCornerRight(config) {\n let str = `\n <div class=\"corner right\">\n <div class=\"corner-title\">\n <span>\n ${config.timeline.corner.right.label}\n </span>\n </div>\n <div class=\"progress-bar progress-bar-right hide-progress\"></div>\n </div>\n `;\n return _util_domUtils__WEBPACK_IMPORTED_MODULE_0__[\"default\"].createElementFromHTML(str);\n },\n\n /**\n * Crea Header Top\n * Se usa para :\n * - Manejo de tabs\n * - Botones de navegación y selección de fecha\n * - Boton toggle Dark mode\n * - Boton toggle Header extended\n *\n * @param {Object} config - Configuracion capibara\n * @return {Object} Elemento Dom\n */\n createHeaderTop(config, tabSelected = null) {\n return this.redrawHeaderTop(config, tabSelected, _util_domUtils__WEBPACK_IMPORTED_MODULE_0__[\"default\"].createElement(\"div\"));\n },\n\n redrawHeaderTop(config, tabSelected = null, $elem) {\n let str = `\n <div class=\"header-top\">`;\n\n if (config.timeline.tabs) {\n str += ` <div class=\"tab-select-container c-d-desktop-none c-d-mobile-flex\">\n <select class=\"tabs-select\" >`;\n config.timeline.tabs.forEach(tab => {\n if (!tab.isHidden) {\n str += ` <option value=\"${tab.id}\"> ${tab.label} </option>`;\n }\n });\n str += `</select>\n </div>`;\n str += ` <div class=\"tabs-container c-d-desktop-flex c-d-mobile-none\">`;\n config.timeline.tabs.forEach(tab => {\n if (!tab.isHidden) {\n str += ` <div\n class=\"tab ${tab.disabled ? 'disabled' : ''} ${tab == tabSelected ? 'active' : ''} ${tab.color}\"\n color=\"${tab.color}\"\n input-key=\"${tab.id}\"\n ${tab.tooltip ? 'cap-tooltip=\"' + tab.tooltip + '\"' : ''} >\n <span>${tab.label}</span>\n ${tab.icon || ''}\n </div>\n `;\n }\n });\n str += `</div>`;\n }\n\n if (tabSelected) {\n if (tabSelected.legends) {\n str += `<div class=\"legends-select-container c-d-desktop-none c-d-mobile-flex\">\n <select class=\"tabs-select\">`;\n tabSelected.legends.forEach(legend => {\n str += ` <option value=\"${legend.id}\"> ${legend.label} </option>`;\n });\n str += `</select>\n </div>`;\n str += `<div class=\"legends-container c-d-desktop-flex c-d-mobile-none\">`;\n tabSelected.legends.forEach(legend => {\n str += ` <div\n class=\"legend ${legend.active ? 'active' : ''}\"\n input-key=\"${legend.key}\"\n ${legend.tooltip ? `cap-tooltip=\"${legend.tooltip}\"` : ''} >\n <div class=\"icon-legend ${legend.color && legend.active ? legend.color + \"--background\" : ''} ${legend.shape}\"></div>\n <span>${legend.label}</span>\n </div>`;\n });\n str += `</div>`;\n }\n }\n\n str += `\n\n <div class=\"spacer\"></div>\n\n\n\n <button btn-prev class=\"btn-icon btn-icon-raised\">\n <span class=\"icon\">\n <svg style=\"width:24px;height:24px\" viewBox=\"0 0 24 24\">\n <path fill=\"currentColor\" d=\"M20,10V14H11L14.5,17.5L12.08,19.92L4.16,12L12.08,4.08L14.5,6.5L11,10H20Z\" />\n </svg>\n </span>\n\n <span class=\"loading-icon\">\n <svg version=\"1.1\" id=\"loader-1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\"\n width=\"32px\" height=\"32px\" viewBox=\"0 0 40 40\" enable-background=\"new 0 0 40 40\" xml:space=\"preserve\">\n <path opacity=\"0.2\" fill=\"#000\" d=\"M20.201,5.169c-8.254,0-14.946,6.692-14.946,14.946c0,8.255,6.692,14.946,14.946,14.946\n s14.946-6.691,14.946-14.946C35.146,11.861,28.455,5.169,20.201,5.169z M20.201,31.749c-6.425,0-11.634-5.208-11.634-11.634\n c0-6.425,5.209-11.634,11.634-11.634c6.425,0,11.633,5.209,11.633,11.634C31.834,26.541,26.626,31.749,20.201,31.749z\"/>\n <path fill=\"#000\" d=\"M26.013,10.047l1.654-2.866c-2.198-1.272-4.743-2.012-7.466-2.012h0v3.312h0\n C22.32,8.481,24.301,9.057,26.013,10.047z\">\n <animateTransform attributeType=\"xml\"\n attributeName=\"transform\"\n type=\"rotate\"\n from=\"0 20 20\"\n to=\"360 20 20\"\n dur=\"1.5s\"\n repeatCount=\"indefinite\"/>\n </path>\n </svg>\n </span>\n </button>\n\n\n <button btn-calendar class=\"btn-icon btn-icon-raised\">\n <span>\n <svg style=\"width:24px;height:24px\" viewBox=\"0 0 24 24\">\n <path fill=\"currentColor\" d=\"M19,19H5V8H19M16,1V3H8V1H6V3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3H18V1M17,12H12V17H17V12Z\" />\n </svg>\n </span>\n <span class=\"loading-icon\">\n <svg version=\"1.1\" id=\"loader-1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\"\n width=\"32px\" height=\"32px\" viewBox=\"0 0 40 40\" enable-background=\"new 0 0 40 40\" xml:space=\"preserve\">\n <path opacity=\"0.2\" fill=\"#000\" d=\"M20.201,5.169c-8.254,0-14.946,6.692-14.946,14.946c0,8.255,6.692,14.946,14.946,14.946\n s14.946-6.691,14.946-14.946C35.146,11.861,28.455,5.169,20.201,5.169z M20.201,31.749c-6.425,0-11.634-5.208-11.634-11.634\n c0-6.425,5.209-11.634,11.634-11.634c6.425,0,11.633,5.209,11.633,11.634C31.834,26.541,26.626,31.749,20.201,31.749z\"/>\n <path fill=\"#000\" d=\"M26.013,10.047l1.654-2.866c-2.198-1.272-4.743-2.012-7.466-2.012h0v3.312h0\n C22.32,8.481,24.301,9.057,26.013,10.047z\">\n <animateTransform attributeType=\"xml\"\n attributeName=\"transform\"\n type=\"rotate\"\n from=\"0 20 20\"\n to=\"360 20 20\"\n dur=\"1.5s\"\n repeatCount=\"indefinite\"/>\n </path>\n </svg>\n </span>\n </button>\n\n <button btn-next class=\"btn-icon btn-icon-raised\">\n <span>\n <svg style=\"width:24px;height:24px\" viewBox=\"0 0 24 24\">\n <path fill=\"currentColor\" d=\"M4,10V14H13L9.5,17.5L11.92,19.92L19.84,12L11.92,4.08L9.5,6.5L13,10H4Z\" />\n </svg>\n </span>\n <span class=\"loading-icon\">\n <svg version=\"1.1\" id=\"loader-1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\"\n width=\"32px\" height=\"32px\" viewBox=\"0 0 40 40\" enable-background=\"new 0 0 40 40\" xml:space=\"preserve\">\n <path opacity=\"0.2\" fill=\"#000\" d=\"M20.201,5.169c-8.254,0-14.946,6.692-14.946,14.946c0,8.255,6.692,14.946,14.946,14.946\n s14.946-6.691,14.946-14.946C35.146,11.861,28.455,5.169,20.201,5.169z M20.201,31.749c-6.425,0-11.634-5.208-11.634-11.634\n c0-6.425,5.209-11.634,11.634-11.634c6.425,0,11.633,5.209,11.633,11.634C31.834,26.541,26.626,31.749,20.201,31.749z\"/>\n <path fill=\"#000\" d=\"M26.013,10.047l1.654-2.866c-2.198-1.272-4.743-2.012-7.466-2.012h0v3.312h0\n C22.32,8.481,24.301,9.057,26.013,10.047z\">\n <animateTransform attributeType=\"xml\"\n attributeName=\"transform\"\n type=\"rotate\"\n from=\"0 20 20\"\n to=\"360 20 20\"\n dur=\"1.5s\"\n repeatCount=\"indefinite\"/>\n </path>\n </svg>\n </span>\n </button>\n\n <div class=\"spacer\"></div>\n\n <button toggle-dark class=\"btn-icon btn-header c-d-mobile-none ${config.timeline.withDarkToggle == false ? 'hide' : ''}\">\n <span class=\"hide-light\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\">\n <path fill=\"currentColor\" d=\"M13,4.8C9,4.8 9,19.2 13,19.2C17,19.2 22,16.5 22,12C22,7.5 17,4.8 13,4.8M13.1,17.2C12.7,16.8 12,15 12,12C12,9 12.7,7.2 13.1,6.8C16,6.9 20,8.7 20,12C20,15.3 15.9,17.1 13.1,17.2M8,10.5C8,11 7.9,11.5 7.9,12C7.9,12.2 7.9,12.4 7.9,12.6L2.4,14L1.9,12.1L8,10.5M2,7L9.4,5.1C9.2,5.4 9,5.8 8.9,6.3C8.8,6.6 8.7,7 8.6,7.4L2.5,8.9L2,7M8.2,15.5C8.3,16.2 8.5,16.9 8.7,17.4L2.4,19L1.9,17.1L8.2,15.5Z\" />\n </svg>\n </span>\n <span class=\"hide-dark\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\">\n <path fill=\"currentColor\" d=\"M13,4.8C9,4.8 9,19.2 13,19.2C17,19.2 22,16.5 22,12C22,7.5 17,4.8 13,4.8M13.1,17.2C12.7,16.8 12,15 12,12C12,9 12.7,7.2 13.1,6.8C16,6.9 20,8.7 20,12C20,15.3 16,17.1 13.1,17.2M2,5H9.5C9.3,5.4 9,5.8 8.9,6.4C8.8,6.6 8.8,6.8 8.7,7H2V5M8,11H2V9H8.2C8.1,9.6 8.1,10.3 8,11M8.7,17C8.9,17.8 9.2,18.4 9.6,19H2.1V17H8.7M8.2,15H2V13H8C8.1,13.7 8.1,14.4 8.2,15Z\" />\n </svg>\n </span>\n </button>`;\n\n if (config.timeline.header.extend.enabled !== false) {\n str += `<button toggle-header class=\"btn-icon btn-icon-raised\">\n <span>\n <svg style=\"width:24px;height:24px\" viewBox=\"0 0 24 24\">\n <path fill=\"currentColor\" d=\"M7.41,8.58L12,13.17L16.59,8.58L18,10L12,16L6,10L7.41,8.58Z\" />\n </svg>\n </span>\n </button>`;\n }\n\n str += ` <div class=\"button-right-container\"></div>\n </div>`;\n /*\n `\n <button toggle-sidebar-right class=\"btn-icon btn-icon-raised\">\n <span>\n <svg style=\"width:24px;height:24px\" viewBox=\"0 0 24 24\">\n <path fill=\"currentColor\" d=\"M15.41,16.58L10.83,12L15.41,7.41L14,6L8,12L14,18L15.41,16.58Z\" />\n </svg>\n </span>\n </button>\n </div>\n `;\n */\n\n let $r = _util_domUtils__WEBPACK_IMPORTED_MODULE_0__[\"default\"].createElementFromHTML(str);\n $elem.replaceWith($r);\n\n if (config.timeline.header.rightButtons) {\n let $buttonContainer = $r.querySelector(\".button-right-container\");\n config.timeline.header.rightButtons.forEach(button => {\n let str = `<button class=\"btn-icon btn-icon-raised\">\n <span>\n <svg style=\"width:24px;height:24px\" viewBox=\"0 0 24 24\">\n <path fill=\"currentColor\" d=\"${button.icon}\" />\n </svg>\n </span>\n </button>`;\n let $button = _util_domUtils__WEBPACK_IMPORTED_MODULE_0__[\"default\"].createElementFromHTML(str);\n $button.addEventListener(\"click\", evt => button.onClick({\n evt\n }));\n $buttonContainer.append($button);\n });\n }\n\n let $toggleDark = $r.querySelector(\"[toggle-dark]\");\n\n if ($toggleDark) {\n $toggleDark.addEventListener(\"click\", e => {\n $r.dispatchEvent(new CustomEvent(\"toggleDark\", {\n bubbles: true,\n cancelable: false\n }));\n });\n }\n\n let $btnCalendar = $r.querySelector(\"[btn-calendar]\");\n\n if ($btnCalendar) {\n $btnCalendar.addEventListener(\"click\", e => {\n let x = e.x;\n let y = e.y;\n $r.dispatchEvent(new CustomEvent(\"clickCalendarIcon\", {\n bubbles: true,\n cancelable: false,\n detail: {\n x,\n y\n }\n }));\n });\n }\n\n let $btnToggleHeader = $r.querySelector(\"[toggle-header]\");\n\n if ($btnToggleHeader) {\n $btnToggleHeader.addEventListener(\"click\", e => {\n $r.dispatchEvent(new CustomEvent(\"toggleHeader\", {\n bubbles: true,\n cancelable: false\n }));\n });\n }\n /*\n $r.querySelector(\"[toggle-sidebar-right]\").addEventListener(\"click\", e => {\n $r.dispatchEvent(new CustomEvent(\"toggleSidebarRight\", {\n bubbles: true,\n cancelable: false,\n }));\n });\n */\n\n\n $r.querySelector(\"[btn-prev]\").addEventListener(\"click\", e => {\n $r.dispatchEvent(new CustomEvent(\"headerPrev\", {\n bubbles: true,\n cancelable: false,\n detail: {\n originalEvt: e\n }\n }));\n });\n $r.querySelector(\"[btn-calendar]\").addEventListener(\"click\", e => {\n $r.dispatchEvent(new CustomEvent(\"headerCalendar\", {\n bubbles: true,\n cancelable: false,\n detail: {\n originalEvt: e\n }\n }));\n });\n $r.querySelector(\"[btn-next]\").addEventListener(\"click\", e => {\n $r.dispatchEvent(new CustomEvent(\"headerNext\", {\n bubbles: true,\n cancelable: false,\n detail: {\n originalEvt: e\n }\n }));\n });\n $r.querySelectorAll(\".legend\").forEach($legend => {\n $legend.addEventListener(\"click\", e => {\n let key = e.currentTarget.getAttribute(\"input-key\");\n\n if (key) {\n let legendSelected = tabSelected.legends.find(tab => tab.key === key);\n\n if (legendSelected) {\n $r.dispatchEvent(new CustomEvent(\"selectLegendHeader\", {\n bubbles: true,\n cancelable: false,\n detail: {\n legend: legendSelected,\n $legend\n }\n }));\n }\n }\n });\n });\n $r.querySelectorAll(\".tab:not(.disabled)\").forEach($tab => {\n $tab.addEventListener(\"click\", e => {\n let key = e.currentTarget.getAttribute(\"input-key\");\n\n if (key) {\n let tabSelected = config.timeline.tabs.find(tab => tab.id == key);\n\n if (tabSelected) {\n $r.dispatchEvent(new CustomEvent(\"selectTabHeader\", {\n bubbles: true,\n cancelable: false,\n detail: {\n tab: tabSelected\n }\n }));\n }\n }\n });\n });\n $r.querySelectorAll(\".tabs-select:not(.disabled)\").forEach($tab => {\n $tab.addEventListener(\"change\", e => {\n let key = parseFloat(e.currentTarget.value);\n\n if (key) {\n let tabSelected = config.timeline.tabs.find(tab => tab.id == key);\n\n if (tabSelected) {\n $r.dispatchEvent(new CustomEvent(\"selectTabHeader\", {\n bubbles: true,\n cancelable: false,\n detail: {\n tab: tabSelected\n }\n }));\n }\n }\n });\n });\n return $r;\n },\n\n /**\n * Crea Header\n * Se usa para :\n * - Mostrar fechas en header\n *\n * @param {Object} config - Configuracion capibara\n * @return {Object} Elemento Dom\n */\n createHeader(config) {\n let $elem = _util_domUtils__WEBPACK_IMPORTED_MODULE_0__[\"default\"].createElement(\"header\");\n return this.redrawHeader(config, $elem);\n },\n\n /**\n * Recrea Header, usado para redibujar\n * utiliza $elem como elemento dom donde recrearlo\n *\n * @param {Object} config - Configuracion capibara\n * @param {Object} $elem - Elemento Dom donde crea Header\n * @return {Object} Elemento Dom\n */\n redrawHeader(config, $elem) {\n let datesTree = _util_dateUtils__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getDateTreeRange(new Date(config.timeline.start), new Date(config.timeline.end));\n let str = `<div class=\"header-container\"> `;\n Object.keys(datesTree).forEach(keyY => {\n let year = datesTree[keyY];\n str += `<div class=\"agno-calendario\">\n <span class=\"agno hide\">${keyY}</span>\n <div class=\"meses\">`;\n Object.keys(year).forEach(keyM => {\n let month = datesTree[keyY][keyM];\n str += ` <div class=\"mes-calendario\">\n <div class=\"mes ${Object.keys(month).length < 3 ? 'mes-reduced mes-reduced-' + Object.keys(month).length : ''}\">\n <div class=\"mes-label\">\n ${_util_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getMonthByPosition(keyM)} ${keyY}\n </div>\n </div>\n <div class=\"dias\">`;\n Object.keys(month).forEach(keyD => {\n let day = datesTree[keyY][keyM][keyD];\n let isWeekend = day.isWeekend;\n let isToday = day.isToday;\n let date = _util_dateUtils__WEBPACK_IMPORTED_MODULE_2__[\"default\"].formatDate(day.Date);\n str += `<div class=\"dia-calendario ${isToday ? 'today' : ''} ${isWeekend ? 'weekend' : ''} ${config.timeline.dateSelectable ? 'is-clickeable' : ''}\" date=\"${date}\">${keyD}</div>`;\n });\n str += `</div></div>`;\n });\n str += `</div> </div>`;\n });\n str += `</div>`;\n $elem.innerHTML = \"\";\n $elem.append(_util_domUtils__WEBPACK_IMPORTED_MODULE_0__[\"default\"].createElementFromHTML(str));\n\n if (config.timeline.dateSelectable) {\n $elem.querySelectorAll(\".dia-calendario[date]\").forEach($dia => {\n $dia.addEventListener(\"contextmenu\", evt => {\n $elem.dispatchEvent(new CustomEvent(\"contextMenuDate\", {\n bubbles: true,\n cancelable: false,\n detail: {\n $elem: $dia,\n date: $dia.getAttribute(\"date\"),\n clientX: evt.clientX,\n clientY: evt.clientY\n }\n }));\n });\n $dia.addEventListener(\"click\", evt => {\n $elem.dispatchEvent(new CustomEvent(\"clickDate\", {\n bubbles: true,\n cancelable: false,\n detail: {\n $elem: $dia,\n date: $dia.getAttribute(\"date\")\n }\n }));\n });\n });\n }\n\n return $elem;\n },\n\n /**\n * Crea Header extended\n * Se usa para :\n * -Mostrar inputs y datos para fechas en header\n *\n * @param {Object} config - Configuracion capibara\n * @return {Object} Elemento Dom headerExtended\n */\n createHeaderExtended(config) {\n if (config.timeline.header.extend.enabled == false) return null;\n let dates = _util_dateUtils__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getDateRange(new Date(config.timeline.start), new Date(config.timeline.end));\n let str = `<div class=\"header-container-extended\">`;\n config.timeline.header.extend.data.forEach((d, d_index) => {\n if (d.isHidden) return \"\";\n let isPersistent = d.isPersistent;\n str += `<div class=\"input-list ${isPersistent ? 'persistent' : ''}\">`;\n str += dates.map(date => {\n let value = '';\n let isFuture = _util_dateUtils__WEBPACK_IMPORTED_MODULE_2__[\"default\"].isFuture(date);\n let isToday = _util_dateUtils__WEBPACK_IMPORTED_MODULE_2__[\"default\"].isToday(date);\n\n if (d.data) {\n let dataFounded = d.data.find(dataInput => {\n return _util_dateUtils__WEBPACK_IMPORTED_MODULE_2__[\"default\"].isSameDate(new Date(dataInput.date), date);\n });\n\n if (dataFounded) {\n value = dataFounded.value || '';\n }\n }\n\n if (d.editable === false || isFuture && d.editableFuture == false || isToday && d.editableToday == false) {\n return `<div>\n <span date=\"${date}\" \n index=\"${d_index}\" \n class=\"${date.varName} ${d.color ? 'c-' + d.color + '--text' : ''}\" > \n ${value} \n </span>\n </div>`;\n }\n\n let isDisabled = false;\n\n if (config.timeline.editable === false) {\n isDisabled = true;\n }\n\n return `<div class=\"dia-input\">\n <input \n date=\"${date}\" \n index=\"${d_index}\" \n class=\"header-input \n ${date.varName} ${d.color ? 'c-' + d.color + '--text' : ''}\" \n type=\"number\"\n ${isDisabled ? 'disabled' : ''} \n value=\"${value}\">\n </div>`;\n }).join(\"\");\n str += `</div>`;\n });\n str += `</div>`;\n let r = _util_domUtils__WEBPACK_IMPORTED_MODULE_0__[\"default\"].createElementFromHTML(str);\n r.querySelectorAll(\"input.header-input\").forEach(input => {\n input.addEventListener(\"input\", e => {\n let date = e.currentTarget.getAttribute(\"date\");\n let index = e.currentTarget.getAttribute(\"index\");\n let value = e.currentTarget.value;\n let typeData = config.timeline.header.extend.data[index]; //refresh config value\n\n let data = typeData.data.find(d => _util_dateUtils__WEBPACK_IMPORTED_MODULE_2__[\"default\"].isSameDate(new Date(d.date), new Date(date)));\n data.value = value;\n r.dispatchEvent(new CustomEvent(\"changeInputHeader\", {\n bubbles: true,\n cancelable: false,\n detail: {\n date: date,\n typeData: typeData,\n value: value\n }\n }));\n });\n });\n return r;\n },\n\n /**\n * Crear Sidebar Izquierdo\n * - Maneja items como arbol de 2 niveles (parent, children)\n * - El sidebar se divide en navList - InitialNav - extendedNav - BtnNav\n * - Se agrega itemDetail, para detalles de items\n *\n *\n * TODO: para evitar incrustar las ids en los inputs, se deben crear\n * los nodos uno por uno como elemento DOM, y agregarles los eventos directamente\n * ahora se hace seleccionando todos los inputs con querySelectorAll\n *\n * @param {Object} config - Configuracion capibara\n * @return {Object} Elemento Dom Sidebar Izquierdo\n */\n createNavLeft(config, tab = null) {\n let $elem = _util_domUtils__WEBPACK_IMPORTED_MODULE_0__[\"default\"].createElement(\"nav\", {\n className: \"left\"\n });\n return this.redrawNavLeft($elem, config, tab);\n },\n\n /**\n * Recrea Sidebar izquierdo, usado para redibujar\n * Utiliza $elem como elemento dom donde recrearlo\n *\n *\n * @param {Object} $elem - Elemento Dom donde crea el sidebar izquierdo\n * @param {Object} config - Configuracion capibara\n * @return {Object} Elemento Dom navLeft\n */\n redrawNavLeft($elem, config, tab = null) {\n let navList = \"\";\n let initialNavList = \"\";\n let exNavList = \"\";\n let btnNavList = \"\";\n let isDisabled = false;\n\n if (config.timeline.editable === false) {\n isDisabled = true;\n }\n\n config.data.forEach(d => {\n navList += `\n <div class=\"nav-item\">\n\n\n <div class=\"nav-item-container parent\">`;\n\n if (d.children) {\n navList += `<button class=\"tree-icon ${d.hidden ? '' : 'rotate'}\" item-id=\"${d.id || -1}\" type-node=\"${d.type || ''}\" >\n <span>\n <svg style=\"width:24px;height:24px\" viewBox=\"0 0 24 24\">\n <path fill=\"currentColor\" d=\"M7.41,8.58L12,13.17L16.59,8.58L18,10L12,16L6,10L7.41,8.58Z\" />\n </svg>\n </span>\n </button>`;\n }\n\n navList += `\n <div class=\"item-title truncate full-width ${d.clickeable ? 'clickeable' : ''} \" item-id=\"${d.id || -1}\" type-node=\"${d.type || ''}\" >\n ${d.label}\n </div>\n </div>`;\n\n if (d.children) {\n navList += `\n <div class=\"children-items ${d.hidden ? 'hide' : ''} \" child-list=\"${d.id || -1}\">`;\n d.children.forEach(c => {\n navList += `\n <div class=\"child-nav-item\">\n <div class=\"nav-item-container\">\n `;\n /*\n <span class=\"nav-item-icon\">\n <svg style=\"width:24px;height:24px\" viewBox=\"0 0 24 24\">\n <path fill=\"currentColor\" d=\"M19,15L13,21L11.58,19.58L15.17,16H4V4H6V14H15.17L11.58,10.42L13,9L19,15Z\" />\n </svg>\n </span>\n */\n\n navList += `\n ${c.light ? '<span class=\"light ' + (c.light ? c.light + '-light' : '') + '\"></span>' : ''}\n\n <div class=\"item-title ${c.clickeable ? 'clickeable' : ''}\" item-id=\"${c.id || -1}\" type-node=\"${c.type || ''}\">\n <div class=\"truncate\">\n ${c.label}\n </div>\n </div>\n </div>\n </div>`;\n });\n navList += `\n </div>`;\n }\n\n navList += `</div>`; //initial\n\n initialNavList += `<div class=\"initial-nav-item parent\">`;\n\n if (d.withNav) {\n config.timeline.nav.left.initial.vars.forEach(v => {\n let value = d.values[v.varName] ? d.values[v.varName] : '';\n\n if (v.round && !isNaN(value)) {\n value = _util_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].round(value, v.round);\n }\n\n if (v.input) {\n switch (v.input) {\n case 'hour':\n value = value.split(\":\");\n let hhValue = value[0];\n let mmValue = value[1];\n initialNavList += `\n <div class=\"item-col has-input\">\n <div class=\"hour-input\">\n <input type=\"number\"\n input-type=\"time\"\n max=\"23\"\n min=\"00\"\n input-key=\"${v.key || ''}\"\n item-id=\"${d.id || -1}\"\n type-node=\"${d.type || ''}\"\n value=\"${hhValue}\"\n ${isDisabled ? 'disabled' : ''}\n class=\"hh\">\n <span>:</span>\n <input type=\"number\"\n input-type=\"time\"\n max=\"59\"\n min=\"00\"\n input-key=\"${v.key || ''}\"\n item-id=\"${d.id || -1}\"\n type-node=\"${d.type || ''}\"\n value=\"${mmValue}\"\n ${isDisabled ? 'disabled' : ''}\n class=\"mm\">\n </div>\n </div>`;\n break;\n\n case 'text':\n case 'number':\n default:\n initialNavList += `\n <div class=\"item-col has-input\">\n <input \n type=\"${v.input || 'text'}\"\n input-type=\"${v.input || 'text'}\"\n input-key=\"${v.key || ''}\"\n item-id=\"${d.id || -1}\"\n type-node=\"${d.type || ''}\"\n ${isDisabled ? 'disabled' : ''}\n value=\"${value}\"/>\n </div>`;\n }\n } else {\n initialNavList += `\n <div class=\"item-col\">\n ${value}\n </div>`;\n }\n });\n }\n\n initialNavList += `\n </div>`;\n\n if (d.children) {\n d.children.forEach(c => {\n initialNavList += `<div class=\"child-initial-nav-item ${d.hidden ? 'hide' : ''}\" child=\"${d.id || -1}\">`;\n config.timeline.nav.left.initial.vars.forEach(v => {\n if (v.onlyTab && tab && v.onlyTab !== tab.key) return;\n let value = c.values[v.varName] ? c.values[v.varName] : '';\n\n if (v.round && !isNaN(value)) {\n value = _util_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].round(value, v.round);\n }\n\n if (v.input) {\n switch (v.input) {\n case 'hour':\n value = value.split(\":\");\n let hhValue = value[0];\n let mmValue = value[1];\n initialNavList += `\n <div class=\"item-col has-input\">\n <div class=\"hour-input\">\n <input type=\"number\"\n input-type=\"time\"\n max=\"23\"\n min=\"00\"\n input-key=\"${v.key || ''}\"\n item-id=\"${c.id || -1}\"\n type-node=\"${c.type || ''}\"\n value=\"${hhValue}\"\n ${isDisabled ? 'disabled' : ''}\n class=\"hh\">\n <span>:</span>\n <input type=\"number\"\n input-type=\"time\"\n max=\"59\"\n min=\"00\"\n input-key=\"${v.key || ''}\"\n item-id=\"${c.id || -1}\"\n type-node=\"${c.type || ''}\"\n value=\"${mmValue}\"\n ${isDisabled ? 'disabled' : ''}\n class=\"mm\">\n </div>\n </div>`;\n break;\n\n case 'text':\n case 'number':\n default:\n initialNavList += `\n <div class=\"item-col has-input\">\n <input\n type=\"${v.input || 'text'}\"\n input-type=\"${v.input || 'text'}\"\n input-key=\"${v.key || ''}\"\n item-id=\"${c.id || -1}\"\n type-node=\"${c.type || ''}\"\n ${isDisabled ? 'disabled' : ''}\n value=\"${value}\"/>\n </div>`;\n }\n } else {\n initialNavList += `\n <div class=\"item-col\">\n ${value}\n </div>`;\n }\n });\n initialNavList += `\n </div>`;\n });\n } //Ext\n\n\n exNavList += `<div class=\"ex-nav-item parent\">`;\n\n if (d.withExNav) {\n config.timeline.nav.left.extend.vars.forEach(v => {\n let value = d.values[v.varName] ? d.values[v.varName] : '';\n\n if (v.round && !isNaN(value)) {\n value = _util_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].round(value, v.round);\n }\n\n if (v.input) {\n switch (v.input) {\n case 'hour':\n value = value.split(\":\");\n let hhValue = value[0];\n let mmValue = value[1];\n exNavList += `\n <div class=\"item-col has-input\">\n <div class=\"hour-input\">\n <input type=\"number\"\n input-type=\"time\"\n max=\"23\"\n min=\"0\"\n input-key=\"${v.key || ''}\"\n item-id=\"${d.id || -1}\"\n type-node=\"${d.type || ''}\"\n value=\"${hhValue}\"\n ${isDisabled ? 'disabled' : ''}\n class=\"hh\">\n <span>:</span>\n <input type=\"number\"\n input-type=\"time\"\n max=\"59\"\n min=\"0\"\n input-key=\"${v.key || ''}\"\n item-id=\"${d.id || -1}\"\n type-node=\"${d.type || ''}\"\n value=\"${mmValue}\"\n ${isDisabled ? 'disabled' : ''}\n class=\"mm\">\n </div>\n </div>`;\n break;\n\n case 'text':\n case 'number':\n default:\n exNavList += `\n <div class=\"item-col has-input\">\n <input\n type=\"${v.input || 'text'}\"\n input-type=\"${v.input || 'text'}\"\n input-key=\"${v.key || ''}\"\n item-id=\"${d.id || -1}\"\n type-node=\"${d.type || ''}\"\n ${isDisabled ? 'disabled' : ''}\n value=\"${value}\"/>\n </div>`;\n }\n } else {\n exNavList += `\n <div class=\"item-col\">\n ${value}\n </div>`;\n }\n });\n }\n\n exNavList += `\n </div>`;\n\n if (d.children) {\n d.children.forEach(c => {\n exNavList += `<div class=\"child-ex-nav-item ${d.hidden ? 'hide' : ''}\" child=\"${d.id || -1}\">`;\n config.timeline.nav.left.extend.vars.forEach(v => {\n if (v.onlyTab && tab && v.onlyTab !== tab.key) return;\n let value = c.values[v.varName] ? c.values[v.varName] : '';\n\n if (v.round && !isNaN(value)) {\n value = _util_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].round(value, v.round);\n }\n\n if (v.input) {\n switch (v.input) {\n case 'hour':\n value = value.split(\":\");\n let hhValue = value[0];\n let mmValue = value[1];\n exNavList += `\n <div class=\"item-col has-input\">\n <div class=\"hour-input\">\n <input type=\"number\"\n input-type=\"time\"\n max=\"23\"\n min=\"0\"\n input-key=\"${v.key || ''}\"\n item-id=\"${c.id || -1}\"\n type-node=\"${c.type || ''}\"\n value=\"${hhValue}\"\n ${isDisabled ? 'disabled' : ''}\n class=\"hh\">\n <span>:</span>\n <input type=\"number\"\n input-type=\"time\"\n max=\"59\"\n min=\"0\"\n input-key=\"${v.key || ''}\"\n item-id=\"${c.id || -1}\"\n type-node=\"${c.type || ''}\"\n value=\"${mmValue}\"\n ${isDisabled ? 'disabled' : ''}\n class=\"mm\">\n </div>\n </div>`;\n break;\n\n case 'text':\n case 'number':\n default:\n exNavList += `\n <div class=\"item-col has-input\">\n <input \n type=\"${v.input || 'text'}\"\n input-type=\"${v.input || 'text'}\"\n input-key=\"${v.key || ''}\"\n item-id=\"${c.id || -1}\"\n type-node=\"${c.type || ''}\"\n ${isDisabled ? 'disabled' : ''}\n value=\"${value}\"/>\n </div>`;\n }\n } else {\n exNavList += `\n <div class=\"item-col\">\n ${value}\n </div>`;\n }\n });\n exNavList += `\n </div>`;\n });\n } //buttons\n\n\n btnNavList += `<div class=\"btn-nav-item parent\">\n <div class=\"btn-nav-item-content\">`;\n\n if (config.timeline.nav.left.buttons && config.timeline.nav.left.buttons.vars) {\n config.timeline.nav.left.buttons.vars.forEach(btn => {\n if (d.withBtnNav) {\n if (btn.icon) {\n btnNavList += `\n <button class=\"btn-shape ${btn.className}\" \n input-key=\"${btn.key || ''}\" \n item-id=\"${d.id || -1}\" \n ${isDisabled ? 'disabled' : ''}\n type-node=\"${d.type || ''}\">\n ${btn.icon ? btn.icon : ''}\n </button>`;\n }\n\n if (btn.iconFormatter) {\n btnNavList += `\n <button class=\"btn-shape ${btn.className}\"\n input-key=\"${btn.key || ''}\"\n item-id=\"${d.id || -1}\"\n ${isDisabled ? 'disabled' : ''}\n type-node=\"${d.type || ''}\">\n ${btn.iconFormatter ? btn.iconFormatter(d, btn) : ''}\n </button>`;\n }\n\n if (btn.shape) {\n btnNavList += `\n <button class=\"btn-shape btn-${btn.shape} ${btn.className}\" \n input-key=\"${btn.key || ''}\" \n item-id=\"${d.id || -1}\" \n ${isDisabled ? 'disabled' : ''}\n type-node=\"${d.type || ''}\">\n <span>\n ${btn.formatter ? btn.formatter(d, btn) : ''}\n </span>\n </button>`;\n }\n }\n });\n }\n\n btnNavList += `\n </div>\n </div>`;\n\n if (d.children) {\n d.children.forEach(c => {\n //buttons\n btnNavList += `<div class=\"btn-child-nav-item parent ${d.hidden ? 'hide' : ''}\" child=\"${d.id || -1}\">\n <div class=\"btn-nav-item-content\">`;\n\n if (config.timeline.nav.left.buttons && config.timeline.nav.left.buttons.vars) {\n config.timeline.nav.left.buttons.vars.forEach(btn => {\n if (btn.icon) {\n btnNavList += `\n <button class=\"btn-shape ${btn.className}\"\n input-key=\"${btn.key || ''}\" \n item-id=\"${c.id || -1}\" \n ${isDisabled ? 'disabled' : ''}\n type-node=\"${c.type || ''}\">\n ${btn.icon ? btn.icon : ''}\n </button>`;\n }\n\n if (btn.iconFormatter) {\n btnNavList += `\n <button class=\"btn-shape ${btn.className}\" \n input-key=\"${btn.key || ''}\" \n item-id=\"${c.id || -1}\" \n ${isDisabled ? 'disabled' : ''}\n type-node=\"${c.type || ''}\">\n ${btn.iconFormatter ? btn.iconFormatter(c, btn) : ''}\n </button>`;\n }\n\n if (btn.shape) {\n btnNavList += `\n <button class=\"btn-shape \n btn-${btn.shape} ${btn.className}\" \n input-key=\"${btn.key || ''}\" \n item-id=\"${c.id || -1}\" \n ${isDisabled ? 'disabled' : ''}\n type-node=\"${c.type || ''}\">\n <span>\n ${btn.formatter ? btn.formatter(c, btn) : ''}\n </span>\n </button>`;\n }\n });\n }\n\n btnNavList += `\n </div>\n </div>`;\n });\n }\n });\n let itemDetail = ` <div class=\"detail-nav-item hide\">\n ${this.getDetailNavItemContent()}\n </div>`;\n let str = `<div class=\"nav-container\">\n ${itemDetail}\n <div class=\"nav-item-list\">\n ${navList}\n </div>\n <div class=\"initial-nav-list\">\n ${initialNavList}\n </div>\n <div class=\"extend-nav-list\">\n ${exNavList}\n </div>\n <div class=\"btn-nav-list\">\n ${btnNavList}\n </div>\n </div>`;\n let navContainer = _util_domUtils__WEBPACK_IMPORTED_MODULE_0__[\"default\"].createElementFromHTML(str);\n $elem.innerHTML = \"\";\n $elem.append(navContainer); //detalle de nav-item\n\n $elem.querySelectorAll(\".item-title.clickeable\").forEach(i => {\n i.addEventListener(\"mouseover\", e => {\n let pos = _util_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].eventToPositionNavLeft(config, e, $elem);\n let itemId = i.getAttribute(\"item-id\");\n let item = _util_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getItemById(config, itemId);\n let typeNode = i.getAttribute(\"type-node\");\n i.dispatchEvent(new CustomEvent(\"overNavItem\", {\n bubbles: true,\n cancelable: false,\n detail: {\n originalEvt: e,\n item: item,\n type: typeNode,\n pos: pos\n }\n }));\n });\n }); //oculta detalle de nav-item, al salir del nav-item-list\n\n $elem.querySelectorAll(\".nav-item-list\").forEach(i => {\n i.addEventListener(\"mouseleave\", e => {\n i.dispatchEvent(new CustomEvent(\"leaveNavItem\", {\n bubbles: true,\n cancelable: false\n }));\n });\n }); //oculta detalle de nav-item-list, al salir de nav-item\n\n $elem.querySelectorAll(\".item-title:not(.clickeable)\").forEach(i => {\n i.addEventListener(\"mousemove\", e => {\n i.dispatchEvent(new CustomEvent(\"leaveNavItem\", {\n bubbles: true,\n cancelable: false\n }));\n });\n });\n $elem.querySelectorAll(\".item-title.clickeable\").forEach(i => {\n i.addEventListener(\"click\", e => {\n let itemId = i.getAttribute(\"item-id\");\n let typeNode = i.getAttribute(\"type-node\");\n let value = i.value;\n i.dispatchEvent(new CustomEvent(\"clickNavLeftItem\", {\n bubbles: true,\n cancelable: false,\n detail: {\n itemId: itemId,\n type: typeNode,\n value: value\n }\n }));\n });\n });\n $elem.querySelectorAll(\"input\").forEach(i => {\n i.addEventListener(\"change\", e => {\n let inputType = i.getAttribute(\"input-type\");\n let key = i.getAttribute(\"input-key\");\n let itemId = i.getAttribute(\"item-id\");\n let typeNode = i.getAttribute(\"type-node\");\n let item = _util_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getItemById(config, itemId);\n let value = i.value;\n\n if (inputType == \"time\") {\n let hh_input = i.parentElement.querySelector(\"input.hh\").value;\n let mm_input = i.parentElement.querySelector(\"input.mm\").value;\n mm_input = mm_input < 10 ? \"0\" + parseFloat(mm_input) : mm_input;\n i.parentElement.querySelector(\"input.mm\").value = mm_input;\n value = hh_input + \":\" + mm_input;\n }\n\n i.dispatchEvent(new CustomEvent(\"saveNavLeftInput\", {\n bubbles: true,\n cancelable: false,\n detail: {\n key: key,\n itemId: itemId,\n item: item,\n type: typeNode,\n value: value,\n tabSelected: tab\n }\n }));\n });\n });\n $elem.querySelectorAll(\"button.btn-shape\").forEach(i => {\n i.addEventListener(\"click\", e => {\n let key = i.getAttribute(\"input-key\");\n let itemId = i.getAttribute(\"item-id\");\n let typeNode = i.getAttribute(\"type-node\");\n i.dispatchEvent(new CustomEvent(\"clickNavLeftButton\", {\n bubbles: true,\n cancelable: false,\n detail: {\n key: key,\n itemId: itemId,\n type: typeNode\n }\n }));\n });\n });\n $elem.querySelectorAll(\"button.tree-icon\").forEach(i => {\n i.addEventListener(\"click\", e => {\n let itemId = i.getAttribute(\"item-id\");\n let typeNode = i.getAttribute(\"type-node\");\n let dataConfig = config.data.find(d => d.id == itemId);\n let $navItem = e.currentTarget.closest(\".nav-item\");\n let $children = $navItem.querySelector(\".children-items\");\n let itemsToHide = e.currentTarget.closest(\"nav.left\").querySelectorAll(\"[child='\" + itemId + \"'], [child-list='\" + itemId + \"']\");\n\n if ($children) {\n if ($children.classList.contains(\"hide\")) {\n e.currentTarget.classList.add('rotate');\n itemsToHide.forEach(i => i.classList.remove(\"hide\"));\n dataConfig.hidden = false;\n } else {\n e.currentTarget.classList.remove('rotate');\n itemsToHide.forEach(i => i.classList.add(\"hide\"));\n dataConfig.hidden = true;\n }\n }\n\n i.dispatchEvent(new CustomEvent(\"clickNavLeftTreeIcon\", {\n bubbles: true,\n cancelable: false,\n detail: {\n itemId: itemId,\n type: typeNode\n }\n })); //e.currentTarget.parent\n });\n });\n return $elem;\n },\n\n /**\n * Crea Html como String, para el detalle de items en el Sidebar Izquierdo\n *\n * @param {Object} [item={}] - Configuracion de item\n * @return {String} Html de ventana de detalle\n */\n getDetailNavItemContent(item = {}) {\n if (item.navOver == undefined) item.navOver = {};\n return `\n <div class=\"header-detail\">\n <div class=\"title truncate\">\n ${item.label || ''}\n </div>\n <div class=\"subtitle\">\n ${item.navOver.subtitle || ''}\n </div>\n <div class=\"header-chip ${item.light ? item.light + '-light' : ''} ${item.navOver.chip ? '' : 'hide'}\">\n ${item.navOver.chip || ''}\n </div>\n </div>\n\n <div class=\"detail-container\">\n ${item.navOver.content || ''}\n </div>`;\n },\n\n /**\n * Crea Sidebar Derecho\n * Usado principalmente para formulario de ingreso de datos para los dias\n * seleccionados\n *\n * @param {Object} config - Configuracion capibara\n * @param {Object} tab - Tab de referencia, para la creacion del formulario\n * @return {Object} {element, inputs}, element es el elemento Dom del sidebar,\n * inputs es un array de elementos Dom de cada input creado\n * (no son elementos html de tipo input)\n */\n createNavRight(config, tab = null) {\n var $elem = _util_domUtils__WEBPACK_IMPORTED_MODULE_0__[\"default\"].createElement(\"nav\", {\n className: \"right\"\n });\n return this.redrawNavRight(config, $elem, tab);\n },\n\n /**\n * Recrea Sidebar Derecho\n * Utiliza $elem como elemento dom donde recrearlo\n *\n * @param {Object} config - Configuracion capibara\n * @param {Object} $elem - Elemento Dom donde crea el sidebar derecho\n * @param {Object} tab - Tab de referencia, para la creacion del formulario\n * @param {Object} dataDay - datos del dia seleccionando, para autorrelleno de formulario\n * @param {Object} daySelected - datos del dia seleccionado\n * @param {String} daySelected.date - fecha del dia seleccionado\n * @param {Object} daySelected.item - Item de Sidebar relacionado al dia seleccionado\n * @param {Object} daySelected.pos - posicion de dia seleccionado\n * @return {Object} Elemento Dom Sidebar Derecho\n */\n redrawNavRight(config, $elem, tab = null, dataDay = null, daySelected = null) {\n let $navRight = $elem; //dom.createElement(\"nav\",{className:\"right\"});\n\n let $divContainer = _util_domUtils__WEBPACK_IMPORTED_MODULE_0__[\"default\"].createElement(\"div\", {\n className: \"nav-input-container\"\n });\n let $inputs = [];\n let checkboxInputs = [];\n let tabSelected = tab;\n\n if (tabSelected && tabSelected.inputs) {\n tabSelected.inputs.forEach(i => {\n if (i.disabled) return;\n let $input = this.createInput(i, dataDay, daySelected);\n\n if ($input) {\n $divContainer.appendChild($input);\n $inputs.push($input);\n\n if (i.type == \"checkbox\") {\n checkboxInputs.push($input);\n }\n }\n });\n } //manejo de eventos para inputs con showIf\n\n\n if (checkboxInputs) {\n checkboxInputs.forEach($c => {\n //obtiene key de checkbox\n let key = $c.getAttribute('input-key');\n let props = tabSelected.inputs.find(i => {\n return i.key == key;\n });\n let isChecked = false;\n\n if (dataDay) {\n isChecked = _util_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getVarByPath(dataDay, props.varName);\n } //obtiene inputs relacionados desde config para mostrar/ocultar\n\n\n let inputsToHide = tabSelected.inputs.filter(i => {\n return i.showIf && i.showIf == key;\n });\n let inputsToHideKeys = inputsToHide.map(i => i.key); //obtiene inputs del dom, filtrando con inputsToHide\n\n let $inputsHidden = $inputs.filter($i => {\n let inputKey = $i.getAttribute(\"input-key\");\n return inputsToHideKeys.indexOf(inputKey) > -1;\n }); //si hay inputs,\n\n if ($inputsHidden) {\n if (!isChecked) {\n $inputsHidden.forEach($i => {\n $i.classList.add(\"hide\");\n });\n }\n\n $c.addEventListener(\"input\", e => {\n $inputsHidden.forEach($i => {\n let fn = $c.querySelector(\"input[type='checkbox']\").checked ? \"remove\" : \"add\";\n $i.classList[fn](\"hide\");\n });\n });\n }\n });\n }\n\n $divContainer.appendChild(this.createNavRightbuttons()); // save cancel buttons\n\n $navRight.innerHTML = \"\";\n $navRight.appendChild($divContainer);\n return {\n element: $navRight,\n inputs: $inputs\n };\n },\n\n /**\n * Crea Corner inferior izquierdo, como titulo para footer\n *\n * @param {Object} config - Configuracion capibara\n * @return {Object} Elemento Dom Corner Footer\n */\n createCornerFooter(config) {\n if (config.timeline.footer === undefined || config.timeline.footer.enabled == false) return null;\n let str = '';\n\n if (config.timeline.footer) {\n str += `<div class=\"corner-footer\">\n <div class=\"corner-title\">\n <span>\n ${config.timeline.footer.label}\n </span>\n </div>\n </div>`;\n }\n\n return _util_domUtils__WEBPACK_IMPORTED_MODULE_0__[\"default\"].createElementFromHTML(str);\n },\n\n /**\n * Crea Footer para planilla\n * Inicialmente creado para totales\n *\n * @param {Object} config - Configuracion capibara\n * @return {Object} Elemento Dom Corner Footer\n */\n createFooter(config) {\n if (config.timeline.footer === undefined || config.timeline.footer.enabled == false) return null;\n let str = `\n <footer>\n <div class=\"footer-container\">\n `;\n config.timeline.footer.data.forEach(d => {\n str += `\n <div class=\"footer-item\">${d.value}</div>\n `;\n });\n str += `\n </div>\n </footer>\n `;\n return _util_domUtils__WEBPACK_IMPORTED_MODULE_0__[\"default\"].createElementFromHTML(str);\n },\n\n /**\n * Crea Footer para planilla\n * Inicialmente creado para totales\n *\n * @param {Object} config - Configuracion capibara\n * @param {Object[]} selected - array de objetos, de dias seleccionados\n * @return {Object} Elemento Dom Corner Footer\n */\n createSelectBoard(config, selected) {\n let $elem = _util_domUtils__WEBPACK_IMPORTED_MODULE_0__[\"default\"].createElement(\"div\", {\n className: \"select-container\"\n });\n return this.redrawSelectBoard($elem, selected);\n },\n\n /**\n * Crea linea vertical para fecha Actual\n *\n * @param {Object} config - Configuracion capibara\n * @return {Object} Elemento Dom Corner Footer\n */\n createTodayLine(config) {\n return this.redrawTodayLine(config, _util_domUtils__WEBPACK_IMPORTED_MODULE_0__[\"default\"].createElement(\"div\", {\n className: \"today-line\"\n }));\n },\n\n /**\n * Recrea linea vertical para fecha Actual\n * si el elemento $elem no es enviado, se crea un nuevo elemento\n *\n * Si el dia actual no esta dentro del rango de fechas del config,\n * deshabilita la linea con la clase css .disable-line\n *\n * @param {Object} config - Configuracion capibara\n * @param {Object} [$elem=null] - Elemento Dom donde recrea la linea, si es null, la crea\n * @return {Object} Elemento Dom Corner Footer\n */\n redrawTodayLine(config, $elem = null) {\n let endTime = new Date(config.timeline.end).getTime();\n let todayTime = new Date().getTime();\n if ($elem == null) $elem = _util_domUtils__WEBPACK_IMPORTED_MODULE_0__[\"default\"].createElement(\"div\", {\n className: \"today-line\"\n });\n\n if (endTime < todayTime) {\n $elem.classList.add(\"disable-line\");\n } else {\n $elem.classList.remove(\"disable-line\");\n }\n\n let diffDays = Math.floor(_util_dateUtils__WEBPACK_IMPORTED_MODULE_2__[\"default\"].diffDays(config.timeline.start, _util_dateUtils__WEBPACK_IMPORTED_MODULE_2__[\"default\"].formatDate(new Date())));\n let dayWidth = parseFloat(_util_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getCSSVariable(config, \"--day-width\"));\n let diff = diffDays * dayWidth;\n diff += dayWidth / 2 - 2; // para centrar linea\n\n Object.assign($elem.style, {\n 'margin-left': diff + \"px\"\n });\n return $elem;\n },\n\n /**\n * Crea elemento FloatBox, que contiene los datos que se muestra en la tabla\n *\n * @param {Object} config - Configuracion capibara\n * @param {Object} tab - Tab de referencia, para mostrar datos configurados por tab\n * @return {Object} Elemento Dom Corner Footer\n */\n createFloatBox(config, tab) {\n let $container = _util_domUtils__WEBPACK_IMPORTED_MODULE_0__[\"default\"].createElement(\"div\", {\n className: \"float-box-container\"\n });\n return this.redrawFloatBox(config, tab, $container);\n },\n\n /**\n * Recrea elemento FloatBox, que contiene los datos que se muestra en la tabla\n * Se usa principalmente para mostrar datos en la tabla de la planilla\n * los muestra de manera flotante, calculando el Top y el Left segun la poscion\n *\n * Se consideran los elementos padres ocultos, para ocultar los datos\n *\n * Se insertan los elementos FloatBox, como elemento con datos de un item y dia especifico\n *\n *\n * @param {Object} config - Configuracion capibara\n * @param {Object} tab - Tab de referencia, para mostrar datos configurados por tab\n * @return {Object} Elemento Dom Corner Footer\n */\n redrawFloatBox(config, tab, $container) {\n $container.innerHTML = \"\";\n let tabSelected = tab || null;\n config.data.forEach(de => {\n //parent Data\n de.children.forEach(ds => {\n ds.data.forEach(data => {\n if ((!data.message || data.message.value == null) && Object.entries(data.values).length === 0) return; //children Data\n\n let position = this.getPositionFloatBox(config, data, ds);\n let className = '';\n\n if (data.message && data.message.value) {\n className += 'has-message ';\n }\n\n if (data.errors && data.errors.length > 0) {\n className += 'has-errors ';\n }\n\n if (de.hidden) {\n className += 'hide ';\n }\n\n let str = `\n <div class=\"float-box ${className} ${de.hidden ? 'hide' : ''}\"\n style=\"${position ? position : ''}\"\n item-id=\"${ds.id || -1}\"\n type-node=\"${ds.type || ''}\"> `;\n\n if (tabSelected && tabSelected.floatBox) {\n //numeros en el floatBox\n if (tabSelected.floatBox.nums) {\n tabSelected.floatBox.nums.forEach(n => {\n if (tabSelected.legends && n.tabKey) {\n let legend = tabSelected.legends.find(l => l.key == n.tabKey);\n if (legend && !legend.active) return;\n }\n\n let dataFloatBox = null;\n let className = \"\";\n\n if (n.varName) {\n dataFloatBox = _util_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getVarByPath(data.values, n.varName);\n }\n\n let showIf = true;\n\n if (n.varShow) {\n showIf = Boolean(_util_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getVarByPath(data.values, n.varShow));\n dataFloatBox = dataFloatBox || \"\";\n }\n\n let hideIf = false;\n\n if (n.varHide) {\n hideIf = Boolean(_util_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getVarByPath(data.values, n.varHide));\n }\n\n if (n.shape) {\n className += \"shape-\" + n.shape;\n }\n\n if (dataFloatBox !== null && showIf && !hideIf) {\n str += `<span class=\"data ${n.color} ${className}\">${dataFloatBox}</span>`;\n }\n });\n } //puntos en el floatBox\n\n\n if (tabSelected.floatBox.dots) {\n str += `\n <div class=\"dot-container-middle\">`;\n tabSelected.floatBox.dots.forEach(n => {\n if (_util_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getVarByPath(data.values, n.varName) !== null) {\n str += `\n <div class=\"dot ${n.color} ${n.shape || ''}\"></div>`;\n }\n });\n str += `\n </div>`;\n }\n }\n\n str += `\n </div>`;\n let $elem = _util_domUtils__WEBPACK_IMPORTED_MODULE_0__[\"default\"].createElementFromHTML(str);\n $elem.addEventListener(\"mouseover\", e => {\n $elem.dispatchEvent(new CustomEvent(\"mouseOverFloatBox\", {\n bubbles: true,\n cancelable: false,\n detail: {\n item: ds,\n data: data,\n originalEvt: e\n }\n }));\n });\n $elem.addEventListener(\"click\", e => {\n $elem.dispatchEvent(new CustomEvent(\"clickFloatBox\", {\n bubbles: true,\n cancelable: false,\n detail: {\n item: ds,\n data: data,\n originalEvt: e\n }\n }));\n });\n $container.appendChild($elem);\n });\n });\n });\n return $container;\n },\n\n /**\n * Crea DetailDay, detalle de valores de item y Dia\n * se usa para:\n * - Muestra nombre de item y detalles\n * - Muestra capsulas de datos\n * - Muestra Pills, pildoras de datos resumidos\n * - Muestra alertas\n * - Muestra Mensaje\n *\n * @param {Object} config - Configuracion capibara\n * @param {Object} item - Item relacionado\n * @param {Object} dataDay - valores de item y Dia\n * @param {Boolean} [onlyStringContent = false] - para escoger si devuelve String o DomElement\n * @return {String|Object} Elemento como String o DomElement\n */\n createDetailDay(config, item, dataDay, onlyStringContent = false) {\n let str = `\n <div class=\"header-detail\">\n <div class=\"title truncate\">\n ${item.label || ''}\n </div>\n <div class=\"subtitle\">\n ${dataDay ? _util_dateUtils__WEBPACK_IMPORTED_MODULE_2__[\"default\"].formatDateReadeable(dataDay.date) : ''}\n </div>\n </div>\n\n <div class=\"list-detail list\">`; //CAPSULES\n\n if (dataDay) {\n config.timeline.detailDay.capsules.forEach(cap => {\n //para comprobar si tiene datos, se obtiene el primer valor\n //de la lista de values de una capsula\n let hasValues = cap.values.filter(v => _util_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getVarByPath(dataDay.values, v.varName)).length > 0;\n let hideIf = false;\n\n if (cap.hideIf) {\n hideIf = Boolean(_util_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getVarByPath(dataDay.values, cap.hideIf));\n }\n\n if (hasValues && !hideIf) {\n str += `\n <div class=\"item-detail ${cap.color || ''}\">\n\n <div class=\"left-icon ${cap.shape || ''} \"></div>\n\n <div class=\"name\">\n <span>\n ${cap.title || ''}\n </span>\n </div>`;\n str += `\n <div class=\"item-description\"> `;\n cap.values.forEach(v => {\n let value = _util_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getVarByPath(dataDay.values, v.varName);\n\n if (cap.isLabeledArray) {\n value.forEach(valueLabeled => {\n let outputValue = null;\n\n if (valueLabeled.value) {\n outputValue = v.round ? _util_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].round(valueLabeled.value, v.round) : valueLabeled.value;\n }\n\n if (v.formatter) {\n outputValue = v.formatter(valueLabeled);\n }\n\n str += valueLabeled.value == null ? '' : `\n <div class=\"desc\">\n <span class=\"label\">\n ${valueLabeled.label}\n </span>\n ${v.prefix || ''}\n ${outputValue}\n ${valueLabeled.suffix || v.suffix || ''}\n </div>`;\n });\n } else {\n let outputValue = v.round ? _util_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].round(value, v.round) : value;\n str += value == null ? '' : `\n <div class=\"desc\">\n ${v.prefix || ''}\n ${outputValue}\n ${v.suffix || ''}\n </div>`;\n }\n });\n str += `\n </div>`;\n str += `\n </div>`; // end .item-detail\n }\n });\n }\n\n str += `\n </div>`; // list-detail\n //PILLS\n\n if (config.timeline.detailDay.pillsVarName && dataDay && dataDay.values[config.timeline.detailDay.pillsVarName]) {\n str += `\n <div class=\"elements-detail\">\n <div class=\"name\"> ${config.timeline.detailDay.pillsTitle} </div>\n <div class=\"elements-list\">`;\n dataDay.values[config.timeline.detailDay.pillsVarName].forEach(e => {\n str += `\n <div class=\"element-detail\">\n <b>${e.label}</b>\n ${e.value}\n </div>`;\n });\n str += `\n </div>\n </div>`; //end .element-detail > .element-list\n } //str += `</div>`;\n\n\n if (dataDay && dataDay.errors && dataDay.errors.length > 0) {\n dataDay.errors.forEach(err => {\n let alertIcon = `<span class=\"alert-icon\">\n <svg style=\"width:24px;height:24px\" viewBox=\"0 0 24 24\">\n <path fill=\"currentColor\" d=\"M13 14H11V9H13M13 18H11V16H13M1 21H23L12 2L1 21Z\" />\n </svg>\n </span>`;\n str += `\n <div class=\"alert\">\n ${alertIcon}\n ${err.label}\n </div>`;\n });\n }\n\n if (dataDay && dataDay.message && dataDay.message.value) {\n str += `\n <div class=\"msj-container\">\n <div class=\"msj\">\n ${dataDay.message.value || ''}\n </div>\n <div class=\"msj-detail\">\n <span class=\"email\"> ${dataDay.message.author || ''} </span>\n <span class=\"date\"> ${dataDay.message.date ? _util_dateUtils__WEBPACK_IMPORTED_MODULE_2__[\"default\"].formatDateReadeable(new Date(dataDay.message.date)) : ''} </span>\n </div>\n </div>`;\n }\n\n let strContainer = `<div class=\"detail-day dd-hide\"> ${str} </div>`;\n if (onlyStringContent) return str;\n return _util_domUtils__WEBPACK_IMPORTED_MODULE_0__[\"default\"].createElementFromHTML(strContainer);\n },\n\n /**\n * Recrea Background, que es el fondo grid, como tabla\n *\n * @param {Object} config - Configuracion capibara\n * @param {Object} $elem - Elemento relacionado, donde se cre el background\n * @return {Object} Elemento Dom Corner Footer\n */\n redrawBackground(config, $elem) {\n return this.createBackground(config, $elem);\n },\n\n /**\n * Recrea HTML de detailDay\n *\n * @param {Object} config - Configuracion capibara\n * @param {Object} item - Item relacionado\n * @param {Object} dataDay - valores de item y Dia\n * @return {String} Elemento como String, de detailDay\n */\n redrawDetailDay(config, item, dataDay) {\n return this.createDetailDay(config, item, dataDay, true);\n },\n\n /**\n * Reposiciona FloatBox\n * verifica si el parent esta desplegado, para ocultar los datos\n *\n * Solo actualiza las alturas de los floatbox\n * no recrea los floatbox, es mas optimo\n *\n * @param {Object} config - Configuracion capibara\n * @param {Object} item - Item relacionado\n */\n repositionFloatBox(config, $floatBoxContainer) {\n $floatBoxContainer.querySelectorAll(\".float-box\").forEach($f => {\n let itemId = $f.getAttribute(\"item-id\");\n let itemHeight = parseFloat(_util_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getCSSVariable(config, \"--item-height\"));\n let item, parent;\n ({\n item,\n parent\n } = _util_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getItemById(config, itemId, \"child\", true));\n\n if (item) {\n let top = _util_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getPositionByItem(config, item);\n $f.style.top = top * itemHeight + \"px\";\n\n if (parent && parent.hidden) {\n $f.classList.add(\"hide\");\n } else if ($f.classList.contains(\"hide\")) {\n $f.classList.remove(\"hide\");\n }\n }\n });\n },\n\n /**\n * Recrea indicadores de dias seleccionados\n *\n * @param {Object} $elem - Elemento Dom donde crea los elementos seleccionados\n * @param {Object[]} selected - Array con los dias seleccionados\n * @return {Object} Elemento Dom que contiene los indicadores de dias seleccionados\n */\n redrawSelectBoard($elem, selected) {\n $elem.innerHTML = \"\";\n let hasNumber = true;\n\n if (selected) {\n if (selected.length == 1) hasNumber = false;\n selected.forEach(s => {\n let attributes = [];\n\n if (hasNumber) {\n attributes.push({\n name: \"cap-badge\",\n value: s.index\n });\n }\n\n let $s = _util_domUtils__WEBPACK_IMPORTED_MODULE_0__[\"default\"].createElement(\"div\", {\n className: \"selected-day\",\n attributes\n });\n $s.style.left = s.pos.left + \"px\";\n $s.style.top = s.pos.top + \"px\";\n $elem.append($s);\n });\n }\n\n return $elem;\n },\n\n /**\n * Obtiene String con estilos CSS de la posicion de un floatBox\n * calculado segun item y fecha de los valores\n *\n * @param {Object} config - Configuracion capibara, para ver fecha de inicio\n * @param {Object} data - Datos del dia indicado\n * @param {Object} item - Item relacionado\n * @return {String} String CSS top y left , para posicionar floatBox en table\n */\n getPositionFloatBox(config, data, item) {\n let left = _util_dateUtils__WEBPACK_IMPORTED_MODULE_2__[\"default\"].diffDays(config.timeline.start, data.date);\n let top = _util_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getPositionByItem(config, item);\n let dayWidth = parseFloat(_util_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getCSSVariable(config, \"--day-width\"));\n let itemHeight = parseFloat(_util_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getCSSVariable(config, \"--item-height\"));\n left *= dayWidth;\n top *= itemHeight;\n return \"top: \" + top + \".5px; left:\" + left + \".5px;\";\n },\n\n /**\n * Crea Boton como elemento Dom\n *\n * @param {Object} props - propiedades para boton\n * @param {String} props.className - classes css para boton\n * @param {*} props.key - key para identificar a boton\n * @param {String} props.label - Texto boton\n * @return {Object} Elemento Dom del boton creado\n */\n createButton(props) {\n return _util_domUtils__WEBPACK_IMPORTED_MODULE_0__[\"default\"].createElementFromHTML(`\n <button class=\"${props.className || ''} input-key=\"${props.key || ''}\">\n ${props.label || ''}\n </button>`);\n },\n\n /**\n * Crea Botones de guardar y cancelar los datos de formulario del sidebar derecho\n *\n * @return {Object} Elemento Dom del botones creados\n */\n createNavRightbuttons() {\n let saveBtn = this.createButton({\n label: 'Guardar',\n className: 'btn-raised'\n });\n let cancelBtn = this.createButton({\n label: 'Cancelar',\n className: 'btn-outline'\n });\n let btnSection = _util_domUtils__WEBPACK_IMPORTED_MODULE_0__[\"default\"].createElementFromHTML(`<div class=\"button-section\"></div>`);\n btnSection.appendChild(saveBtn);\n btnSection.appendChild(cancelBtn);\n saveBtn.addEventListener(\"click\", e => {\n saveBtn.dispatchEvent(new CustomEvent(\"saveMultiInput\", {\n bubbles: true,\n cancelable: false\n }));\n });\n cancelBtn.addEventListener(\"click\", e => {\n cancelBtn.dispatchEvent(new CustomEvent(\"cancelMultiInput\", {\n bubbles: true,\n cancelable: false\n }));\n });\n return btnSection;\n },\n\n /**\n * Crea Input como elemento Dom\n *\n * @param {Object} props - config para Input\n * @param {Object} [dataDay = null] - valores de item y Dia, opcional\n * @param {Object} [daySelected = null] - datos del dia seleccionado\n * @return {Object} Elemento Dom del input creado\n */\n createInput(props, dataDay = null, daySelected = null) {\n let r = null;\n if (props.isHidden) return r;\n\n switch (props.type) {\n case \"inputList\":\n r = this.createInputList(props, dataDay, daySelected);\n break;\n\n case \"title\":\n r = this.createTitle(props);\n break;\n\n case \"number\":\n r = this.createInputNumber(props, dataDay);\n break;\n\n case \"float\":\n r = this.createInputFloat(props, dataDay);\n break;\n\n case \"message\":\n r = this.createInputMessage(props, dataDay);\n break;\n\n case \"textarea\":\n r = this.createInputTextArea(props, dataDay);\n break;\n\n case \"checkbox\":\n r = this.createInputCheckbox(props, dataDay);\n break;\n\n case \"input-box\":\n r = this.createInputBox(props, dataDay);\n break;\n\n case \"time\":\n r = this.createInputTime(props, dataDay);\n break;\n\n case \"text\":\n default:\n r = this.createInputText(props, dataDay);\n }\n\n return r;\n },\n\n /**\n * Crea Input con formato Hora, como elemento Dom\n *\n * Usa 2 inputs, hora y minutos\n *\n * el value que interpreta es String HH:MM\n *\n * @param {Object} props - config para Input\n * @param {Object} [dataDay = null] - valores de item y Dia, opcional\n * @return {Object} Elemento Dom del input creado\n */\n createInputTime(props, dataDay) {\n let hhValue = '';\n let mmValue = '';\n\n if (dataDay && dataDay.values) {\n let value = _util_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getVarByPath(dataDay, props.varName);\n\n if (value) {\n value = value.split(\":\");\n hhValue = value[0];\n mmValue = value[1];\n }\n }\n\n let r = _util_domUtils__WEBPACK_IMPORTED_MODULE_0__[\"default\"].createElementFromHTML(`\n <div class=\"input-section\" input-key=\"${props.key || ''}\">\n <span class=\"text-subtitle d-block\">\n ${props.label || ''}\n </span>\n <div class=\"time\">\n <input type=\"number\"\n class=\"hour\"\n id=\"test\"\n placeholder=\"00\"\n min=\"0\"\n max=\"24\"\n value=\"${hhValue}\">\n <span class=\"symbol\">:</span>\n <input type=\"number\"\n class=\"minutes\"\n placeholder=\"00\"\n min=\"0\"\n max=\"59\"\n value=\"${mmValue}\">\n </div>\n </div>`);\n let hh = r.querySelector('.hour');\n let mm = r.querySelector('.minutes');\n hh.addEventListener(\"input\", e => {\n hh.dispatchEvent(new CustomEvent(\"changeTimeInputHH\", {\n bubbles: true,\n cancelable: false,\n detail: {\n key: props.key,\n value: e.srcElement.value\n }\n }));\n });\n mm.addEventListener(\"input\", e => {\n mm.dispatchEvent(new CustomEvent(\"changeTimeInputMM\", {\n bubbles: true,\n cancelable: false,\n detail: {\n key: props.key,\n value: e.srcElement.value\n }\n }));\n });\n this.addKeyDownInputEvents(hh);\n this.addKeyDownInputEvents(mm);\n return r;\n },\n\n /**\n * Crea Title como elemento Dom\n * Se configura como input, pero no devuelve datos, es un texto\n *\n * @param {Object} props - config para Input\n * @return {Object} Elemento Dom del input creado\n */\n createTitle(props) {\n return _util_domUtils__WEBPACK_IMPORTED_MODULE_0__[\"default\"].createElementFromHTML(`\n <div class=\"input-section\" input-key=\"${props.key || ''}\">\n <span class=\"text-title \">\n ${props.label}\n </span>\n </div>`);\n },\n\n /**\n * Crea Input tipo Numerico como elemento Dom\n *\n * @param {Object} props - config para Input\n * @param {Object} dataDay - valores de item y Dia, opcional\n * @return {Object} Elemento Dom del input creado\n */\n createInputNumber(props, dataDay) {\n let value = \"\";\n\n if (dataDay && dataDay.values) {\n value = _util_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getVarByPath(dataDay, props.varName);\n }\n\n value = value || '';\n let elem = _util_domUtils__WEBPACK_IMPORTED_MODULE_0__[\"default\"].createElementFromHTML(`\n <div class=\"input-section\" input-key=\"${props.key || ''}\">\n <span class=\"text-subtitle d-block\">\n ${props.label}\n </span>\n <input type=\"number\"\n class=\"nav-input\"\n value=\"${value}\">\n </div>`);\n let inputElem = elem.querySelector(\"input\");\n this.addKeyDownInputEvents(inputElem);\n return elem;\n },\n\n /**\n * Crea lista de Inputs, con array de valores, como elemento Dom\n *\n * @param {Object} props - config para Input\n * @param {Object} dataDay - valores de item y Dia, opcional\n * @param {Object} [daySelected = null] - datos del dia seleccionado\n * @return {Object} Elemento Dom del input creado\n */\n createInputList(props, dataDay, daySelected = null) {\n let value = null;\n let inputList = []; //obtiene inputs default, para crearlos, sin valores\n\n if (daySelected && Array.isArray(daySelected.item.values[props.inputList])) {\n inputList = daySelected.item.values[props.inputList].map(inputRow => {\n //limpia inputList inputs\n //ATENTION posiblemente innecesaria\n inputRow.inputs.map(input => {\n input.value;\n return input;\n }); //obtiene valores del dia\n\n if (dataDay && dataDay.values) {\n let inputValues = _util_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getVarByPath(dataDay, props.valuesPath); //autorrellena\n\n if (inputValues) {\n inputRow.inputs.forEach(input => {\n let values = inputValues.find(v => v.id == inputRow.id);\n input.value = values ? values[input.varName] : null;\n });\n }\n }\n\n return inputRow;\n });\n }\n\n let str = `<div input-key=\"${props.key || ''}\" >`;\n inputList.forEach(inputRow => {\n str += `\n <div class=\"input-section input-section-flex\" >\n <span class=\"text-subtitle\">\n ${inputRow.label}\n </span>`;\n inputRow.inputs.forEach(input => {\n str += ` \n <div class=\"input-section-col\" >\n <span class=\"text-subtitle \">\n ${input.label}\n </span>\n <input type=\"number\"\n input-id=\"${inputRow.id}\"\n input-label=\"${input.label}\"\n class=\"nav-input\"\n value=\"${input.value}\">\n </div>`;\n });\n str += `\n </div>`;\n });\n str += `</div>`;\n let elem = _util_domUtils__WEBPACK_IMPORTED_MODULE_0__[\"default\"].createElementFromHTML(str);\n let inputsElem = elem.querySelectorAll(\"input\");\n inputsElem.forEach(inputElem => this.addKeyDownInputEvents(inputElem));\n return elem;\n },\n\n /**\n * Crea Input de texto TextArea como elemento Dom\n *\n * @param {Object} props - config para Input\n * @param {Object} dataDay - valores de item y Dia, opcional\n * @return {Object} Elemento Dom del input creado\n */\n createInputTextArea(props, dataDay) {\n let value = \"\";\n\n if (dataDay && dataDay.values) {\n value = _util_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getVarByPath(dataDay, props.varName);\n }\n\n let elem = _util_domUtils__WEBPACK_IMPORTED_MODULE_0__[\"default\"].createElementFromHTML(`\n <div class=\"input-section\" input-key=\"${props.key || ''}\">\n <span class=\"text-subtitle d-block\">\n ${props.label}\n </span>\n <textarea class=\"\" value=\"${value}\"></textarea>\n </div>`);\n let inputElem = elem.querySelector(\"textarea\");\n this.addKeyDownInputEvents(inputElem);\n return elem;\n },\n\n /**\n * Crea Input de Mensaje como elemento Dom\n * utiliza TextArea\n *\n * @param {Object} props - config para Input\n * @param {Object} dataDay - valores de item y Dia, opcional\n * @return {Object} Elemento Dom del input creado\n */\n createInputMessage(props, dataDay) {\n let value = \"\";\n\n if (dataDay && dataDay.message) {\n value = _util_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getVarByPath(dataDay, props.varName);\n }\n\n let elem = _util_domUtils__WEBPACK_IMPORTED_MODULE_0__[\"default\"].createElementFromHTML(`\n <div class=\"input-section msj-input-container\"\n input-key=\"${props.key || ''}\">\n <span class=\"text-subtitle d-block\">\n Mensaje\n </span>\n <textarea class=\"msj\">${value || ''}</textarea>\n </div>`);\n let inputElem = elem.querySelector(\"textarea\");\n this.addKeyDownInputEvents(inputElem);\n return elem;\n },\n\n /**\n * Crea Input de texto como elemento Dom\n *\n * @param {Object} props - config para Input\n * @param {Object} dataDay - valores de item y Dia, opcional\n * @return {Object} Elemento Dom del input creado\n */\n createInputText(props, dataDay) {\n let value = \"\";\n\n if (dataDay && dataDay.values) {\n value = _util_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getVarByPath(dataDay, props.varName);\n }\n\n let elem = _util_domUtils__WEBPACK_IMPORTED_MODULE_0__[\"default\"].createElementFromHTML(`\n <div class=\"input-section\" input-key=\"${props.key || ''}\">\n <span class=\"text-subtitle d-block\">\n ${props.label}\n </span>\n <input type=\"text\" class=\"nav-input\" value=\"${value}\">\n </div>`);\n let inputElem = elem.querySelector(\"input\");\n this.addKeyDownInputEvents(inputElem);\n return elem;\n },\n\n /**\n * Crea Input Numero Flotante, como elemento Dom\n *\n * @param {Object} props - config para Input\n * @param {Object} dataDay - valores de item y Dia, opcional\n * @return {Object} Elemento Dom del input creado\n */\n createInputFloat(props, dataDay) {\n let value = \"\";\n\n if (dataDay && dataDay.values) {\n value = _util_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getVarByPath(dataDay, props.varName);\n }\n\n let elem = _util_domUtils__WEBPACK_IMPORTED_MODULE_0__[\"default\"].createElementFromHTML(`\n <div class=\"input-section\" input-key=\"${props.key || ''}\">\n <span class=\"text-subtitle d-block\">\n ${props.label}\n </span>\n <input type=\"number\" class=\"nav-input\" value=\"${value}\">\n </div>`);\n let inputElem = elem.querySelector(\"input\");\n this.addKeyDownInputEvents(inputElem);\n return elem;\n },\n\n /**\n * Crea InputBox, como elemento Dom\n * un InputBox es un contenedor con una lista de inputs\n *\n * @param {Object} props - config para Input\n * @param {Object} dataDay - valores de item y Dia, opcional\n * @return {Object} Elemento Dom del input creado\n */\n createInputBox(props, dataDay) {\n let value = [];\n\n if (dataDay && dataDay.values) {\n value = _util_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getVarByPath(dataDay, props.varName);\n }\n\n let str = `<div class=\"input-box \" input-key=\"${props.key || ''}\">`;\n\n if (props.inputs) {\n props.inputs.forEach(i => {\n let value_found = value ? value.find(val => val.id == i.id) : null;\n let v = value_found || '';\n let tooltip = \"\";\n let icon = \"\";\n\n if (i.tooltip) {\n tooltip = `\n <div class=\"mini-input-section--tooltip\">\n ${i.tooltip}\n </div>`;\n }\n\n if (i.colorIcon) {\n icon = `<div class=\"mini-input-section--icon ${i.colorIcon}\"> </div>`;\n }\n\n str += `\n <div class=\"mini-input-section\">\n <label class=\"truncate\">\n <input type=\"number\"\n input-id=\"${i.id || ''}\"\n input-key=\"${i.key || i.label}\"\n value=\"${v.value || ''}\">\n ${icon}\n <span class=\"mini-input-section--name\">\n ${i.label}\n </span>\n </label>\n ${tooltip}\n </div>`;\n });\n }\n\n str += `</div>`;\n return _util_domUtils__WEBPACK_IMPORTED_MODULE_0__[\"default\"].createElementFromHTML(str);\n },\n\n /**\n * Crea Checkbox, como elemento Dom\n *\n * @param {Object} props - config para Input\n * @param {Object} dataDay - valores de item y Dia, opcional\n * @return {Object} Elemento Dom del input creado\n */\n createInputCheckbox(props, dataDay) {\n let value = \"\";\n\n if (dataDay && dataDay.values) {\n value = _util_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getVarByPath(dataDay, props.varName);\n }\n\n let r = _util_domUtils__WEBPACK_IMPORTED_MODULE_0__[\"default\"].createElementFromHTML(`\n <div class=\"input-section\" input-key=\"${props.key || ''}\">\n <label>\n <input type=\"checkbox\" name=\"${props.key || ''}\" input-key=\"${props.key || ''}\" ${value ? 'checked' : ''}>\n ${props.label}\n </label>\n </div>`);\n return r;\n },\n\n addKeyDownInputEvents(input) {\n input.addEventListener(\"keydown\", function (event) {\n if (event.keyCode === 13) {\n //ENTER\n input.dispatchEvent(new CustomEvent(\"saveMultiInput\", {\n bubbles: true,\n cancelable: false\n }));\n }\n\n if (event.keyCode === 27) {\n //ESC\n input.dispatchEvent(new CustomEvent(\"cancelMultiInput\", {\n bubbles: true,\n cancelable: false\n }));\n }\n });\n },\n\n createContextMenu({\n config,\n $capibaraElem = null,\n evt = null,\n date = null,\n item = null,\n selected = [],\n tabSelected = null,\n left = null,\n top = null,\n name = \"\"\n }) {\n if (config.timeline.contextMenu === undefined) return {\n elem: null,\n isVisible: false\n };\n let className = \"\";\n let style = \"\";\n let strHtml = '';\n let leftPosition = null;\n let topPosition = null;\n let isVisible = true;\n\n if (evt && $capibaraElem) {\n left = evt.clientX;\n top = evt.clientY - $capibaraElem.getBoundingClientRect().top;\n }\n\n if (left) {\n leftPosition = left;\n }\n\n if (top) {\n topPosition = top;\n }\n\n if (leftPosition !== null & topPosition !== null) {\n style += `top: ${topPosition}px; left: ${leftPosition}px`;\n } else {\n className += \"cm-hide\";\n isVisible = false;\n }\n\n strHtml += ` <div class=\"cap-context-menu-container ${className}\">\n <div class=\"cap-context-menu\" style=\"${style}\">\n </div>\n </div>`;\n let $contextMenuContainer = _util_domUtils__WEBPACK_IMPORTED_MODULE_0__[\"default\"].createElementFromHTML(strHtml);\n let $contextMenu = $contextMenuContainer.querySelector(\".cap-context-menu\");\n config.timeline.contextMenu.options.forEach(option => {\n if (option.showIf) {\n let show = option.showIf({\n item,\n date,\n selected,\n name,\n tabSelected\n });\n if (!show) return;\n }\n\n let isEnabled = true;\n\n if (option.enableIf) {\n isEnabled = option.enableIf({\n item,\n date,\n selected,\n name,\n tabSelected\n });\n }\n\n let optionClassName = \"\";\n let strIcon = \"\";\n\n if (!isEnabled) {\n optionClassName += \"is-disabled\";\n }\n\n if (option.icon) {\n strIcon = `<div class=\"cap-context-menu_item_icon\">\n <svg viewBox=\"0 0 24 24\">\n <path d=\"${option.icon}\" />\n </svg>\n </div>`;\n }\n\n let optionStrHtml = `\n <div class=\"cap-context-menu_item ${optionClassName}\">\n ${strIcon}\n <span>\n ${option.label}\n </span>\n </div>`;\n let $option = _util_domUtils__WEBPACK_IMPORTED_MODULE_0__[\"default\"].createElementFromHTML(optionStrHtml);\n\n if (isEnabled) {\n $option.addEventListener(\"click\", evtClick => option.onClick({\n config,\n evt: evtClick,\n date,\n item,\n selected,\n tabSelected\n }));\n } else {\n $option.addEventListener(\"click\", evtClick => {\n evtClick.preventDefault();\n evtClick.stopPropagation();\n });\n }\n\n $contextMenu.append($option);\n });\n return {\n elem: $contextMenuContainer,\n isVisible\n };\n }\n\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvdXRpbC90YWJsZUVsZW1lbnRzLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQ2FwaWJhcmEvLi9zcmMvdXRpbC90YWJsZUVsZW1lbnRzLmpzPzFkODYiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGRvbSAgICAgICBmcm9tICcuLi91dGlsL2RvbVV0aWxzJztcbmltcG9ydCB1dGlscyAgICAgZnJvbSAnLi4vdXRpbC91dGlscyc7XG5pbXBvcnQgZGF0ZVV0aWxzIGZyb20gJy4uL3V0aWwvZGF0ZVV0aWxzJztcbmltcG9ydCBzdHlsZVV0aWxzIGZyb20gJy4vc3R5bGVVdGlscyc7XG5cbmV4cG9ydCBkZWZhdWx0IHtcblxuICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBDUkVBVEVcblxuICAvKipcbiAgICogQ3JlYSBlbGVtZW50byBUYWJsZVxuICAgKiBDb250ZW5kcsOhIGxvcyBlbGVtZW50b3MgcXVlIGFwYXJlY2VyYW4gZGVudHJvIGRlIGxhIHRhYmxhIGRlIHBsYW5pbGxhXG4gICAqIFNlIFVzYSBwYXJhIDpcbiAgICogICAgLSBBZ3JlZ2FyIGJhY2tncm91bmQgY29uIHBhdHJvbiBlc3RpbG8gdGFibGFcbiAgICogICAgLSBBZ3JlZ2FyIGRheU1vdXNlT3ZlciwgZGl2IHF1ZSBpbmRpY2EgcG9zaWNpb24gZGUgbW91c2VcbiAgICogICAgLSBBZ3JlZ2FyIERldGFpbERheSwgcGFyYSBkZXRhbGxlcyBkZSBkYXRvcyBlbiB0YWJsYVxuICAgKiAgICAtIEFncmVnYXIgU2VsZWN0ZWRDb250YWluZXIsIHBhcmEgZGlhcyBzZWxlY2Npb25hZG9zXG4gICAqICAgIC0gQWdyZWdhciBGbG9hdEJveENvbnRhaW5lciwgcGFyYSB2aXN1YWxpemFjaW9uIGRlIGRhdG9zIGVuIHRhYmxhXG4gICAqXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBjb25maWcgLSBDb25maWd1cmFjaW9uIGNhcGliYXJhXG4gICAqIEByZXR1cm4ge09iamVjdH0gRWxlbWVudG8gRG9tIGNyZWFkb1xuICAgKi9cbiAgY3JlYXRlQWdUYWJsZSggY29uZmlnICl7XG4gICAgbGV0IGUgPSBkb20uY3JlYXRlRWxlbWVudChcImRpdlwiLCB7Y2xhc3NOYW1lOlwiY2FwaWJhcmFcIn0pO1xuICAgIGlmKGNvbmZpZy50aW1lbGluZS5kYXJrKXtcbiAgICAgIGUuY2xhc3NMaXN0LmFkZChcImRhcmstdGhlbWVcIik7XG4gICAgfVxuICAgIGlmKGNvbmZpZy50aW1lbGluZS5uYXYubGVmdC5leHRlbmQuaXNTaG93KXtcbiAgICAgIC8vZS5jbGFzc0xpc3QuYWRkKFwiZXh0ZW5kZWRcIik7XG4gICAgfVxuICAgIGlmKGNvbmZpZy50aW1lbGluZS5oZWFkZXIuZXh0ZW5kLmlzU2hvdyl7XG4gICAgICBlLmNsYXNzTGlzdC5hZGQoXCJoZWFkZXItZXh0ZW5kZWRcIik7XG4gICAgfVxuICAgIHJldHVybiBlO1xuICB9LFxuXG5cbiAgLyoqXG4gICAqIENyZWEgeSBwb3NpY2lvbmEgZm9uZG8gZGUgdGFibGFcbiAgICogRXN0ZSBmb25kbyBjb250aWVuZSB1biBwYXRyb24gZGUgQ1NTIHF1ZSBsZSBkYSBsYSBhcGFyaWVuY2lhIGRlIHRhYmxhXG4gICAqIHBvciBsbyBjdWFsIHNlIGRlYmUgcmVwb3NpY2lvbmFyIHNlZ3VuIGxhIGZlY2hhIGRlIGluaWNpbywgcGFyYSBoYWNlclxuICAgKiBjYWx6YXIgbG9zIGZpbmVzIGRlIHNlbWFuYVxuICAgKlxuICAgKiBAcGFyYW0ge09iamVjdH0gY29uZmlnIC0gQ29uZmlndXJhY2lvbiBjYXBpYmFyYVxuICAgKiBAcGFyYW0ge09iamVjdH0gWyRlbGVtID0gbnVsbF0gLSBFbGVtZW50byBiYWNrZ3JvdW5kLCBzaSBlcyBudWxsLCBsbyBjcmVhXG4gICAqIEByZXR1cm4ge09iamVjdH0gZWxlbWVudG8gRG9tIEJhY2tncm91bmRcbiAgICovXG4gIGNyZWF0ZUJhY2tncm91bmQoY29uZmlnLCAkZWxlbSA9IG51bGwpe1xuICAgIGxldCB3ICAgICA9IHBhcnNlRmxvYXQodXRpbHMuZ2V0Q1NTVmFyaWFibGUoY29uZmlnLCBcIi0tZGF5LXdpZHRoXCIpKTtcbiAgICBsZXQgaCAgICAgPSBwYXJzZUZsb2F0KHV0aWxzLmdldENTU1ZhcmlhYmxlKGNvbmZpZywgXCItLWl0ZW0taGVpZ2h0XCIpKTtcbiAgICBsZXQgc3RhcnQgPSBuZXcgRGF0ZShjb25maWcudGltZWxpbmUuc3RhcnQpO1xuICAgIGxldCBlbmQgICA9IG5ldyBEYXRlKGNvbmZpZy50aW1lbGluZS5lbmQpO1xuXG4gICAgZW5kLnNldFRpbWUoZW5kLmdldFRpbWUoKSArIGRhdGVVdGlscy5kYXlJbk1pbGxpc2Vjb25kcyk7Ly8gYWRkIDI0IGhvdXJzXG5cbiAgICBsZXQgZENvcnJlY3RlZCAgID0gbmV3IERhdGUoc3RhcnQudmFsdWVPZigpICsgc3RhcnQuZ2V0VGltZXpvbmVPZmZzZXQoKSAqIDYwMDAwKTtcbiAgICBsZXQgd2Vla0RheSAgICAgID0gZENvcnJlY3RlZC5nZXREYXkoKTtcbiAgICBsZXQgZGlmZldlZWtEYXlzID0gKHdlZWtEYXkgLSAxKSAqIHcgKiAtMTtcbiAgICBsZXQgZGlmZl90aW1lICAgID0gZW5kLmdldFRpbWUoKSAtIHN0YXJ0LmdldFRpbWUoKTtcbiAgICBsZXQgZGF5cyAgICAgICAgID0gZGlmZl90aW1lIC8gZGF0ZVV0aWxzLmRheUluTWlsbGlzZWNvbmRzIDtcblxuICAgIGxldCByb3dzID0gMDtcbiAgICBjb25maWcuZGF0YS5mb3JFYWNoKGQgPT4ge1xuICAgICAgcm93cysrO1xuICAgICAgaWYoZC5jaGlsZHJlbiAmJiAhZC5oaWRkZW4pe1xuICAgICAgICByb3dzICs9IGQuY2hpbGRyZW4ubGVuZ3RoO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgJGVsZW0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9ICRlbGVtIHx8ICBkb20uY3JlYXRlRWxlbWVudChcImRpdlwiLCB7Y2xhc3NOYW1lOiBcImJhY2tncm91bmQtZ3JpZFwifSk7XG4gICAgJGVsZW0uc3R5bGVbXCJiYWNrZ3JvdW5kLXBvc2l0aW9uXCJdID0gZGlmZldlZWtEYXlzKydweCAwLCAwIDAsICcrIGRpZmZXZWVrRGF5cysncHggMCc7XG4gICAgJGVsZW0uc3R5bGUud2lkdGggICAgICAgICAgICAgICAgICA9IChkYXlzICogdykrXCJweFwiO1xuICAgICRlbGVtLnN0eWxlLmhlaWdodCAgICAgICAgICAgICAgICAgPSAocm93cyAqIGggKyAxKStcInB4XCI7XG4gICAgcmV0dXJuICRlbGVtO1xuICB9LFxuXG4gIC8qKlxuICAgKiBDcmVhIFBsb3QgQ29udGFpbmVyIFZlcnRpY2FsXG4gICAqIExvcyBwbG90cyBzb24gZWxlbWVudG9zIHF1ZSBhZ3JlZ2FuIHNlY2Npb25lcyBkZSBmb25kbyBlbiBsYSBwbGFuaWxsYVxuICAgKlxuICAgKiBAcGFyYW0ge09iamVjdH0gY29uZmlnIC0gQ29uZmlndXJhY2lvbiBjYXBpYmFyYVxuICAgKiBAcmV0dXJuIHtPYmplY3R9IEVsZW1lbnRvIERvbSBwbG90VmVydGljYWxDb250YWluZXJcbiAgICovXG4gIGNyZWF0ZVBsb3RWZXJ0aWNhbENvbnRhaW5lcihjb25maWcpe1xuICAgIGxldCAkZWxlbSA9IGRvbS5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHtjbGFzc05hbWU6IFwicGxvdC12ZXJ0aWNhbC1jb250YWluZXJcIn0pO1xuICAgIHJldHVybiB0aGlzLnJlZHJhd1Bsb3RWZXJ0aWNhbENvbnRhaW5lcihjb25maWcsICRlbGVtKTtcbiAgfSxcblxuICBjcmVhdGVQbG90SG9yaXpvbnRhbENvbnRhaW5lcihjb25maWcpe1xuICAgIGxldCAkZWxlbSA9IGRvbS5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBcInBsb3QtaG9yaXpvbnRhbC1jb250YWluZXJcIiB9KTtcbiAgICByZXR1cm4gdGhpcy5yZWRyYXdQbG90SG9yaXpvbnRhbENvbnRhaW5lcihjb25maWcsICRlbGVtKTtcbiAgfSxcblxuXG5cblxuXG4gIC8qKlxuICAgKiBSZWNyZWEgcGxvdFZlcnRpY2FsQ29udGFpbmVyLCB1c2FuZG8gZWxlbWVudG8gZXhpc3RlbnRlXG4gICAqIHVzYSB1biBlbGVtZW50byBleGlzdGVudGUgcGFyYSB1c2FyIGxhIGZ1bmNpb24gcGFyYSByZWRpYnVqYXIgZWwgZWxlbWVudG9cbiAgICpcbiAgICogTG9zIFBsb3RzIHNlIGluc2VydGFuIGNvbW8gZGl2cywgY29uIHBvc2ljaW9uIGVzcGVjaWZpY2FkYSxcbiAgICogY29uIGFuY2hvIGRlIGRpYVxuICAgKlxuICAgKiBAcGFyYW0ge09iamVjdH0gY29uZmlnIC0gQ29uZmlndXJhY2lvbiBjYXBpYmFyYVxuICAgKiBAcGFyYW0ge09iamVjdH0gJGVsZW0gLSBFbGVtZW50byBEb20gZG9uZGUgY3JlYSBwbG90VmVydGljYWxDb250YWluZXJcbiAgICogQHJldHVybiB7T2JqZWN0fSBFbGVtZW50byBEb20gcGxvdFZlcnRpY2FsQ29udGFpbmVyXG4gICAqL1xuICByZWRyYXdQbG90VmVydGljYWxDb250YWluZXIoY29uZmlnLCAkZWxlbSl7XG4gICAgJGVsZW0uaW5uZXJIVE1MID0gXCJcIjtcbiAgICBpZihjb25maWcudGltZWxpbmUucGxvdHMgJiYgY29uZmlnLnRpbWVsaW5lLnBsb3RzLnZlcnRpY2FsKXtcbiAgICAgIGNvbmZpZy50aW1lbGluZS5wbG90cy52ZXJ0aWNhbC5mb3JFYWNoKHAgPT4ge1xuICAgICAgICBsZXQgZGlmZkRheXMgICAgID0gTWF0aC5mbG9vcihkYXRlVXRpbHMuZGlmZkRheXMoY29uZmlnLnRpbWVsaW5lLnN0YXJ0LCBwLmRhdGUpKTtcbiAgICAgICAgbGV0IGRheVdpZHRoID0gcGFyc2VGbG9hdCh1dGlscy5nZXRDU1NWYXJpYWJsZShjb25maWcsIFwiLS1kYXktd2lkdGhcIikpO1xuICAgICAgICBsZXQgbGVmdCAgICAgICAgID0gZGlmZkRheXMgKiBkYXlXaWR0aDtcbiAgICAgICAgbGV0IHBsb3QgPSBkb20uY3JlYXRlRWxlbWVudChcImRpdlwiLCB7XG4gICAgICAgICAgY2xhc3NOYW1lczpbXCJwbG90LXZlcnRpY2FsXCIsIChwLmNsYXNzTmFtZSB8fCAnJyldLFxuICAgICAgICAgIHN0eWxlOnsnbWFyZ2luLWxlZnQnOmxlZnQgK1wicHhcIn19XG4gICAgICAgICk7XG4gICAgICAgICRlbGVtLmFwcGVuZENoaWxkKHBsb3QpO1xuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiAkZWxlbTtcbiAgfSxcblxuICByZWRyYXdQbG90SG9yaXpvbnRhbENvbnRhaW5lcihjb25maWcsICRlbGVtKXtcbiAgICAkZWxlbS5pbm5lckhUTUwgPSBcIlwiO1xuICAgIGlmKGNvbmZpZy50aW1lbGluZS5wbG90cyAmJiBjb25maWcudGltZWxpbmUucGxvdHMuaG9yaXpvbnRhbCl7XG4gICAgICBjb25maWcudGltZWxpbmUucGxvdHMuaG9yaXpvbnRhbC5mb3JFYWNoKHAgPT4ge1xuICAgICAgICBsZXQgaXRlbSAgICAgICAgPSB1dGlscy5nZXRJdGVtQnlJZChjb25maWcsIHAuaWROb2RlLCBwLnR5cGVOb2RlKTtcbiAgICAgICAgbGV0IHRvcFBvc2l0aW9uID0gdXRpbHMuZ2V0UG9zaXRpb25CeUl0ZW0oY29uZmlnLCBpdGVtLCBcInBhcmVudFwiKTtcbiAgICAgICAgbGV0IGl0ZW1IZWlnaHQgID0gcGFyc2VGbG9hdCh1dGlscy5nZXRDU1NWYXJpYWJsZShjb25maWcsIFwiLS1pdGVtLWhlaWdodFwiKSk7XG4gICAgICAgIGxldCBwbG90ICAgICAgICA9IGRvbS5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHtcbiAgICAgICAgICBjbGFzc05hbWVzOltcInBsb3QtaG9yaXpvbnRhbFwiLCAocC5jbGFzc05hbWUgfHwgJycpXSxcbiAgICAgICAgICBzdHlsZTp7J21hcmdpbi10b3AnOiAodG9wUG9zaXRpb24gICogaXRlbUhlaWdodCkrXCJweFwifX1cbiAgICAgICAgKTtcbiAgICAgICAgJGVsZW0uYXBwZW5kQ2hpbGQocGxvdCk7XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuICRlbGVtO1xuICB9LFxuXG5cbiAgLyoqXG4gICAqIENyZWEgQ29ybmVyIEl6cXVpZXJkb1xuICAgKiBTZSB1c2EgcGFyYSA6XG4gICAqICAgIC0gdGl0dWxvcyByZWxhY2lvbmFkb3MgY29uIGxvcyBkYXRvcyBkZWwgc2lkZWJhciBpenF1aWVyZG9cbiAgICogICAgLSB0aXR1bG9zIHBhcmEgaW5wdXRzIGRlIGhlYWRlciwgYWJzb2x1dGUgYSBsYSBkZXJlY2hhXG4gICAqICAgIC0gYm90b24gcGFyYSBtb3N0cmFyL29jdWx0YXIgc2lkZWJhciBpenF1aWVyZG9cbiAgICogICAgLSBwcm9tZWRpb3NcbiAgICpcbiAgICogQHBhcmFtIHtPYmplY3R9IGNvbmZpZyAtIENvbmZpZ3VyYWNpb24gY2FwaWJhcmFcbiAgICogQHJldHVybiB7T2JqZWN0fSBFbGVtZW50byBEb20gQ29ybmVyXG4gICAqL1xuICBjcmVhdGVDb3JuZXIoY29uZmlnLCB0YWIgPSBudWxsKXtcbiAgICBsZXQgJGVsZW0gPSBkb20uY3JlYXRlRWxlbWVudChcImRpdlwiLCB7Y2xhc3NOYW1lOiBcImNvcm5lclwifSk7XG4gICAgcmV0dXJuIHRoaXMucmVkcmF3Q29ybmVyKCRlbGVtLCBjb25maWcsIHRhYik7XG4gIH0sXG5cbiAgcmVkcmF3Q29ybmVyKCRlbGVtLCBjb25maWcsIHRhYj1udWxsKXtcbiAgICBsZXQgbGFiZWxzSW5pdGlhbENvcm5lciA9IGNvbmZpZy50aW1lbGluZS5uYXYubGVmdC5pbml0aWFsLnZhcnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5maWx0ZXIodiA9PiAodi5vbmx5VGFiID09IHVuZGVmaW5lZCB8fCAodi5vbmx5VGFiICYmIHRhYiAmJiB2Lm9ubHlUYWIgPT0gdGFiLmtleSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLm1hcChkPT5gPHNwYW4gY2xhc3M9XCJpdGVtLWNvbFwiPiR7ZC5sYWJlbH08L3NwYW4+YCkuam9pbihcIlwiKTtcblxuICAgIGxldCBsYWJlbHNFeHRlbmRDb3JuZXIgPSBjb25maWcudGltZWxpbmUubmF2LmxlZnQuZXh0ZW5kLnZhcnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5maWx0ZXIodiA9PiAodi5vbmx5VGFiID09IHVuZGVmaW5lZCB8fCAodi5vbmx5VGFiICYmIHRhYiAmJiB2Lm9ubHlUYWIgPT0gdGFiLmtleSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLm1hcChkPT5gPHNwYW4gY2xhc3M9XCJpdGVtLWNvbFwiPiR7ZC5sYWJlbH08L3NwYW4+YCkuam9pbihcIlwiKTtcblxuXG4gICAgbGV0IGxhYmVsc0hlYWRlckV4dGVuZCA9IGNvbmZpZy50aW1lbGluZS5oZWFkZXIuZXh0ZW5kLmRhdGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5tYXAoZD0+e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihkLmlzSGlkZGVuKSByZXR1cm4gXCJcIjtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgYXZnQm94ID0gJyc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBhdmcgPSAnJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoZC5hdmVyYWdlKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2xldCB5ZXN0ZXJkYXkgPSBuZXcgRGF0ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8veWVzdGVyZGF5LnNldERhdGUoeWVzdGVyZGF5LmdldERhdGUoKSAtIDEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9sZXQgYXZnICAgPSB1dGlscy5nZXRBdmVyYWdlKGQuZGF0YSwgeWVzdGVyZGF5LCBkLmF2ZXJhZ2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vYXZnQm94ID0gYCA8ZGl2IGNsYXNzPVwiYXZlcmFnZS1ib3hcIj4gPHNwYW4+IDxzcGFuIGNsYXNzPVwic3ltYm9sXCI+eMyEPC9zcGFuPiAke2QuYXZlcmFnZX0gPC9zcGFuPiAgPC9kaXY+ICAgYDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdmcgICAgPSBgIDxzcGFuIGNsYXNzPVwiYXZlcmFnZVwiPiAoIDxzcGFuPiA8c3BhbiBjbGFzcz1cInN5bWJvbFwiPnjMhDwvc3Bhbj4gJHtkLmF2ZXJhZ2V9IDwvc3Bhbj4pICA8L3NwYW4+ICAgYDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYDxkaXYgY2xhc3M9XCJpbnB1dC10aXRsZS1jb250YWluZXIgJHtkLmlzUGVyc2lzdGVudCA/ICdwZXJzaXN0ZW50JzonJ31cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2F2Z0JveH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjYXAtdG9vbHRpcD1cIlByb21lZGlvICR7ZC5sYWJlbH0gOiAke2QuYXZlcmFnZX0gJHtkLnN1ZmZpeCB8fCAnJ31cIiBjbGFzcz1cImlucHV0LXRpdGxlICR7ZC5jb2xvcj8nYy0nK2QuY29sb3IrJy0tdGV4dCc6Jyd9IFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHthdmd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2QubGFiZWx9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PmB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLmpvaW4oXCJcIik7XG5cbiAgICBsZXQgdGVtcGxhdGUgPSBgPGRpdj5cblxuICAgICAgICAgIDxidXR0b24gdG9nZ2xlLXNpZGViYXIgY2xhc3M9XCJidG4taWNvbiBidG4taWNvbi1yYWlzZWQgYnRuLXRvZ2dsZS1zaWRlYmFyIGMtZC1tb2JpbGUtbm9uZVwiPlxuICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgIDxzdmcgc3R5bGU9XCJ3aWR0aDoyNHB4O2hlaWdodDoyNHB4XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiPlxuICAgICAgICAgICAgICAgICAgPHBhdGggZmlsbD1cImN1cnJlbnRDb2xvclwiIGQ9XCJNOC41OSwxNi41OEwxMy4xNywxMkw4LjU5LDcuNDFMMTAsNkwxNiwxMkwxMCwxOEw4LjU5LDE2LjU4WlwiIC8+XG4gICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb3JuZXItdGl0bGVcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImJvdHRvbS10ZXh0XCI+XG4gICAgICAgICAgICAke2NvbmZpZy50aW1lbGluZS5jb3JuZXIubGVmdC5sYWJlbH1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbml0aWFsLWNvcm5lclwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbml0aWFsLWNvcm5lci10aXRsZVwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJib3R0b20tY29udGFpbmVyIGhpZGVcIj5cbiAgICAgICAgICAgICAgJHtjb25maWcudGltZWxpbmUuY29ybmVyLmluaXRpYWwubGFiZWx9XG4gICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJib3R0b20tY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICR7bGFiZWxzSW5pdGlhbENvcm5lcn1cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImV4dGVuZC1jb3JuZXJcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXgtY29ybmVyLXRpdGxlXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJvdHRvbS1jb250YWluZXIgaGlkZVwiPlxuICAgICAgICAgICAgICAke2NvbmZpZy50aW1lbGluZS5jb3JuZXIuZXh0ZW5kLmxhYmVsfVxuICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm90dG9tLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAke2xhYmVsc0V4dGVuZENvcm5lcn1cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImJ0bi1uYXYtY29ybmVyXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LXRpdGxlc1wiPlxuICAgICAgICAgICAgICAke2xhYmVsc0hlYWRlckV4dGVuZH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cInByb2dyZXNzLWJhciBwcm9ncmVzcy1iYXItbGVmdCBoaWRlLXByb2dyZXNzXCI+PC9kaXY+XG5cbiAgICAgIDwvZGl2PmA7XG5cbiAgICBsZXQgciA9IGRvbS5jcmVhdGVFbGVtZW50RnJvbUhUTUwodGVtcGxhdGUpO1xuXG4gICAgJGVsZW0uaW5uZXJIVE1MID0gXCJcIjtcbiAgICAkZWxlbS5hcHBlbmQocik7XG5cbiAgICAkZWxlbS5xdWVyeVNlbGVjdG9yKFwiW3RvZ2dsZS1zaWRlYmFyXVwiKS5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgZT0+e1xuICAgICAgci5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudChcInRvZ2dsZVNpZGViYXJcIiwge1xuICAgICAgICBidWJibGVzOiB0cnVlLFxuICAgICAgICBjYW5jZWxhYmxlOiBmYWxzZSxcbiAgICAgIH0pKTtcbiAgICB9KTtcblxuICAgIHJldHVybiAkZWxlbTtcbiAgfSxcblxuXG5cbiAgLyoqXG4gICAqIENyZWEgQ29ybmVyIERlcmVjaG9cbiAgICogU2UgdXNhIHBhcmEgOlxuICAgKiAgICAtIHRpdHVsb3MgcmVsYWNpb25hZG9zIGNvbiBsb3MgZGF0b3MgZGVsIHNpZGViYXIgRGVyZWNob1xuICAgKlxuICAgKiBAcGFyYW0ge09iamVjdH0gY29uZmlnIC0gQ29uZmlndXJhY2lvbiBjYXBpYmFyYVxuICAgKiBAcmV0dXJuIHtPYmplY3R9IEVsZW1lbnRvIERvbSBjb3JuZXJcbiAgICovXG4gIGNyZWF0ZUNvcm5lclJpZ2h0KGNvbmZpZyl7XG4gICAgbGV0IHN0ciA9IGBcbiAgICAgIDxkaXYgY2xhc3M9XCJjb3JuZXIgcmlnaHRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvcm5lci10aXRsZVwiPlxuICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgJHtjb25maWcudGltZWxpbmUuY29ybmVyLnJpZ2h0LmxhYmVsfVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJwcm9ncmVzcy1iYXIgcHJvZ3Jlc3MtYmFyLXJpZ2h0IGhpZGUtcHJvZ3Jlc3NcIj48L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIGA7XG4gICAgcmV0dXJuIGRvbS5jcmVhdGVFbGVtZW50RnJvbUhUTUwoc3RyKTtcbiAgfSxcblxuXG4gIC8qKlxuICAgKiBDcmVhIEhlYWRlciBUb3BcbiAgICogU2UgdXNhIHBhcmEgOlxuICAgKiAgICAtIE1hbmVqbyBkZSB0YWJzXG4gICAqICAgIC0gQm90b25lcyBkZSBuYXZlZ2FjacOzbiB5IHNlbGVjY2nDs24gZGUgZmVjaGFcbiAgICogICAgLSBCb3RvbiB0b2dnbGUgRGFyayBtb2RlXG4gICAqICAgIC0gQm90b24gdG9nZ2xlIEhlYWRlciBleHRlbmRlZFxuICAgKlxuICAgKiBAcGFyYW0ge09iamVjdH0gY29uZmlnIC0gQ29uZmlndXJhY2lvbiBjYXBpYmFyYVxuICAgKiBAcmV0dXJuIHtPYmplY3R9IEVsZW1lbnRvIERvbVxuICAgKi9cblxuICBjcmVhdGVIZWFkZXJUb3AoY29uZmlnLCB0YWJTZWxlY3RlZCA9IG51bGwpe1xuICAgIHJldHVybiB0aGlzLnJlZHJhd0hlYWRlclRvcChjb25maWcsIHRhYlNlbGVjdGVkLCBkb20uY3JlYXRlRWxlbWVudChcImRpdlwiKSk7XG4gIH0sXG5cbiAgcmVkcmF3SGVhZGVyVG9wKGNvbmZpZywgdGFiU2VsZWN0ZWQgPSBudWxsLCAkZWxlbSl7XG4gICAgbGV0IHN0ciA9IGBcbiAgICAgIDxkaXYgY2xhc3M9XCJoZWFkZXItdG9wXCI+YDtcblxuXG5cblxuXG5cbiAgICBpZihjb25maWcudGltZWxpbmUudGFicyl7XG5cbiAgICAgIHN0ciArPSBgIDxkaXYgY2xhc3M9XCJ0YWItc2VsZWN0LWNvbnRhaW5lciBjLWQtZGVza3RvcC1ub25lIGMtZC1tb2JpbGUtZmxleFwiPlxuICAgICAgICAgICAgICAgIDxzZWxlY3QgY2xhc3M9XCJ0YWJzLXNlbGVjdFwiID5gO1xuXG4gICAgICBjb25maWcudGltZWxpbmUudGFicy5mb3JFYWNoKHRhYiA9PiB7XG4gICAgICAgIGlmKCF0YWIuaXNIaWRkZW4pe1xuICAgICAgICAgIHN0ciArPWAgPG9wdGlvbiB2YWx1ZT1cIiR7dGFiLmlkfVwiPiAke3RhYi5sYWJlbH0gPC9vcHRpb24+YFxuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgc3RyICs9IGA8L3NlbGVjdD5cbiAgICAgICAgICAgIDwvZGl2PmA7XG5cblxuICAgICAgc3RyICs9IGAgPGRpdiBjbGFzcz1cInRhYnMtY29udGFpbmVyIGMtZC1kZXNrdG9wLWZsZXggYy1kLW1vYmlsZS1ub25lXCI+YDtcblxuICAgICAgY29uZmlnLnRpbWVsaW5lLnRhYnMuZm9yRWFjaCh0YWIgPT4ge1xuICAgICAgICBpZighdGFiLmlzSGlkZGVuKXtcbiAgICAgICAgICBzdHIgKz0gYCA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0YWIgJHt0YWIuZGlzYWJsZWQgPyAnZGlzYWJsZWQnOiAnJ30gICR7dGFiID09IHRhYlNlbGVjdGVkID8gJ2FjdGl2ZSc6ICcnfSAgJHt0YWIuY29sb3J9XCJcbiAgICAgICAgICAgICAgICAgICAgICBjb2xvcj1cIiR7dGFiLmNvbG9yfVwiXG4gICAgICAgICAgICAgICAgICAgICAgaW5wdXQta2V5PVwiJHt0YWIuaWR9XCJcbiAgICAgICAgICAgICAgICAgICAgICAke3RhYi50b29sdGlwPydjYXAtdG9vbHRpcD1cIicrdGFiLnRvb2x0aXArJ1wiJzonJ30gPlxuICAgICAgICAgICAgICAgICAgPHNwYW4+JHt0YWIubGFiZWx9PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgJHt0YWIuaWNvbiB8fCAnJ31cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICBgO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgc3RyICs9IGA8L2Rpdj5gO1xuICAgIH1cblxuICAgIGlmKHRhYlNlbGVjdGVkKXtcblxuICAgICAgaWYodGFiU2VsZWN0ZWQubGVnZW5kcyl7XG5cbiAgICAgICAgc3RyICs9IGA8ZGl2IGNsYXNzPVwibGVnZW5kcy1zZWxlY3QtY29udGFpbmVyIGMtZC1kZXNrdG9wLW5vbmUgYy1kLW1vYmlsZS1mbGV4XCI+XG4gICAgICAgICAgICAgICAgPHNlbGVjdCBjbGFzcz1cInRhYnMtc2VsZWN0XCI+YDtcblxuICAgICAgICB0YWJTZWxlY3RlZC5sZWdlbmRzLmZvckVhY2gobGVnZW5kID0+IHtcbiAgICAgICAgICAgIHN0ciArPWAgPG9wdGlvbiB2YWx1ZT1cIiR7bGVnZW5kLmlkfVwiPiAke2xlZ2VuZC5sYWJlbH0gPC9vcHRpb24+YFxuICAgICAgICB9KTtcblxuICAgICAgICBzdHIgKz0gYDwvc2VsZWN0PlxuICAgICAgICAgICAgPC9kaXY+YDtcblxuXG4gICAgICAgIHN0ciArPSBgPGRpdiBjbGFzcz1cImxlZ2VuZHMtY29udGFpbmVyIGMtZC1kZXNrdG9wLWZsZXggYy1kLW1vYmlsZS1ub25lXCI+YDtcblxuICAgICAgICB0YWJTZWxlY3RlZC5sZWdlbmRzLmZvckVhY2gobGVnZW5kID0+IHtcbiAgICAgICAgICAgIHN0ciArPSBgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImxlZ2VuZCAke2xlZ2VuZC5hY3RpdmU/ICdhY3RpdmUnOiAnJ31cIlxuICAgICAgICAgICAgICAgICAgICAgIGlucHV0LWtleT1cIiR7bGVnZW5kLmtleX1cIlxuICAgICAgICAgICAgICAgICAgICAgICR7bGVnZW5kLnRvb2x0aXAgPyBgY2FwLXRvb2x0aXA9XCIke2xlZ2VuZC50b29sdGlwfVwiYDonJ30gPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImljb24tbGVnZW5kICR7bGVnZW5kLmNvbG9yICYmIGxlZ2VuZC5hY3RpdmUgPyBsZWdlbmQuY29sb3IrXCItLWJhY2tncm91bmRcIjonJ30gJHtsZWdlbmQuc2hhcGV9XCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICA8c3Bhbj4ke2xlZ2VuZC5sYWJlbH08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+YDtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgc3RyICs9IGA8L2Rpdj5gO1xuICAgICAgfVxuICAgIH1cblxuXG5cblxuXG5cbiAgICBzdHIgKz0gYFxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNwYWNlclwiPjwvZGl2PlxuXG5cblxuICAgICAgICAgIDxidXR0b24gYnRuLXByZXYgY2xhc3M9XCJidG4taWNvbiBidG4taWNvbi1yYWlzZWRcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpY29uXCI+XG4gICAgICAgICAgICAgIDxzdmcgc3R5bGU9XCJ3aWR0aDoyNHB4O2hlaWdodDoyNHB4XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiPlxuICAgICAgICAgICAgICAgICAgPHBhdGggZmlsbD1cImN1cnJlbnRDb2xvclwiIGQ9XCJNMjAsMTBWMTRIMTFMMTQuNSwxNy41TDEyLjA4LDE5LjkyTDQuMTYsMTJMMTIuMDgsNC4wOEwxNC41LDYuNUwxMSwxMEgyMFpcIiAvPlxuICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibG9hZGluZy1pY29uXCI+XG4gICAgICAgICAgICAgICAgPHN2ZyB2ZXJzaW9uPVwiMS4xXCIgaWQ9XCJsb2FkZXItMVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB4bWxuczp4bGluaz1cImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmtcIiB4PVwiMHB4XCIgeT1cIjBweFwiXG4gICAgICAgICAgICAgICB3aWR0aD1cIjMycHhcIiBoZWlnaHQ9XCIzMnB4XCIgdmlld0JveD1cIjAgMCA0MCA0MFwiIGVuYWJsZS1iYWNrZ3JvdW5kPVwibmV3IDAgMCA0MCA0MFwiIHhtbDpzcGFjZT1cInByZXNlcnZlXCI+XG4gICAgICAgICAgICAgIDxwYXRoIG9wYWNpdHk9XCIwLjJcIiBmaWxsPVwiIzAwMFwiIGQ9XCJNMjAuMjAxLDUuMTY5Yy04LjI1NCwwLTE0Ljk0Niw2LjY5Mi0xNC45NDYsMTQuOTQ2YzAsOC4yNTUsNi42OTIsMTQuOTQ2LDE0Ljk0NiwxNC45NDZcbiAgICAgICAgICAgICAgICBzMTQuOTQ2LTYuNjkxLDE0Ljk0Ni0xNC45NDZDMzUuMTQ2LDExLjg2MSwyOC40NTUsNS4xNjksMjAuMjAxLDUuMTY5eiBNMjAuMjAxLDMxLjc0OWMtNi40MjUsMC0xMS42MzQtNS4yMDgtMTEuNjM0LTExLjYzNFxuICAgICAgICAgICAgICAgIGMwLTYuNDI1LDUuMjA5LTExLjYzNCwxMS42MzQtMTEuNjM0YzYuNDI1LDAsMTEuNjMzLDUuMjA5LDExLjYzMywxMS42MzRDMzEuODM0LDI2LjU0MSwyNi42MjYsMzEuNzQ5LDIwLjIwMSwzMS43NDl6XCIvPlxuICAgICAgICAgICAgICA8cGF0aCBmaWxsPVwiIzAwMFwiIGQ9XCJNMjYuMDEzLDEwLjA0N2wxLjY1NC0yLjg2NmMtMi4xOTgtMS4yNzItNC43NDMtMi4wMTItNy40NjYtMi4wMTJoMHYzLjMxMmgwXG4gICAgICAgICAgICAgICAgQzIyLjMyLDguNDgxLDI0LjMwMSw5LjA1NywyNi4wMTMsMTAuMDQ3elwiPlxuICAgICAgICAgICAgICAgIDxhbmltYXRlVHJhbnNmb3JtIGF0dHJpYnV0ZVR5cGU9XCJ4bWxcIlxuICAgICAgICAgICAgICAgICAgYXR0cmlidXRlTmFtZT1cInRyYW5zZm9ybVwiXG4gICAgICAgICAgICAgICAgICB0eXBlPVwicm90YXRlXCJcbiAgICAgICAgICAgICAgICAgIGZyb209XCIwIDIwIDIwXCJcbiAgICAgICAgICAgICAgICAgIHRvPVwiMzYwIDIwIDIwXCJcbiAgICAgICAgICAgICAgICAgIGR1cj1cIjEuNXNcIlxuICAgICAgICAgICAgICAgICAgcmVwZWF0Q291bnQ9XCJpbmRlZmluaXRlXCIvPlxuICAgICAgICAgICAgICAgIDwvcGF0aD5cbiAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L2J1dHRvbj5cblxuXG4gICAgICAgICAgPGJ1dHRvbiBidG4tY2FsZW5kYXIgY2xhc3M9XCJidG4taWNvbiBidG4taWNvbi1yYWlzZWRcIj5cbiAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICA8c3ZnIHN0eWxlPVwid2lkdGg6MjRweDtoZWlnaHQ6MjRweFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj5cbiAgICAgICAgICAgICAgICA8cGF0aCBmaWxsPVwiY3VycmVudENvbG9yXCIgZD1cIk0xOSwxOUg1VjhIMTlNMTYsMVYzSDhWMUg2VjNINUMzLjg5LDMgMywzLjg5IDMsNVYxOUEyLDIgMCAwLDAgNSwyMUgxOUEyLDIgMCAwLDAgMjEsMTlWNUMyMSwzLjg5IDIwLjEsMyAxOSwzSDE4VjFNMTcsMTJIMTJWMTdIMTdWMTJaXCIgLz5cbiAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxvYWRpbmctaWNvblwiPlxuICAgICAgICAgICAgICAgIDxzdmcgdmVyc2lvbj1cIjEuMVwiIGlkPVwibG9hZGVyLTFcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgeG1sbnM6eGxpbms9XCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rXCIgeD1cIjBweFwiIHk9XCIwcHhcIlxuICAgICAgICAgICAgICAgd2lkdGg9XCIzMnB4XCIgaGVpZ2h0PVwiMzJweFwiIHZpZXdCb3g9XCIwIDAgNDAgNDBcIiBlbmFibGUtYmFja2dyb3VuZD1cIm5ldyAwIDAgNDAgNDBcIiB4bWw6c3BhY2U9XCJwcmVzZXJ2ZVwiPlxuICAgICAgICAgICAgICA8cGF0aCBvcGFjaXR5PVwiMC4yXCIgZmlsbD1cIiMwMDBcIiBkPVwiTTIwLjIwMSw1LjE2OWMtOC4yNTQsMC0xNC45NDYsNi42OTItMTQuOTQ2LDE0Ljk0NmMwLDguMjU1LDYuNjkyLDE0Ljk0NiwxNC45NDYsMTQuOTQ2XG4gICAgICAgICAgICAgICAgczE0Ljk0Ni02LjY5MSwxNC45NDYtMTQuOTQ2QzM1LjE0NiwxMS44NjEsMjguNDU1LDUuMTY5LDIwLjIwMSw1LjE2OXogTTIwLjIwMSwzMS43NDljLTYuNDI1LDAtMTEuNjM0LTUuMjA4LTExLjYzNC0xMS42MzRcbiAgICAgICAgICAgICAgICBjMC02LjQyNSw1LjIwOS0xMS42MzQsMTEuNjM0LTExLjYzNGM2LjQyNSwwLDExLjYzMyw1LjIwOSwxMS42MzMsMTEuNjM0QzMxLjgzNCwyNi41NDEsMjYuNjI2LDMxLjc0OSwyMC4yMDEsMzEuNzQ5elwiLz5cbiAgICAgICAgICAgICAgPHBhdGggZmlsbD1cIiMwMDBcIiBkPVwiTTI2LjAxMywxMC4wNDdsMS42NTQtMi44NjZjLTIuMTk4LTEuMjcyLTQuNzQzLTIuMDEyLTcuNDY2LTIuMDEyaDB2My4zMTJoMFxuICAgICAgICAgICAgICAgIEMyMi4zMiw4LjQ4MSwyNC4zMDEsOS4wNTcsMjYuMDEzLDEwLjA0N3pcIj5cbiAgICAgICAgICAgICAgICA8YW5pbWF0ZVRyYW5zZm9ybSBhdHRyaWJ1dGVUeXBlPVwieG1sXCJcbiAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZU5hbWU9XCJ0cmFuc2Zvcm1cIlxuICAgICAgICAgICAgICAgICAgdHlwZT1cInJvdGF0ZVwiXG4gICAgICAgICAgICAgICAgICBmcm9tPVwiMCAyMCAyMFwiXG4gICAgICAgICAgICAgICAgICB0bz1cIjM2MCAyMCAyMFwiXG4gICAgICAgICAgICAgICAgICBkdXI9XCIxLjVzXCJcbiAgICAgICAgICAgICAgICAgIHJlcGVhdENvdW50PVwiaW5kZWZpbml0ZVwiLz5cbiAgICAgICAgICAgICAgICA8L3BhdGg+XG4gICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgICA8YnV0dG9uIGJ0bi1uZXh0IGNsYXNzPVwiYnRuLWljb24gYnRuLWljb24tcmFpc2VkXCI+XG4gICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgPHN2ZyBzdHlsZT1cIndpZHRoOjI0cHg7aGVpZ2h0OjI0cHhcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCI+XG4gICAgICAgICAgICAgICAgICA8cGF0aCBmaWxsPVwiY3VycmVudENvbG9yXCIgZD1cIk00LDEwVjE0SDEzTDkuNSwxNy41TDExLjkyLDE5LjkyTDE5Ljg0LDEyTDExLjkyLDQuMDhMOS41LDYuNUwxMywxMEg0WlwiIC8+XG4gICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsb2FkaW5nLWljb25cIj5cbiAgICAgICAgICAgICAgICA8c3ZnIHZlcnNpb249XCIxLjFcIiBpZD1cImxvYWRlci0xXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHhtbG5zOnhsaW5rPVwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlua1wiIHg9XCIwcHhcIiB5PVwiMHB4XCJcbiAgICAgICAgICAgICAgIHdpZHRoPVwiMzJweFwiIGhlaWdodD1cIjMycHhcIiB2aWV3Qm94PVwiMCAwIDQwIDQwXCIgZW5hYmxlLWJhY2tncm91bmQ9XCJuZXcgMCAwIDQwIDQwXCIgeG1sOnNwYWNlPVwicHJlc2VydmVcIj5cbiAgICAgICAgICAgICAgPHBhdGggb3BhY2l0eT1cIjAuMlwiIGZpbGw9XCIjMDAwXCIgZD1cIk0yMC4yMDEsNS4xNjljLTguMjU0LDAtMTQuOTQ2LDYuNjkyLTE0Ljk0NiwxNC45NDZjMCw4LjI1NSw2LjY5MiwxNC45NDYsMTQuOTQ2LDE0Ljk0NlxuICAgICAgICAgICAgICAgIHMxNC45NDYtNi42OTEsMTQuOTQ2LTE0Ljk0NkMzNS4xNDYsMTEuODYxLDI4LjQ1NSw1LjE2OSwyMC4yMDEsNS4xNjl6IE0yMC4yMDEsMzEuNzQ5Yy02LjQyNSwwLTExLjYzNC01LjIwOC0xMS42MzQtMTEuNjM0XG4gICAgICAgICAgICAgICAgYzAtNi40MjUsNS4yMDktMTEuNjM0LDExLjYzNC0xMS42MzRjNi40MjUsMCwxMS42MzMsNS4yMDksMTEuNjMzLDExLjYzNEMzMS44MzQsMjYuNTQxLDI2LjYyNiwzMS43NDksMjAuMjAxLDMxLjc0OXpcIi8+XG4gICAgICAgICAgICAgIDxwYXRoIGZpbGw9XCIjMDAwXCIgZD1cIk0yNi4wMTMsMTAuMDQ3bDEuNjU0LTIuODY2Yy0yLjE5OC0xLjI3Mi00Ljc0My0yLjAxMi03LjQ2Ni0yLjAxMmgwdjMuMzEyaDBcbiAgICAgICAgICAgICAgICBDMjIuMzIsOC40ODEsMjQuMzAxLDkuMDU3LDI2LjAxMywxMC4wNDd6XCI+XG4gICAgICAgICAgICAgICAgPGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlVHlwZT1cInhtbFwiXG4gICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVOYW1lPVwidHJhbnNmb3JtXCJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJyb3RhdGVcIlxuICAgICAgICAgICAgICAgICAgZnJvbT1cIjAgMjAgMjBcIlxuICAgICAgICAgICAgICAgICAgdG89XCIzNjAgMjAgMjBcIlxuICAgICAgICAgICAgICAgICAgZHVyPVwiMS41c1wiXG4gICAgICAgICAgICAgICAgICByZXBlYXRDb3VudD1cImluZGVmaW5pdGVcIi8+XG4gICAgICAgICAgICAgICAgPC9wYXRoPlxuICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNwYWNlclwiPjwvZGl2PlxuXG4gICAgICAgICAgPGJ1dHRvbiB0b2dnbGUtZGFyayBjbGFzcz1cImJ0bi1pY29uIGJ0bi1oZWFkZXIgYy1kLW1vYmlsZS1ub25lICR7Y29uZmlnLnRpbWVsaW5lLndpdGhEYXJrVG9nZ2xlID09IGZhbHNlID8gJ2hpZGUnIDogJycgfVwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJoaWRlLWxpZ2h0XCI+XG4gICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiPlxuICAgICAgICAgICAgICAgIDxwYXRoICBmaWxsPVwiY3VycmVudENvbG9yXCIgZD1cIk0xMyw0LjhDOSw0LjggOSwxOS4yIDEzLDE5LjJDMTcsMTkuMiAyMiwxNi41IDIyLDEyQzIyLDcuNSAxNyw0LjggMTMsNC44TTEzLjEsMTcuMkMxMi43LDE2LjggMTIsMTUgMTIsMTJDMTIsOSAxMi43LDcuMiAxMy4xLDYuOEMxNiw2LjkgMjAsOC43IDIwLDEyQzIwLDE1LjMgMTUuOSwxNy4xIDEzLjEsMTcuMk04LDEwLjVDOCwxMSA3LjksMTEuNSA3LjksMTJDNy45LDEyLjIgNy45LDEyLjQgNy45LDEyLjZMMi40LDE0TDEuOSwxMi4xTDgsMTAuNU0yLDdMOS40LDUuMUM5LjIsNS40IDksNS44IDguOSw2LjNDOC44LDYuNiA4LjcsNyA4LjYsNy40TDIuNSw4LjlMMiw3TTguMiwxNS41QzguMywxNi4yIDguNSwxNi45IDguNywxNy40TDIuNCwxOUwxLjksMTcuMUw4LjIsMTUuNVpcIiAvPlxuICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaGlkZS1kYXJrXCI+XG4gICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiPlxuICAgICAgICAgICAgICAgIDxwYXRoICBmaWxsPVwiY3VycmVudENvbG9yXCIgZD1cIk0xMyw0LjhDOSw0LjggOSwxOS4yIDEzLDE5LjJDMTcsMTkuMiAyMiwxNi41IDIyLDEyQzIyLDcuNSAxNyw0LjggMTMsNC44TTEzLjEsMTcuMkMxMi43LDE2LjggMTIsMTUgMTIsMTJDMTIsOSAxMi43LDcuMiAxMy4xLDYuOEMxNiw2LjkgMjAsOC43IDIwLDEyQzIwLDE1LjMgMTYsMTcuMSAxMy4xLDE3LjJNMiw1SDkuNUM5LjMsNS40IDksNS44IDguOSw2LjRDOC44LDYuNiA4LjgsNi44IDguNyw3SDJWNU04LDExSDJWOUg4LjJDOC4xLDkuNiA4LjEsMTAuMyA4LDExTTguNywxN0M4LjksMTcuOCA5LjIsMTguNCA5LjYsMTlIMi4xVjE3SDguN004LjIsMTVIMlYxM0g4QzguMSwxMy43IDguMSwxNC40IDguMiwxNVpcIiAvPlxuICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L2J1dHRvbj5gO1xuXG4gICAgIGlmKGNvbmZpZy50aW1lbGluZS5oZWFkZXIuZXh0ZW5kLmVuYWJsZWQgIT09IGZhbHNlKXtcblxuICAgICAgIHN0ciArPSBgPGJ1dHRvbiB0b2dnbGUtaGVhZGVyIGNsYXNzPVwiYnRuLWljb24gYnRuLWljb24tcmFpc2VkXCI+XG4gICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgPHN2ZyBzdHlsZT1cIndpZHRoOjI0cHg7aGVpZ2h0OjI0cHhcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCI+XG4gICAgICAgICAgICAgICAgICA8cGF0aCBmaWxsPVwiY3VycmVudENvbG9yXCIgZD1cIk03LjQxLDguNThMMTIsMTMuMTdMMTYuNTksOC41OEwxOCwxMEwxMiwxNkw2LDEwTDcuNDEsOC41OFpcIiAvPlxuICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L2J1dHRvbj5gO1xuICAgICB9XG5cblxuICAgICAgICBzdHIgKz0gYCA8ZGl2IGNsYXNzPVwiYnV0dG9uLXJpZ2h0LWNvbnRhaW5lclwiPjwvZGl2PlxuICAgICAgICA8L2Rpdj5gO1xuICAgICAgICAgIC8qXG4gICAgICAgICAgYFxuICAgICAgICAgIDxidXR0b24gdG9nZ2xlLXNpZGViYXItcmlnaHQgY2xhc3M9XCJidG4taWNvbiBidG4taWNvbi1yYWlzZWRcIj5cbiAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICA8c3ZnIHN0eWxlPVwid2lkdGg6MjRweDtoZWlnaHQ6MjRweFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj5cbiAgICAgICAgICAgICAgICAgIDxwYXRoIGZpbGw9XCJjdXJyZW50Q29sb3JcIiBkPVwiTTE1LjQxLDE2LjU4TDEwLjgzLDEyTDE1LjQxLDcuNDFMMTQsNkw4LDEyTDE0LDE4TDE1LjQxLDE2LjU4WlwiIC8+XG4gICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICA8L2Rpdj5cbiAgICBgO1xuICAgICovXG5cblxuICAgIGxldCAkciA9IGRvbS5jcmVhdGVFbGVtZW50RnJvbUhUTUwoc3RyKTtcbiAgICAkZWxlbS5yZXBsYWNlV2l0aCgkcik7XG5cbiAgICBpZihjb25maWcudGltZWxpbmUuaGVhZGVyLnJpZ2h0QnV0dG9ucyl7XG4gICAgICBsZXQgJGJ1dHRvbkNvbnRhaW5lciA9ICRyLnF1ZXJ5U2VsZWN0b3IoXCIuYnV0dG9uLXJpZ2h0LWNvbnRhaW5lclwiKTtcbiAgICAgIGNvbmZpZy50aW1lbGluZS5oZWFkZXIucmlnaHRCdXR0b25zLmZvckVhY2goYnV0dG9uID0+IHtcbiAgICAgICAgbGV0IHN0ciA9IGA8YnV0dG9uIGNsYXNzPVwiYnRuLWljb24gYnRuLWljb24tcmFpc2VkXCI+XG4gICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgPHN2ZyBzdHlsZT1cIndpZHRoOjI0cHg7aGVpZ2h0OjI0cHhcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCI+XG4gICAgICAgICAgICAgICAgICA8cGF0aCBmaWxsPVwiY3VycmVudENvbG9yXCIgZD1cIiR7YnV0dG9uLmljb259XCIgLz5cbiAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9idXR0b24+YDtcbiAgICAgICAgbGV0ICRidXR0b24gPSBkb20uY3JlYXRlRWxlbWVudEZyb21IVE1MKHN0cik7XG4gICAgICAgICRidXR0b24uYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGV2dCA9PiBidXR0b24ub25DbGljayh7ZXZ0fSkgKTtcbiAgICAgICAgJGJ1dHRvbkNvbnRhaW5lci5hcHBlbmQoJGJ1dHRvbik7XG4gICAgICB9KTtcbiAgICB9XG5cblxuICAgIGxldCAkdG9nZ2xlRGFyayA9ICRyLnF1ZXJ5U2VsZWN0b3IoXCJbdG9nZ2xlLWRhcmtdXCIpO1xuICAgIGlmKCR0b2dnbGVEYXJrKXtcbiAgICAgICR0b2dnbGVEYXJrLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBlID0+IHtcbiAgICAgICAgJHIuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoXCJ0b2dnbGVEYXJrXCIsIHtcbiAgICAgICAgICBidWJibGVzOiB0cnVlLFxuICAgICAgICAgIGNhbmNlbGFibGU6IGZhbHNlLFxuICAgICAgICB9KSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBsZXQgJGJ0bkNhbGVuZGFyID0gJHIucXVlcnlTZWxlY3RvcihcIltidG4tY2FsZW5kYXJdXCIpXG4gICAgaWYoJGJ0bkNhbGVuZGFyKXtcbiAgICAgICRidG5DYWxlbmRhci5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgZSA9PiB7XG4gICAgICAgIGxldCB4ID0gZS54O1xuICAgICAgICBsZXQgeSA9IGUueTtcbiAgICAgICAgJHIuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoXCJjbGlja0NhbGVuZGFySWNvblwiLCB7XG4gICAgICAgICAgYnViYmxlczogdHJ1ZSxcbiAgICAgICAgICBjYW5jZWxhYmxlOiBmYWxzZSxcbiAgICAgICAgICBkZXRhaWw6e3gsIHl9XG4gICAgICAgIH0pKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGxldCAkYnRuVG9nZ2xlSGVhZGVyID0gICRyLnF1ZXJ5U2VsZWN0b3IoXCJbdG9nZ2xlLWhlYWRlcl1cIilcbiAgICBpZigkYnRuVG9nZ2xlSGVhZGVyKXtcbiAgICAgICRidG5Ub2dnbGVIZWFkZXIuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGUgPT4ge1xuICAgICAgICAkci5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudChcInRvZ2dsZUhlYWRlclwiLCB7XG4gICAgICAgICAgYnViYmxlczogdHJ1ZSxcbiAgICAgICAgICBjYW5jZWxhYmxlOiBmYWxzZSxcbiAgICAgICAgfSkpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLypcbiAgICAkci5xdWVyeVNlbGVjdG9yKFwiW3RvZ2dsZS1zaWRlYmFyLXJpZ2h0XVwiKS5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgZSA9PiB7XG4gICAgICAkci5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudChcInRvZ2dsZVNpZGViYXJSaWdodFwiLCB7XG4gICAgICAgIGJ1YmJsZXM6IHRydWUsXG4gICAgICAgIGNhbmNlbGFibGU6IGZhbHNlLFxuICAgICAgfSkpO1xuICAgIH0pO1xuICAgICovXG5cbiAgICAkci5xdWVyeVNlbGVjdG9yKFwiW2J0bi1wcmV2XVwiKS5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgZSA9PiB7XG4gICAgICAkci5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudChcImhlYWRlclByZXZcIiwge1xuICAgICAgICBidWJibGVzOiB0cnVlLFxuICAgICAgICBjYW5jZWxhYmxlOiBmYWxzZSxcbiAgICAgICAgZGV0YWlsOntcbiAgICAgICAgICBvcmlnaW5hbEV2dDogZVxuICAgICAgICB9XG4gICAgICB9KSk7XG4gICAgfSk7XG5cbiAgICAkci5xdWVyeVNlbGVjdG9yKFwiW2J0bi1jYWxlbmRhcl1cIikuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGUgPT4ge1xuICAgICAgJHIuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoXCJoZWFkZXJDYWxlbmRhclwiLCB7XG4gICAgICAgIGJ1YmJsZXM6IHRydWUsXG4gICAgICAgIGNhbmNlbGFibGU6IGZhbHNlLFxuICAgICAgICBkZXRhaWw6e1xuICAgICAgICAgIG9yaWdpbmFsRXZ0OiBlXG4gICAgICAgIH1cbiAgICAgIH0pKTtcbiAgICB9KTtcblxuICAgICRyLnF1ZXJ5U2VsZWN0b3IoXCJbYnRuLW5leHRdXCIpLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBlID0+IHtcbiAgICAgICRyLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KFwiaGVhZGVyTmV4dFwiLCB7XG4gICAgICAgIGJ1YmJsZXM6IHRydWUsXG4gICAgICAgIGNhbmNlbGFibGU6IGZhbHNlLFxuICAgICAgICBkZXRhaWw6e1xuICAgICAgICAgIG9yaWdpbmFsRXZ0OiBlXG4gICAgICAgIH1cbiAgICAgIH0pKTtcbiAgICB9KTtcblxuXG4gICAgJHIucXVlcnlTZWxlY3RvckFsbChcIi5sZWdlbmRcIikuZm9yRWFjaCgkbGVnZW5kID0+IHtcbiAgICAgICRsZWdlbmQuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGUgPT4ge1xuXG4gICAgICAgICAgbGV0IGtleSA9IGUuY3VycmVudFRhcmdldC5nZXRBdHRyaWJ1dGUoXCJpbnB1dC1rZXlcIik7XG5cbiAgICAgICAgICBpZihrZXkpe1xuICAgICAgICAgICAgbGV0IGxlZ2VuZFNlbGVjdGVkID0gdGFiU2VsZWN0ZWQubGVnZW5kcy5maW5kKHRhYiA9PiB0YWIua2V5ID09PSBrZXkpO1xuICAgICAgICAgICAgaWYobGVnZW5kU2VsZWN0ZWQpe1xuICAgICAgICAgICAgICAkci5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudChcInNlbGVjdExlZ2VuZEhlYWRlclwiLCB7XG4gICAgICAgICAgICAgICAgYnViYmxlczogdHJ1ZSxcbiAgICAgICAgICAgICAgICBjYW5jZWxhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBkZXRhaWw6e1xuICAgICAgICAgICAgICAgICAgbGVnZW5kOiBsZWdlbmRTZWxlY3RlZCxcbiAgICAgICAgICAgICAgICAgICRsZWdlbmRcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgIH0pO1xuICAgIH0pO1xuXG5cbiAgICAkci5xdWVyeVNlbGVjdG9yQWxsKFwiLnRhYjpub3QoLmRpc2FibGVkKVwiKS5mb3JFYWNoKCR0YWIgPT4ge1xuICAgICAgJHRhYi5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgZSA9PiB7XG5cbiAgICAgICAgICBsZXQga2V5ID0gZS5jdXJyZW50VGFyZ2V0LmdldEF0dHJpYnV0ZShcImlucHV0LWtleVwiKTtcblxuICAgICAgICAgIGlmKGtleSl7XG4gICAgICAgICAgICBsZXQgdGFiU2VsZWN0ZWQgPSBjb25maWcudGltZWxpbmUudGFicy5maW5kKHRhYiA9PiB0YWIuaWQgPT0ga2V5KTtcbiAgICAgICAgICAgIGlmKHRhYlNlbGVjdGVkICl7XG4gICAgICAgICAgICAgICRyLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KFwic2VsZWN0VGFiSGVhZGVyXCIsIHtcbiAgICAgICAgICAgICAgICBidWJibGVzOiB0cnVlLFxuICAgICAgICAgICAgICAgIGNhbmNlbGFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGRldGFpbDp7XG4gICAgICAgICAgICAgICAgICB0YWI6IHRhYlNlbGVjdGVkXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICB9KTtcbiAgICB9KTtcblxuXG5cbiAgICAkci5xdWVyeVNlbGVjdG9yQWxsKFwiLnRhYnMtc2VsZWN0Om5vdCguZGlzYWJsZWQpXCIpLmZvckVhY2goJHRhYiA9PiB7XG4gICAgICAkdGFiLmFkZEV2ZW50TGlzdGVuZXIoXCJjaGFuZ2VcIiwgZSA9PiB7XG5cbiAgICAgICAgICBsZXQga2V5ID0gcGFyc2VGbG9hdChlLmN1cnJlbnRUYXJnZXQudmFsdWUpO1xuXG4gICAgICAgICAgaWYoa2V5KXtcbiAgICAgICAgICAgIGxldCB0YWJTZWxlY3RlZCA9IGNvbmZpZy50aW1lbGluZS50YWJzLmZpbmQodGFiID0+IHRhYi5pZCA9PSBrZXkpO1xuICAgICAgICAgICAgaWYodGFiU2VsZWN0ZWQpe1xuICAgICAgICAgICAgICAkci5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudChcInNlbGVjdFRhYkhlYWRlclwiLCB7XG4gICAgICAgICAgICAgICAgYnViYmxlczogdHJ1ZSxcbiAgICAgICAgICAgICAgICBjYW5jZWxhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBkZXRhaWw6e1xuICAgICAgICAgICAgICAgICAgdGFiOiB0YWJTZWxlY3RlZFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgfSk7XG4gICAgfSk7XG5cblxuICAgIHJldHVybiAkcjtcblxuICB9LFxuXG5cblxuICAvKipcbiAgICogQ3JlYSBIZWFkZXJcbiAgICogU2UgdXNhIHBhcmEgOlxuICAgKiAgICAtIE1vc3RyYXIgZmVjaGFzIGVuIGhlYWRlclxuICAgKlxuICAgKiBAcGFyYW0ge09iamVjdH0gY29uZmlnIC0gQ29uZmlndXJhY2lvbiBjYXBpYmFyYVxuICAgKiBAcmV0dXJuIHtPYmplY3R9IEVsZW1lbnRvIERvbVxuICAgKi9cbiAgY3JlYXRlSGVhZGVyKGNvbmZpZyl7XG4gICAgbGV0ICRlbGVtID0gZG9tLmNyZWF0ZUVsZW1lbnQoXCJoZWFkZXJcIik7XG4gICAgcmV0dXJuIHRoaXMucmVkcmF3SGVhZGVyKGNvbmZpZywgJGVsZW0pO1xuICB9LFxuXG5cblxuICAvKipcbiAgICogUmVjcmVhIEhlYWRlciwgdXNhZG8gcGFyYSByZWRpYnVqYXJcbiAgICogdXRpbGl6YSAkZWxlbSBjb21vIGVsZW1lbnRvIGRvbSBkb25kZSByZWNyZWFybG9cbiAgICpcbiAgICogQHBhcmFtIHtPYmplY3R9IGNvbmZpZyAtIENvbmZpZ3VyYWNpb24gY2FwaWJhcmFcbiAgICogQHBhcmFtIHtPYmplY3R9ICRlbGVtIC0gRWxlbWVudG8gRG9tIGRvbmRlIGNyZWEgSGVhZGVyXG4gICAqIEByZXR1cm4ge09iamVjdH0gRWxlbWVudG8gRG9tXG4gICAqL1xuICByZWRyYXdIZWFkZXIoY29uZmlnLCAkZWxlbSl7XG4gICAgbGV0IGRhdGVzVHJlZSA9IGRhdGVVdGlscy5nZXREYXRlVHJlZVJhbmdlKG5ldyBEYXRlKGNvbmZpZy50aW1lbGluZS5zdGFydCksIG5ldyBEYXRlKGNvbmZpZy50aW1lbGluZS5lbmQpKTtcblxuICAgIGxldCBzdHIgPSBgPGRpdiBjbGFzcz1cImhlYWRlci1jb250YWluZXJcIj4gYDtcblxuICAgIE9iamVjdC5rZXlzKGRhdGVzVHJlZSkuZm9yRWFjaChrZXlZID0+IHtcbiAgICAgIGxldCB5ZWFyID0gZGF0ZXNUcmVlW2tleVldO1xuICAgICAgc3RyICs9IGA8ZGl2IGNsYXNzPVwiYWduby1jYWxlbmRhcmlvXCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYWdubyBoaWRlXCI+JHtrZXlZfTwvc3Bhbj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1lc2VzXCI+YDtcblxuICAgICAgT2JqZWN0LmtleXMoeWVhcikuZm9yRWFjaChrZXlNID0+IHtcbiAgICAgICAgbGV0IG1vbnRoID0gZGF0ZXNUcmVlW2tleVldW2tleU1dO1xuICAgICAgICBzdHIgKz0gYCA8ZGl2IGNsYXNzPVwibWVzLWNhbGVuZGFyaW9cIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1lcyAkeyBPYmplY3Qua2V5cyhtb250aCkubGVuZ3RoIDwgMyA/ICdtZXMtcmVkdWNlZCBtZXMtcmVkdWNlZC0nICsgT2JqZWN0LmtleXMobW9udGgpLmxlbmd0aCA6ICcnfVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXMtbGFiZWxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICR7dXRpbHMuZ2V0TW9udGhCeVBvc2l0aW9uKGtleU0pfSAke2tleVl9XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGlhc1wiPmA7XG4gICAgICAgIE9iamVjdC5rZXlzKG1vbnRoKS5mb3JFYWNoKGtleUQgPT4ge1xuICAgICAgICAgIGxldCBkYXkgICAgICAgPSBkYXRlc1RyZWVba2V5WV1ba2V5TV1ba2V5RF07XG4gICAgICAgICAgbGV0IGlzV2Vla2VuZCA9IGRheS5pc1dlZWtlbmQ7XG4gICAgICAgICAgbGV0IGlzVG9kYXkgICA9IGRheS5pc1RvZGF5O1xuICAgICAgICAgIGxldCBkYXRlID0gZGF0ZVV0aWxzLmZvcm1hdERhdGUoZGF5LkRhdGUpO1xuICAgICAgICAgIHN0ciArPSBgPGRpdiBjbGFzcz1cImRpYS1jYWxlbmRhcmlvICR7aXNUb2RheT8ndG9kYXknOicnfSAgJHtpc1dlZWtlbmQ/J3dlZWtlbmQnOicnfSAke2NvbmZpZy50aW1lbGluZS5kYXRlU2VsZWN0YWJsZSA/J2lzLWNsaWNrZWFibGUnOicnfVwiIGRhdGU9XCIke2RhdGV9XCI+JHtrZXlEfTwvZGl2PmA7XG4gICAgICAgIH0pO1xuICAgICAgICBzdHIgKz0gYDwvZGl2PjwvZGl2PmA7XG4gICAgICB9KTtcbiAgICAgIHN0ciArPSBgPC9kaXY+IDwvZGl2PmA7XG5cbiAgICB9KTtcblxuICAgIHN0ciAgICAgICAgICAgICArPSBgPC9kaXY+YDtcbiAgICAkZWxlbS5pbm5lckhUTUwgID0gXCJcIjtcbiAgICAkZWxlbS5hcHBlbmQoZG9tLmNyZWF0ZUVsZW1lbnRGcm9tSFRNTChzdHIpKTtcblxuICAgIGlmKGNvbmZpZy50aW1lbGluZS5kYXRlU2VsZWN0YWJsZSl7XG4gICAgICAkZWxlbS5xdWVyeVNlbGVjdG9yQWxsKFwiLmRpYS1jYWxlbmRhcmlvW2RhdGVdXCIpLmZvckVhY2goJGRpYSA9PiB7XG5cbiAgICAgICAgJGRpYS5hZGRFdmVudExpc3RlbmVyKFwiY29udGV4dG1lbnVcIiwgZXZ0ID0+IHtcblxuICAgICAgICAgICRlbGVtLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KFwiY29udGV4dE1lbnVEYXRlXCIsIHtcbiAgICAgICAgICAgIGJ1YmJsZXMgICAgOiB0cnVlLFxuICAgICAgICAgICAgY2FuY2VsYWJsZSA6IGZhbHNlLFxuICAgICAgICAgICAgZGV0YWlsICAgICA6IHtcbiAgICAgICAgICAgICAgJGVsZW06ICRkaWEsXG4gICAgICAgICAgICAgIGRhdGU6ICRkaWEuZ2V0QXR0cmlidXRlKFwiZGF0ZVwiKSxcbiAgICAgICAgICAgICAgY2xpZW50WCA6IGV2dC5jbGllbnRYLFxuICAgICAgICAgICAgICBjbGllbnRZOiBldnQuY2xpZW50WVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pKTtcbiAgICAgICAgfSk7XG5cblxuICAgICAgICAkZGlhLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBldnQgPT4ge1xuXG4gICAgICAgICAgJGVsZW0uZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoXCJjbGlja0RhdGVcIiwge1xuICAgICAgICAgICAgYnViYmxlcyAgICA6IHRydWUsXG4gICAgICAgICAgICBjYW5jZWxhYmxlIDogZmFsc2UsXG4gICAgICAgICAgICBkZXRhaWwgICAgIDoge1xuICAgICAgICAgICAgICAkZWxlbTogJGRpYSxcbiAgICAgICAgICAgICAgZGF0ZTogJGRpYS5nZXRBdHRyaWJ1dGUoXCJkYXRlXCIpLFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pKTtcbiAgICAgICAgfSk7XG5cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiAkZWxlbTtcbiAgfSxcblxuXG4gIC8qKlxuICAgKiBDcmVhIEhlYWRlciBleHRlbmRlZFxuICAgKiBTZSB1c2EgcGFyYSA6XG4gICAqICAgIC1Nb3N0cmFyIGlucHV0cyB5IGRhdG9zIHBhcmEgZmVjaGFzIGVuIGhlYWRlclxuICAgKlxuICAgKiBAcGFyYW0ge09iamVjdH0gY29uZmlnIC0gQ29uZmlndXJhY2lvbiBjYXBpYmFyYVxuICAgKiBAcmV0dXJuIHtPYmplY3R9IEVsZW1lbnRvIERvbSBoZWFkZXJFeHRlbmRlZFxuICAgKi9cbiAgY3JlYXRlSGVhZGVyRXh0ZW5kZWQoY29uZmlnKXtcbiAgICBpZihjb25maWcudGltZWxpbmUuaGVhZGVyLmV4dGVuZC5lbmFibGVkID09IGZhbHNlKSByZXR1cm4gbnVsbDtcblxuICAgIGxldCBkYXRlcyA9IGRhdGVVdGlscy5nZXREYXRlUmFuZ2UobmV3IERhdGUoY29uZmlnLnRpbWVsaW5lLnN0YXJ0KSwgbmV3IERhdGUoY29uZmlnLnRpbWVsaW5lLmVuZCkpO1xuICAgIGxldCBzdHIgICA9IGA8ZGl2IGNsYXNzPVwiaGVhZGVyLWNvbnRhaW5lci1leHRlbmRlZFwiPmA7XG5cbiAgICBjb25maWcudGltZWxpbmUuaGVhZGVyLmV4dGVuZC5kYXRhLmZvckVhY2goKGQgLCBkX2luZGV4KT0+IHtcbiAgICAgIGlmKGQuaXNIaWRkZW4pIHJldHVybiBcIlwiO1xuXG4gICAgICBsZXQgaXNQZXJzaXN0ZW50ID0gZC5pc1BlcnNpc3RlbnQ7XG4gICAgICBzdHIgKz0gYDxkaXYgY2xhc3M9XCJpbnB1dC1saXN0ICR7aXNQZXJzaXN0ZW50PydwZXJzaXN0ZW50JzonJ31cIj5gO1xuICAgICAgc3RyICs9IGRhdGVzLm1hcChkYXRlID0+IHtcblxuICAgICAgICBsZXQgdmFsdWUgPSAnJztcbiAgICAgICAgbGV0IGlzRnV0dXJlID0gZGF0ZVV0aWxzLmlzRnV0dXJlKGRhdGUpO1xuICAgICAgICBsZXQgaXNUb2RheSA9IGRhdGVVdGlscy5pc1RvZGF5KGRhdGUpO1xuXG4gICAgICAgIGlmKGQuZGF0YSl7XG4gICAgICAgICAgbGV0IGRhdGFGb3VuZGVkID0gZC5kYXRhLmZpbmQoZGF0YUlucHV0ID0+IHtcbiAgICAgICAgICAgIHJldHVybiBkYXRlVXRpbHMuaXNTYW1lRGF0ZShuZXcgRGF0ZShkYXRhSW5wdXQuZGF0ZSksIGRhdGUpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIGlmKGRhdGFGb3VuZGVkKXtcbiAgICAgICAgICAgIHZhbHVlID0gZGF0YUZvdW5kZWQudmFsdWUgfHwgJyc7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYoZC5lZGl0YWJsZSA9PT0gZmFsc2UgfHwgKCBpc0Z1dHVyZSAmJiBkLmVkaXRhYmxlRnV0dXJlID09IGZhbHNlIHx8ICggaXNUb2RheSAmJiBkLmVkaXRhYmxlVG9kYXkgPT0gZmFsc2UpKSl7XG4gICAgICAgICAgcmV0dXJuICBgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBkYXRlPVwiJHtkYXRlfVwiIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4PVwiJHtkX2luZGV4fVwiIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiJHtkYXRlLnZhck5hbWV9ICR7ZC5jb2xvcj8nYy0nK2QuY29sb3IrJy0tdGV4dCc6Jyd9XCIgPiBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAke3ZhbHVlfSBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PmBcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBpc0Rpc2FibGVkID0gZmFsc2U7XG4gICAgICAgIGlmKGNvbmZpZy50aW1lbGluZS5lZGl0YWJsZSA9PT0gZmFsc2Upe1xuICAgICAgICAgIGlzRGlzYWJsZWQgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGA8ZGl2IGNsYXNzPVwiZGlhLWlucHV0XCI+XG4gICAgICAgICAgICAgICAgICA8aW5wdXQgXG4gICAgICAgICAgICAgICAgICBkYXRlPVwiJHtkYXRlfVwiIFxuICAgICAgICAgICAgICAgICAgaW5kZXg9XCIke2RfaW5kZXh9XCIgXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImhlYWRlci1pbnB1dCBcbiAgICAgICAgICAgICAgICAgICR7ZGF0ZS52YXJOYW1lfSAke2QuY29sb3I/J2MtJytkLmNvbG9yKyctLXRleHQnOicnfVwiIFxuICAgICAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgICAgICAgICAke2lzRGlzYWJsZWQgPyAnZGlzYWJsZWQnOicnfSBcbiAgICAgICAgICAgICAgICAgIHZhbHVlPVwiJHt2YWx1ZX1cIj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5gO1xuICAgICAgfSkuam9pbihcIlwiKTtcbiAgICAgIHN0ciArPSBgPC9kaXY+YDtcbiAgICB9KTtcblxuICAgIHN0ciArPSBgPC9kaXY+YDtcblxuXG5cbiAgICBsZXQgciA9IGRvbS5jcmVhdGVFbGVtZW50RnJvbUhUTUwoc3RyKTtcblxuXG4gICAgci5xdWVyeVNlbGVjdG9yQWxsKFwiaW5wdXQuaGVhZGVyLWlucHV0XCIpLmZvckVhY2goaW5wdXQgPT4ge1xuICAgICAgaW5wdXQuYWRkRXZlbnRMaXN0ZW5lcihcImlucHV0XCIsIGUgPT4ge1xuICAgICAgICBsZXQgZGF0ZSAgICAgPSBlLmN1cnJlbnRUYXJnZXQuZ2V0QXR0cmlidXRlKFwiZGF0ZVwiKTtcbiAgICAgICAgbGV0IGluZGV4ICAgID0gZS5jdXJyZW50VGFyZ2V0LmdldEF0dHJpYnV0ZShcImluZGV4XCIpO1xuICAgICAgICBsZXQgdmFsdWUgICAgPSBlLmN1cnJlbnRUYXJnZXQudmFsdWU7XG4gICAgICAgIGxldCB0eXBlRGF0YSA9IGNvbmZpZy50aW1lbGluZS5oZWFkZXIuZXh0ZW5kLmRhdGFbaW5kZXhdO1xuXG4gICAgICAgIC8vcmVmcmVzaCBjb25maWcgdmFsdWVcbiAgICAgICAgbGV0IGRhdGEgPSB0eXBlRGF0YS5kYXRhLmZpbmQoIGQgPT4gZGF0ZVV0aWxzLmlzU2FtZURhdGUobmV3IERhdGUoZC5kYXRlKSwgbmV3IERhdGUoZGF0ZSkgKSApO1xuICAgICAgICBkYXRhLnZhbHVlID0gdmFsdWU7XG5cbiAgICAgICAgci5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudChcImNoYW5nZUlucHV0SGVhZGVyXCIsIHtcbiAgICAgICAgICBidWJibGVzICAgIDogdHJ1ZSxcbiAgICAgICAgICBjYW5jZWxhYmxlIDogZmFsc2UsXG4gICAgICAgICAgZGV0YWlsICAgICA6IHtcbiAgICAgICAgICAgIGRhdGUgICAgIDogZGF0ZSxcbiAgICAgICAgICAgIHR5cGVEYXRhIDogdHlwZURhdGEsXG4gICAgICAgICAgICB2YWx1ZSAgICA6IHZhbHVlXG4gICAgICAgICAgfVxuICAgICAgICB9KSk7XG4gICAgICB9KVxuICAgIH0pXG5cblxuICAgIHJldHVybiByO1xuICB9LFxuXG5cblxuXG4gIC8qKlxuICAgKiBDcmVhciBTaWRlYmFyIEl6cXVpZXJkb1xuICAgKiAgICAtIE1hbmVqYSBpdGVtcyBjb21vIGFyYm9sIGRlIDIgbml2ZWxlcyAocGFyZW50LCBjaGlsZHJlbilcbiAgICogICAgLSBFbCBzaWRlYmFyIHNlIGRpdmlkZSBlbiBuYXZMaXN0IC0gSW5pdGlhbE5hdiAtIGV4dGVuZGVkTmF2IC0gQnRuTmF2XG4gICAqICAgIC0gU2UgYWdyZWdhIGl0ZW1EZXRhaWwsIHBhcmEgZGV0YWxsZXMgZGUgaXRlbXNcbiAgICpcbiAgICpcbiAgICogVE9ETzogcGFyYSBldml0YXIgaW5jcnVzdGFyIGxhcyBpZHMgZW4gbG9zIGlucHV0cywgc2UgZGViZW4gY3JlYXJcbiAgICogbG9zIG5vZG9zIHVubyBwb3IgdW5vIGNvbW8gZWxlbWVudG8gRE9NLCB5IGFncmVnYXJsZXMgbG9zIGV2ZW50b3MgZGlyZWN0YW1lbnRlXG4gICAqIGFob3JhIHNlIGhhY2Ugc2VsZWNjaW9uYW5kbyB0b2RvcyBsb3MgaW5wdXRzIGNvbiBxdWVyeVNlbGVjdG9yQWxsXG4gICAqXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBjb25maWcgLSBDb25maWd1cmFjaW9uIGNhcGliYXJhXG4gICAqIEByZXR1cm4ge09iamVjdH0gRWxlbWVudG8gRG9tIFNpZGViYXIgSXpxdWllcmRvXG4gICAqL1xuICBjcmVhdGVOYXZMZWZ0KGNvbmZpZywgdGFiID0gbnVsbCl7XG4gICAgbGV0ICRlbGVtID0gZG9tLmNyZWF0ZUVsZW1lbnQoXCJuYXZcIiwge2NsYXNzTmFtZTpcImxlZnRcIn0pO1xuICAgIHJldHVybiB0aGlzLnJlZHJhd05hdkxlZnQoJGVsZW0sIGNvbmZpZyx0YWIpO1xuICB9LFxuXG4gIC8qKlxuICAgKiBSZWNyZWEgU2lkZWJhciBpenF1aWVyZG8sIHVzYWRvIHBhcmEgcmVkaWJ1amFyXG4gICAqIFV0aWxpemEgJGVsZW0gY29tbyBlbGVtZW50byBkb20gZG9uZGUgcmVjcmVhcmxvXG4gICAqXG4gICAqXG4gICAqIEBwYXJhbSB7T2JqZWN0fSAkZWxlbSAtIEVsZW1lbnRvIERvbSBkb25kZSBjcmVhIGVsIHNpZGViYXIgaXpxdWllcmRvXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBjb25maWcgLSBDb25maWd1cmFjaW9uIGNhcGliYXJhXG4gICAqIEByZXR1cm4ge09iamVjdH0gRWxlbWVudG8gRG9tIG5hdkxlZnRcbiAgICovXG5cbiAgcmVkcmF3TmF2TGVmdCgkZWxlbSwgY29uZmlnLCB0YWIgPSBudWxsKXtcblxuICAgIGxldCBuYXZMaXN0ICAgICAgICA9IFwiXCI7XG4gICAgbGV0IGluaXRpYWxOYXZMaXN0ID0gXCJcIjtcbiAgICBsZXQgZXhOYXZMaXN0ICAgICAgPSBcIlwiO1xuICAgIGxldCBidG5OYXZMaXN0ICAgICA9IFwiXCI7XG4gICAgbGV0IGlzRGlzYWJsZWQgICAgID0gZmFsc2U7XG4gICAgaWYoY29uZmlnLnRpbWVsaW5lLmVkaXRhYmxlID09PSBmYWxzZSl7XG4gICAgICBpc0Rpc2FibGVkID0gdHJ1ZTtcbiAgICB9XG5cblxuXG5cbiAgICBjb25maWcuZGF0YS5mb3JFYWNoKGQgPT4ge1xuXG4gICAgICAgbmF2TGlzdCArPSBgXG4gICAgICAgPGRpdiBjbGFzcz1cIm5hdi1pdGVtXCI+XG5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwibmF2LWl0ZW0tY29udGFpbmVyIHBhcmVudFwiPmBcblxuICAgICAgICBpZihkLmNoaWxkcmVuKXtcbiAgICAgICAgICAgbmF2TGlzdCArPSBgPGJ1dHRvbiBjbGFzcz1cInRyZWUtaWNvbiAke2QuaGlkZGVuID8gJycgOidyb3RhdGUnfVwiIGl0ZW0taWQ9XCIke2QuaWQgfHwgLTF9XCIgdHlwZS1ub2RlPVwiJHtkLnR5cGUgfHwgJyd9XCIgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHN0eWxlPVwid2lkdGg6MjRweDtoZWlnaHQ6MjRweFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZmlsbD1cImN1cnJlbnRDb2xvclwiIGQ9XCJNNy40MSw4LjU4TDEyLDEzLjE3TDE2LjU5LDguNThMMTgsMTBMMTIsMTZMNiwxMEw3LjQxLDguNThaXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5gO1xuICAgICAgICB9XG5cbiAgICAgICBuYXZMaXN0ICs9IGBcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaXRlbS10aXRsZSB0cnVuY2F0ZSBmdWxsLXdpZHRoICR7ZC5jbGlja2VhYmxlID8gJ2NsaWNrZWFibGUnOicnfSBcIiBpdGVtLWlkPVwiJHtkLmlkIHx8IC0xfVwiIHR5cGUtbm9kZT1cIiR7ZC50eXBlIHx8ICcnfVwiID5cbiAgICAgICAgICAgICR7ZC5sYWJlbH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+YDtcblxuICAgICAgICBpZihkLmNoaWxkcmVuKXtcbiAgICAgICAgICAgbmF2TGlzdCArPSBgXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlsZHJlbi1pdGVtcyAke2QuaGlkZGVuID8gJ2hpZGUnIDonJ30gXCIgY2hpbGQtbGlzdD1cIiR7ZC5pZCB8fCAtMX1cIj5gXG5cbiAgICAgICAgICBkLmNoaWxkcmVuLmZvckVhY2goYyA9PiB7XG4gICAgICAgICAgICBuYXZMaXN0ICs9ICBgXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoaWxkLW5hdi1pdGVtXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibmF2LWl0ZW0tY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgIGA7XG5cbiAgICAgICAgICAgICAgICAgICAgLypcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJuYXYtaXRlbS1pY29uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHN2ZyBzdHlsZT1cIndpZHRoOjI0cHg7aGVpZ2h0OjI0cHhcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGZpbGw9XCJjdXJyZW50Q29sb3JcIiBkPVwiTTE5LDE1TDEzLDIxTDExLjU4LDE5LjU4TDE1LjE3LDE2SDRWNEg2VjE0SDE1LjE3TDExLjU4LDEwLjQyTDEzLDlMMTksMTVaXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICovXG5cbiAgICAgICAgICAgIG5hdkxpc3QgKz0gIGBcbiAgICAgICAgICAgICAgICAgICAgJHsgYy5saWdodCA/ICc8c3BhbiBjbGFzcz1cImxpZ2h0ICcrIChjLmxpZ2h0ID8gKGMubGlnaHQrJy1saWdodCcpOicnKSArJ1wiPjwvc3Bhbj4nIDogJycgfVxuXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpdGVtLXRpdGxlICR7Yy5jbGlja2VhYmxlID8gJ2NsaWNrZWFibGUnOicnfVwiIGl0ZW0taWQ9XCIke2MuaWQgfHwgLTF9XCIgdHlwZS1ub2RlPVwiJHtjLnR5cGUgfHwgJyd9XCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRydW5jYXRlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAke2MubGFiZWx9XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+YDtcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgbmF2TGlzdCArPSBgXG4gICAgICAgICAgICAgIDwvZGl2PmA7XG4gICAgICAgIH1cblxuICAgICAgIG5hdkxpc3QgKz0gYDwvZGl2PmA7XG5cblxuXG5cblxuICAgICAgLy9pbml0aWFsXG4gICAgICBpbml0aWFsTmF2TGlzdCArPSBgPGRpdiBjbGFzcz1cImluaXRpYWwtbmF2LWl0ZW0gcGFyZW50XCI+YDtcbiAgICAgIGlmKGQud2l0aE5hdil7XG4gICAgICAgIGNvbmZpZy50aW1lbGluZS5uYXYubGVmdC5pbml0aWFsLnZhcnMuZm9yRWFjaCh2ID0+IHtcbiAgICAgICAgICBsZXQgdmFsdWUgPSBkLnZhbHVlc1t2LnZhck5hbWVdID8gZC52YWx1ZXNbdi52YXJOYW1lXSA6ICcnO1xuICAgICAgICAgIGlmKHYucm91bmQgJiYgIWlzTmFOKHZhbHVlKSl7XG4gICAgICAgICAgICB2YWx1ZSA9IHV0aWxzLnJvdW5kKHZhbHVlLCB2LnJvdW5kKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYodi5pbnB1dCl7XG5cbiAgICAgICAgICAgIHN3aXRjaCAodi5pbnB1dCkge1xuICAgICAgICAgICAgICBjYXNlICdob3VyJzpcbiAgICAgICAgICAgICAgICB2YWx1ZSAgID0gdmFsdWUuc3BsaXQoXCI6XCIpO1xuICAgICAgICAgICAgICAgIGxldCBoaFZhbHVlID0gdmFsdWVbMF07XG4gICAgICAgICAgICAgICAgbGV0IG1tVmFsdWUgPSB2YWx1ZVsxXTtcbiAgICAgICAgICAgICAgICBpbml0aWFsTmF2TGlzdCArPSBgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIml0ZW0tY29sIGhhcy1pbnB1dFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhvdXItaW5wdXRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJudW1iZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dC10eXBlPVwidGltZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heD1cIjIzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluPVwiMDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dC1rZXk9XCIke3Yua2V5IHx8ICcnfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0taWQ9XCIke2QuaWQgfHwgLTF9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZS1ub2RlPVwiJHtkLnR5cGUgfHwgJyd9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9XCIke2hoVmFsdWV9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtpc0Rpc2FibGVkID8gJ2Rpc2FibGVkJzonJ31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJoaFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj46PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0LXR5cGU9XCJ0aW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4PVwiNTlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW49XCIwMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0LWtleT1cIiR7di5rZXkgfHwgJyd9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS1pZD1cIiR7ZC5pZCB8fCAtMX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlLW5vZGU9XCIke2QudHlwZSB8fCAnJ31cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT1cIiR7bW1WYWx1ZX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2lzRGlzYWJsZWQgPyAnZGlzYWJsZWQnOicnfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1tXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5gO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICBjYXNlICd0ZXh0JzpcbiAgICAgICAgICAgICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBpbml0aWFsTmF2TGlzdCArPSBgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIml0ZW0tY29sIGhhcy1pbnB1dFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0ICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cIiR7di5pbnB1dCB8fCAndGV4dCd9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXQtdHlwZT1cIiR7di5pbnB1dCB8fCAndGV4dCd9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXQta2V5PVwiJHt2LmtleSB8fCAnJ31cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLWlkPVwiJHtkLmlkIHx8IC0xfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUtbm9kZT1cIiR7ZC50eXBlIHx8ICcnfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7aXNEaXNhYmxlZCA/ICdkaXNhYmxlZCc6Jyd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPVwiJHt2YWx1ZX1cIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+YDtcbiAgICAgICAgICAgIH1cblxuXG4gICAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICBpbml0aWFsTmF2TGlzdCArPSBgXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpdGVtLWNvbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7dmFsdWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PmA7XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICAgaW5pdGlhbE5hdkxpc3QgKz0gYFxuICAgICAgICAgICAgICAgICAgPC9kaXY+YDtcblxuICAgICAgaWYoZC5jaGlsZHJlbil7XG4gICAgICAgIGQuY2hpbGRyZW4uZm9yRWFjaChjID0+IHtcbiAgICAgICAgICBpbml0aWFsTmF2TGlzdCArPSBgPGRpdiBjbGFzcz1cImNoaWxkLWluaXRpYWwtbmF2LWl0ZW0gJHtkLmhpZGRlbiA/ICdoaWRlJyA6Jyd9XCIgY2hpbGQ9XCIke2QuaWQgfHwgLTF9XCI+YDtcbiAgICAgICAgICBjb25maWcudGltZWxpbmUubmF2LmxlZnQuaW5pdGlhbC52YXJzLmZvckVhY2godiA9PiB7XG5cbiAgICAgICAgICAgICAgaWYodi5vbmx5VGFiICYmIHRhYiAmJiB2Lm9ubHlUYWIgIT09IHRhYi5rZXkpIHJldHVybjtcblxuICAgICAgICAgICAgICBsZXQgdmFsdWUgPSBjLnZhbHVlc1t2LnZhck5hbWVdID8gYy52YWx1ZXNbdi52YXJOYW1lXSA6ICcnO1xuICAgICAgICAgICAgICBpZih2LnJvdW5kICYmICFpc05hTih2YWx1ZSkpe1xuICAgICAgICAgICAgICAgIHZhbHVlID0gdXRpbHMucm91bmQodmFsdWUsIHYucm91bmQpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmKHYuaW5wdXQpe1xuXG4gICAgICAgICAgICAgICAgc3dpdGNoICh2LmlucHV0KSB7XG4gICAgICAgICAgICAgICAgICBjYXNlICdob3VyJzpcbiAgICAgICAgICAgICAgICAgIHZhbHVlICAgPSB2YWx1ZS5zcGxpdChcIjpcIik7XG4gICAgICAgICAgICAgICAgICBsZXQgaGhWYWx1ZSA9IHZhbHVlWzBdO1xuICAgICAgICAgICAgICAgICAgbGV0IG1tVmFsdWUgPSB2YWx1ZVsxXTtcbiAgICAgICAgICAgICAgICAgIGluaXRpYWxOYXZMaXN0ICs9IGBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIml0ZW0tY29sIGhhcy1pbnB1dFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJob3VyLWlucHV0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dC10eXBlPVwidGltZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXg9XCIyM1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW49XCIwMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dC1rZXk9XCIke3Yua2V5IHx8ICcnfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLWlkPVwiJHtjLmlkIHx8IC0xfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlLW5vZGU9XCIke2MudHlwZSB8fCAnJ31cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9XCIke2hoVmFsdWV9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7aXNEaXNhYmxlZCA/ICdkaXNhYmxlZCc6Jyd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImhoXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj46PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJudW1iZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXQtdHlwZT1cInRpbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4PVwiNTlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluPVwiMDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXQta2V5PVwiJHt2LmtleSB8fCAnJ31cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS1pZD1cIiR7Yy5pZCB8fCAtMX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZS1ub2RlPVwiJHtjLnR5cGUgfHwgJyd9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPVwiJHttbVZhbHVlfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2lzRGlzYWJsZWQgPyAnZGlzYWJsZWQnOicnfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5gO1xuICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICBjYXNlICd0ZXh0JzpcbiAgICAgICAgICAgICAgICAgIGNhc2UgJ251bWJlcic6XG4gICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgaW5pdGlhbE5hdkxpc3QgKz0gYFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaXRlbS1jb2wgaGFzLWlucHV0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiJHt2LmlucHV0IHx8ICd0ZXh0J31cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXQtdHlwZT1cIiR7di5pbnB1dCB8fCAndGV4dCd9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0LWtleT1cIiR7di5rZXkgfHwgJyd9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0taWQ9XCIke2MuaWQgfHwgLTF9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUtbm9kZT1cIiR7Yy50eXBlIHx8ICcnfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2lzRGlzYWJsZWQgPyAnZGlzYWJsZWQnOicnfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9XCIke3ZhbHVlfVwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+YDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICAgICAgaW5pdGlhbE5hdkxpc3QgKz0gYFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIml0ZW0tY29sXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7dmFsdWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5gO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgfSlcbiAgICAgICAgICAgaW5pdGlhbE5hdkxpc3QgKz0gYFxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PmA7XG4gICAgICAgIH0pXG4gICAgICB9XG5cblxuXG5cblxuXG5cblxuICAgICAgLy9FeHRcbiAgICAgIGV4TmF2TGlzdCArPSBgPGRpdiBjbGFzcz1cImV4LW5hdi1pdGVtIHBhcmVudFwiPmA7XG4gICAgICBpZihkLndpdGhFeE5hdil7XG4gICAgICAgIGNvbmZpZy50aW1lbGluZS5uYXYubGVmdC5leHRlbmQudmFycy5mb3JFYWNoKHYgPT4ge1xuICAgICAgICAgIGxldCB2YWx1ZSA9IGQudmFsdWVzW3YudmFyTmFtZV0gPyBkLnZhbHVlc1t2LnZhck5hbWVdIDogJyc7XG4gICAgICAgICAgaWYodi5yb3VuZCAmJiAhaXNOYU4odmFsdWUpKXtcbiAgICAgICAgICAgIHZhbHVlID0gdXRpbHMucm91bmQodmFsdWUsIHYucm91bmQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZih2LmlucHV0KXtcbiAgICAgICAgICAgIHN3aXRjaCAodi5pbnB1dCkge1xuICAgICAgICAgICAgICBjYXNlICdob3VyJzpcbiAgICAgICAgICAgICAgICB2YWx1ZSAgID0gdmFsdWUuc3BsaXQoXCI6XCIpO1xuICAgICAgICAgICAgICAgIGxldCBoaFZhbHVlID0gdmFsdWVbMF07XG4gICAgICAgICAgICAgICAgbGV0IG1tVmFsdWUgPSB2YWx1ZVsxXTtcbiAgICAgICAgICAgICAgICBleE5hdkxpc3QgKz0gYFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpdGVtLWNvbCBoYXMtaW5wdXRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJob3VyLWlucHV0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXQtdHlwZT1cInRpbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXg9XCIyM1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbj1cIjBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dC1rZXk9XCIke3Yua2V5IHx8ICcnfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0taWQ9XCIke2QuaWQgfHwgLTF9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZS1ub2RlPVwiJHtkLnR5cGUgfHwgJyd9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9XCIke2hoVmFsdWV9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtpc0Rpc2FibGVkID8gJ2Rpc2FibGVkJzonJ31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJoaFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj46PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0LXR5cGU9XCJ0aW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4PVwiNTlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW49XCIwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXQta2V5PVwiJHt2LmtleSB8fCAnJ31cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLWlkPVwiJHtkLmlkIHx8IC0xfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUtbm9kZT1cIiR7ZC50eXBlIHx8ICcnfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPVwiJHttbVZhbHVlfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7aXNEaXNhYmxlZCA/ICdkaXNhYmxlZCc6Jyd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PmA7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIGNhc2UgJ3RleHQnOlxuICAgICAgICAgICAgICBjYXNlICdudW1iZXInOlxuICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGV4TmF2TGlzdCArPSBgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIml0ZW0tY29sIGhhcy1pbnB1dFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCIke3YuaW5wdXQgfHwgJ3RleHQnfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0LXR5cGU9XCIke3YuaW5wdXQgfHwgJ3RleHQnfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0LWtleT1cIiR7di5rZXkgfHwgJyd9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS1pZD1cIiR7ZC5pZCB8fCAtMX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlLW5vZGU9XCIke2QudHlwZSB8fCAnJ31cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2lzRGlzYWJsZWQgPyAnZGlzYWJsZWQnOicnfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT1cIiR7dmFsdWV9XCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PmA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICB9ZWxzZXtcbiAgICAgICAgICAgIGV4TmF2TGlzdCArPSBgXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpdGVtLWNvbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7dmFsdWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PmA7XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICAgZXhOYXZMaXN0ICs9IGBcbiAgICAgICAgICAgICAgICAgIDwvZGl2PmA7XG5cbiAgICAgIGlmKGQuY2hpbGRyZW4pe1xuICAgICAgICBkLmNoaWxkcmVuLmZvckVhY2goYyA9PiB7XG4gICAgICAgICAgZXhOYXZMaXN0ICs9IGA8ZGl2IGNsYXNzPVwiY2hpbGQtZXgtbmF2LWl0ZW0gJHtkLmhpZGRlbiA/ICdoaWRlJyA6Jyd9XCIgY2hpbGQ9XCIke2QuaWQgfHwgLTF9XCI+YDtcbiAgICAgICAgICBjb25maWcudGltZWxpbmUubmF2LmxlZnQuZXh0ZW5kLnZhcnMuZm9yRWFjaCh2ID0+IHtcblxuICAgICAgICAgICAgICBpZih2Lm9ubHlUYWIgJiYgdGFiICYmIHYub25seVRhYiAhPT0gdGFiLmtleSkgcmV0dXJuO1xuXG4gICAgICAgICAgICAgIGxldCB2YWx1ZSA9IGMudmFsdWVzW3YudmFyTmFtZV0gPyBjLnZhbHVlc1t2LnZhck5hbWVdIDogJyc7XG4gICAgICAgICAgICAgIGlmKHYucm91bmQgJiYgIWlzTmFOKHZhbHVlKSl7XG4gICAgICAgICAgICAgICAgdmFsdWUgPSB1dGlscy5yb3VuZCh2YWx1ZSwgdi5yb3VuZCk7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZih2LmlucHV0KXtcblxuICAgICAgICAgICAgICAgIHN3aXRjaCAodi5pbnB1dCkge1xuICAgICAgICAgICAgICAgICAgY2FzZSAnaG91cic6XG4gICAgICAgICAgICAgICAgICB2YWx1ZSAgID0gdmFsdWUuc3BsaXQoXCI6XCIpO1xuICAgICAgICAgICAgICAgICAgbGV0IGhoVmFsdWUgPSB2YWx1ZVswXTtcbiAgICAgICAgICAgICAgICAgIGxldCBtbVZhbHVlID0gdmFsdWVbMV07XG4gICAgICAgICAgICAgICAgICBleE5hdkxpc3QgKz0gYFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaXRlbS1jb2wgaGFzLWlucHV0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhvdXItaW5wdXRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0LXR5cGU9XCJ0aW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heD1cIjIzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbj1cIjBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXQta2V5PVwiJHt2LmtleSB8fCAnJ31cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS1pZD1cIiR7Yy5pZCB8fCAtMX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZS1ub2RlPVwiJHtjLnR5cGUgfHwgJyd9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPVwiJHtoaFZhbHVlfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2lzRGlzYWJsZWQgPyAnZGlzYWJsZWQnOicnfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJoaFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+Ojwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0LXR5cGU9XCJ0aW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heD1cIjU5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbj1cIjBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXQta2V5PVwiJHt2LmtleSB8fCAnJ31cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS1pZD1cIiR7Yy5pZCB8fCAtMX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZS1ub2RlPVwiJHtjLnR5cGUgfHwgJyd9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPVwiJHttbVZhbHVlfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2lzRGlzYWJsZWQgPyAnZGlzYWJsZWQnOicnfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5gO1xuICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICBjYXNlICd0ZXh0JzpcbiAgICAgICAgICAgICAgICAgIGNhc2UgJ251bWJlcic6XG4gICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgZXhOYXZMaXN0ICs9IGBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIml0ZW0tY29sIGhhcy1pbnB1dFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiJHt2LmlucHV0IHx8ICd0ZXh0J31cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXQtdHlwZT1cIiR7di5pbnB1dCB8fCAndGV4dCd9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0LWtleT1cIiR7di5rZXkgfHwgJyd9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0taWQ9XCIke2MuaWQgfHwgLTF9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUtbm9kZT1cIiR7Yy50eXBlIHx8ICcnfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2lzRGlzYWJsZWQgPyAnZGlzYWJsZWQnOicnfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9XCIke3ZhbHVlfVwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+YDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICAgICAgZXhOYXZMaXN0ICs9IGBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpdGVtLWNvbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke3ZhbHVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+YDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgICAgIGV4TmF2TGlzdCArPSBgXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+YDtcbiAgICAgICAgfSlcbiAgICAgIH1cblxuXG5cblxuICAgICAgLy9idXR0b25zXG4gICAgICBidG5OYXZMaXN0ICs9IGA8ZGl2IGNsYXNzPVwiYnRuLW5hdi1pdGVtIHBhcmVudFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ0bi1uYXYtaXRlbS1jb250ZW50XCI+YDtcbiAgICAgIGlmKGNvbmZpZy50aW1lbGluZS5uYXYubGVmdC5idXR0b25zICYmIGNvbmZpZy50aW1lbGluZS5uYXYubGVmdC5idXR0b25zLnZhcnMpe1xuXG4gICAgICAgIGNvbmZpZy50aW1lbGluZS5uYXYubGVmdC5idXR0b25zLnZhcnMuZm9yRWFjaChidG4gPT4ge1xuXG5cblxuICAgICAgICAgIGlmKGQud2l0aEJ0bk5hdil7XG5cbiAgICAgICAgICAgIGlmKGJ0bi5pY29uKXtcbiAgICAgICAgICAgICAgICBidG5OYXZMaXN0ICs9IGBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4tc2hhcGUgJHtidG4uY2xhc3NOYW1lfVwiIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dC1rZXk9XCIke2J0bi5rZXkgfHwgJyd9XCIgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0taWQ9XCIke2QuaWQgfHwgLTF9XCIgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7aXNEaXNhYmxlZCA/ICdkaXNhYmxlZCc6Jyd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUtbm9kZT1cIiR7ZC50eXBlIHx8ICcnfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2J0bi5pY29uID8gYnRuLmljb24gOiAnJ31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPmA7XG4gICAgICAgICAgICB9XG5cblxuICAgICAgICAgICAgaWYoYnRuLmljb25Gb3JtYXR0ZXIpe1xuICAgICAgICAgICAgICAgIGJ0bk5hdkxpc3QgKz0gYFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0bi1zaGFwZSAke2J0bi5jbGFzc05hbWV9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXQta2V5PVwiJHtidG4ua2V5IHx8ICcnfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0taWQ9XCIke2QuaWQgfHwgLTF9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtpc0Rpc2FibGVkID8gJ2Rpc2FibGVkJzonJ31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZS1ub2RlPVwiJHtkLnR5cGUgfHwgJyd9XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7YnRuLmljb25Gb3JtYXR0ZXIgPyBidG4uaWNvbkZvcm1hdHRlcihkLCBidG4pIDogJyd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5gO1xuICAgICAgICAgICAgfVxuXG5cbiAgICAgICAgICAgIGlmKGJ0bi5zaGFwZSl7XG4gICAgICAgICAgICAgICAgYnRuTmF2TGlzdCArPSBgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuLXNoYXBlIGJ0bi0ke2J0bi5zaGFwZX0gJHtidG4uY2xhc3NOYW1lfVwiIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dC1rZXk9XCIke2J0bi5rZXkgfHwgJyd9XCIgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0taWQ9XCIke2QuaWQgfHwgLTF9XCIgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7aXNEaXNhYmxlZCA/ICdkaXNhYmxlZCc6Jyd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUtbm9kZT1cIiR7ZC50eXBlIHx8ICcnfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkeyBidG4uZm9ybWF0dGVyID8gYnRuLmZvcm1hdHRlcihkLCBidG4pIDogJyd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPmA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICB9XG5cblxuXG4gICAgICB9KVxuICAgIH1cbiAgICAgICAgICAgYnRuTmF2TGlzdCArPSBgXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PmA7XG5cblxuXG5cbiAgICAgIGlmKGQuY2hpbGRyZW4pe1xuICAgICAgICBkLmNoaWxkcmVuLmZvckVhY2goYyA9PiB7XG5cbiAgICAgICAgICAvL2J1dHRvbnNcbiAgICAgICAgICBidG5OYXZMaXN0ICs9IGA8ZGl2IGNsYXNzPVwiYnRuLWNoaWxkLW5hdi1pdGVtIHBhcmVudCAke2QuaGlkZGVuID8gJ2hpZGUnIDonJ31cIiBjaGlsZD1cIiR7ZC5pZCB8fCAtMX1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnRuLW5hdi1pdGVtLWNvbnRlbnRcIj5gO1xuXG4gICAgICAgIGlmKGNvbmZpZy50aW1lbGluZS5uYXYubGVmdC5idXR0b25zICYmIGNvbmZpZy50aW1lbGluZS5uYXYubGVmdC5idXR0b25zLnZhcnMpe1xuICAgICAgICAgIGNvbmZpZy50aW1lbGluZS5uYXYubGVmdC5idXR0b25zLnZhcnMuZm9yRWFjaChidG4gPT4ge1xuXG5cbiAgICAgICAgICBpZihidG4uaWNvbil7XG4gICAgICAgICAgICAgIGJ0bk5hdkxpc3QgKz0gYFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4tc2hhcGUgJHtidG4uY2xhc3NOYW1lfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dC1rZXk9XCIke2J0bi5rZXkgfHwgJyd9XCIgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLWlkPVwiJHtjLmlkIHx8IC0xfVwiIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtpc0Rpc2FibGVkID8gJ2Rpc2FibGVkJzonJ31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUtbm9kZT1cIiR7Yy50eXBlIHx8ICcnfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtidG4uaWNvbiA/IGJ0bi5pY29uIDogJyd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+YDtcbiAgICAgICAgICB9XG5cblxuICAgICAgICAgIGlmKGJ0bi5pY29uRm9ybWF0dGVyKXtcbiAgICAgICAgICAgICAgYnRuTmF2TGlzdCArPSBgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0bi1zaGFwZSAke2J0bi5jbGFzc05hbWV9XCIgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dC1rZXk9XCIke2J0bi5rZXkgfHwgJyd9XCIgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLWlkPVwiJHtjLmlkIHx8IC0xfVwiIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtpc0Rpc2FibGVkID8gJ2Rpc2FibGVkJzonJ31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUtbm9kZT1cIiR7Yy50eXBlIHx8ICcnfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtidG4uaWNvbkZvcm1hdHRlciA/IGJ0bi5pY29uRm9ybWF0dGVyKGMsIGJ0bikgOiAnJ31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5gO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmKGJ0bi5zaGFwZSl7XG4gICAgICAgICAgICAgIGJ0bk5hdkxpc3QgKz0gYFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4tc2hhcGUgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidG4tJHtidG4uc2hhcGV9ICR7YnRuLmNsYXNzTmFtZX1cIiBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0LWtleT1cIiR7YnRuLmtleSB8fCAnJ31cIiBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0taWQ9XCIke2MuaWQgfHwgLTF9XCIgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2lzRGlzYWJsZWQgPyAnZGlzYWJsZWQnOicnfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZS1ub2RlPVwiJHtjLnR5cGUgfHwgJyd9XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHsgYnRuLmZvcm1hdHRlciA/IGJ0bi5mb3JtYXR0ZXIoYywgYnRuKSA6ICcnfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPmA7XG4gICAgICAgICAgfVxuXG5cblxuICAgICAgICAgIH0pXG4gICAgICAgIH1cblxuICAgICAgICAgICAgICAgYnRuTmF2TGlzdCArPSBgXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+YDtcblxuICAgICAgICB9KVxuICAgICAgfVxuXG5cblxuXG4gICAgfSk7XG5cblxuXG4gICAgbGV0IGl0ZW1EZXRhaWwgPSAgYCA8ZGl2IGNsYXNzPVwiZGV0YWlsLW5hdi1pdGVtIGhpZGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgJHsgdGhpcy5nZXREZXRhaWxOYXZJdGVtQ29udGVudCgpIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PmBcblxuXG5cbiAgICBsZXQgc3RyID0gYDxkaXYgY2xhc3M9XCJuYXYtY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgJHtpdGVtRGV0YWlsfVxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibmF2LWl0ZW0tbGlzdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICR7bmF2TGlzdH1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbml0aWFsLW5hdi1saXN0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgJHtpbml0aWFsTmF2TGlzdH1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJleHRlbmQtbmF2LWxpc3RcIj5cbiAgICAgICAgICAgICAgICAgICAgICAke2V4TmF2TGlzdH1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidG4tbmF2LWxpc3RcIj5cbiAgICAgICAgICAgICAgICAgICAgICAke2J0bk5hdkxpc3R9XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+YDtcblxuICAgIGxldCBuYXZDb250YWluZXIgPSBkb20uY3JlYXRlRWxlbWVudEZyb21IVE1MKHN0cik7XG4gICAgJGVsZW0uaW5uZXJIVE1MID0gXCJcIjtcbiAgICAkZWxlbS5hcHBlbmQobmF2Q29udGFpbmVyKTtcblxuXG5cblxuICAgIC8vZGV0YWxsZSBkZSBuYXYtaXRlbVxuICAgICRlbGVtLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuaXRlbS10aXRsZS5jbGlja2VhYmxlXCIpLmZvckVhY2goaSA9PiB7XG4gICAgICAgICBpLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZW92ZXJcIiwgZSA9PiB7XG4gICAgICAgIGxldCBwb3MgICAgICA9IHV0aWxzLmV2ZW50VG9Qb3NpdGlvbk5hdkxlZnQoY29uZmlnLCBlLCRlbGVtKTtcbiAgICAgICAgbGV0IGl0ZW1JZCAgID0gaS5nZXRBdHRyaWJ1dGUoXCJpdGVtLWlkXCIpO1xuICAgICAgICBsZXQgaXRlbSAgICAgPSB1dGlscy5nZXRJdGVtQnlJZChjb25maWcsIGl0ZW1JZCk7XG4gICAgICAgIGxldCB0eXBlTm9kZSA9IGkuZ2V0QXR0cmlidXRlKFwidHlwZS1ub2RlXCIpO1xuICAgICAgICBpLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KFwib3Zlck5hdkl0ZW1cIiwge1xuICAgICAgICAgIGJ1YmJsZXMgICAgOiB0cnVlLFxuICAgICAgICAgIGNhbmNlbGFibGUgOiBmYWxzZSxcbiAgICAgICAgICBkZXRhaWwgICAgIDoge1xuICAgICAgICAgICAgb3JpZ2luYWxFdnQgOiBlLFxuICAgICAgICAgICAgaXRlbSAgICAgICAgOiBpdGVtLFxuICAgICAgICAgICAgdHlwZSAgICAgICAgOiB0eXBlTm9kZSxcbiAgICAgICAgICAgIHBvcyAgICAgICAgIDogcG9zXG4gICAgICAgICAgfVxuICAgICAgICB9KSk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuXG5cbiAgICAvL29jdWx0YSBkZXRhbGxlIGRlIG5hdi1pdGVtLCBhbCBzYWxpciBkZWwgbmF2LWl0ZW0tbGlzdFxuICAgICRlbGVtLnF1ZXJ5U2VsZWN0b3JBbGwoXCIubmF2LWl0ZW0tbGlzdFwiKS5mb3JFYWNoKGkgPT4ge1xuICAgICAgaS5hZGRFdmVudExpc3RlbmVyKFwibW91c2VsZWF2ZVwiLCBlID0+e1xuICAgICAgICBpLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KFwibGVhdmVOYXZJdGVtXCIsIHtcbiAgICAgICAgICBidWJibGVzOiB0cnVlLFxuICAgICAgICAgIGNhbmNlbGFibGU6IGZhbHNlLFxuICAgICAgICB9KSk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIC8vb2N1bHRhIGRldGFsbGUgZGUgbmF2LWl0ZW0tbGlzdCwgYWwgc2FsaXIgZGUgbmF2LWl0ZW1cbiAgICAkZWxlbS5xdWVyeVNlbGVjdG9yQWxsKFwiLml0ZW0tdGl0bGU6bm90KC5jbGlja2VhYmxlKVwiKS5mb3JFYWNoKGkgPT4ge1xuICAgICAgaS5hZGRFdmVudExpc3RlbmVyKFwibW91c2Vtb3ZlXCIsIGUgPT57XG4gICAgICAgIGkuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoXCJsZWF2ZU5hdkl0ZW1cIiwge1xuICAgICAgICAgIGJ1YmJsZXM6IHRydWUsXG4gICAgICAgICAgY2FuY2VsYWJsZTogZmFsc2UsXG4gICAgICAgIH0pKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG5cblxuXG5cbiAgICAkZWxlbS5xdWVyeVNlbGVjdG9yQWxsKFwiLml0ZW0tdGl0bGUuY2xpY2tlYWJsZVwiKS5mb3JFYWNoKGkgPT4ge1xuICAgICAgaS5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgZSA9PntcbiAgICAgICAgbGV0IGl0ZW1JZCAgID0gaS5nZXRBdHRyaWJ1dGUoXCJpdGVtLWlkXCIpO1xuICAgICAgICBsZXQgdHlwZU5vZGUgPSBpLmdldEF0dHJpYnV0ZShcInR5cGUtbm9kZVwiKTtcbiAgICAgICAgbGV0IHZhbHVlICAgID0gaS52YWx1ZTtcbiAgICAgICAgaS5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudChcImNsaWNrTmF2TGVmdEl0ZW1cIiwge1xuICAgICAgICAgIGJ1YmJsZXM6IHRydWUsXG4gICAgICAgICAgY2FuY2VsYWJsZTogZmFsc2UsXG4gICAgICAgICAgZGV0YWlsOiB7XG4gICAgICAgICAgICBpdGVtSWQ6IGl0ZW1JZCxcbiAgICAgICAgICAgIHR5cGU6dHlwZU5vZGUsXG4gICAgICAgICAgICB2YWx1ZTogdmFsdWVcbiAgICAgICAgICB9XG4gICAgICAgIH0pKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgJGVsZW0ucXVlcnlTZWxlY3RvckFsbChcImlucHV0XCIpLmZvckVhY2goaSA9PiB7XG4gICAgICBpLmFkZEV2ZW50TGlzdGVuZXIoXCJjaGFuZ2VcIiwgZSA9PntcbiAgICAgICAgbGV0IGlucHV0VHlwZT0gaS5nZXRBdHRyaWJ1dGUoXCJpbnB1dC10eXBlXCIpO1xuICAgICAgICBsZXQga2V5ICAgICAgPSBpLmdldEF0dHJpYnV0ZShcImlucHV0LWtleVwiKTtcbiAgICAgICAgbGV0IGl0ZW1JZCAgID0gaS5nZXRBdHRyaWJ1dGUoXCJpdGVtLWlkXCIpO1xuICAgICAgICBsZXQgdHlwZU5vZGUgPSBpLmdldEF0dHJpYnV0ZShcInR5cGUtbm9kZVwiKTtcbiAgICAgICAgbGV0IGl0ZW0gICAgID0gdXRpbHMuZ2V0SXRlbUJ5SWQoY29uZmlnLCBpdGVtSWQpO1xuICAgICAgICBsZXQgdmFsdWUgICAgPSBpLnZhbHVlO1xuICAgICAgICBpZihpbnB1dFR5cGUgPT0gXCJ0aW1lXCIpe1xuICAgICAgICAgIGxldCBoaF9pbnB1dCA9IGkucGFyZW50RWxlbWVudC5xdWVyeVNlbGVjdG9yKFwiaW5wdXQuaGhcIikudmFsdWU7XG4gICAgICAgICAgbGV0IG1tX2lucHV0ID0gaS5wYXJlbnRFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXCJpbnB1dC5tbVwiKS52YWx1ZTtcbiAgICAgICAgICBtbV9pbnB1dCA9IG1tX2lucHV0IDwxMCA/IFwiMFwiKyBwYXJzZUZsb2F0KG1tX2lucHV0KSA6IG1tX2lucHV0O1xuICAgICAgICAgIGkucGFyZW50RWxlbWVudC5xdWVyeVNlbGVjdG9yKFwiaW5wdXQubW1cIikudmFsdWUgPSBtbV9pbnB1dDtcbiAgICAgICAgICB2YWx1ZSA9IGhoX2lucHV0ICtcIjpcIittbV9pbnB1dDtcbiAgICAgICAgfVxuICAgICAgICBpLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KFwic2F2ZU5hdkxlZnRJbnB1dFwiLCB7XG4gICAgICAgICAgYnViYmxlczogdHJ1ZSxcbiAgICAgICAgICBjYW5jZWxhYmxlOiBmYWxzZSxcbiAgICAgICAgICBkZXRhaWw6IHtcbiAgICAgICAgICAgIGtleSAgICA6IGtleSxcbiAgICAgICAgICAgIGl0ZW1JZCA6IGl0ZW1JZCxcbiAgICAgICAgICAgIGl0ZW0gICA6IGl0ZW0sXG4gICAgICAgICAgICB0eXBlICAgOiB0eXBlTm9kZSxcbiAgICAgICAgICAgIHZhbHVlICA6IHZhbHVlLFxuICAgICAgICAgICAgdGFiU2VsZWN0ZWQ6IHRhYlxuICAgICAgICAgIH1cbiAgICAgICAgfSkpO1xuICAgICAgfSk7XG4gICAgfSk7XG5cblxuXG4gICAgJGVsZW0ucXVlcnlTZWxlY3RvckFsbChcImJ1dHRvbi5idG4tc2hhcGVcIikuZm9yRWFjaChpID0+IHtcbiAgICAgIGkuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGUgPT57XG4gICAgICAgIGxldCBrZXkgICAgICA9IGkuZ2V0QXR0cmlidXRlKFwiaW5wdXQta2V5XCIpO1xuICAgICAgICBsZXQgaXRlbUlkICAgPSBpLmdldEF0dHJpYnV0ZShcIml0ZW0taWRcIik7XG4gICAgICAgIGxldCB0eXBlTm9kZSA9IGkuZ2V0QXR0cmlidXRlKFwidHlwZS1ub2RlXCIpO1xuICAgICAgICBpLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KFwiY2xpY2tOYXZMZWZ0QnV0dG9uXCIsIHtcbiAgICAgICAgICBidWJibGVzOiB0cnVlLFxuICAgICAgICAgIGNhbmNlbGFibGU6IGZhbHNlLFxuICAgICAgICAgIGRldGFpbDoge1xuICAgICAgICAgICAga2V5ICAgIDoga2V5LFxuICAgICAgICAgICAgaXRlbUlkIDogaXRlbUlkLFxuICAgICAgICAgICAgdHlwZSAgIDogdHlwZU5vZGUsXG4gICAgICAgICAgfVxuICAgICAgICB9KSk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuXG5cblxuXG5cbiAgICAkZWxlbS5xdWVyeVNlbGVjdG9yQWxsKFwiYnV0dG9uLnRyZWUtaWNvblwiKS5mb3JFYWNoKGkgPT4ge1xuICAgICAgaS5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgZSA9PntcblxuICAgICAgICBsZXQgaXRlbUlkICAgICAgPSBpLmdldEF0dHJpYnV0ZShcIml0ZW0taWRcIik7XG4gICAgICAgIGxldCB0eXBlTm9kZSAgICA9IGkuZ2V0QXR0cmlidXRlKFwidHlwZS1ub2RlXCIpO1xuICAgICAgICBsZXQgZGF0YUNvbmZpZyAgPSBjb25maWcuZGF0YS5maW5kKGQgPT4gZC5pZCA9PSBpdGVtSWQpO1xuXG4gICAgICAgIGxldCAkbmF2SXRlbSAgICA9IGUuY3VycmVudFRhcmdldC5jbG9zZXN0KFwiLm5hdi1pdGVtXCIpO1xuICAgICAgICBsZXQgJGNoaWxkcmVuICAgPSAkbmF2SXRlbS5xdWVyeVNlbGVjdG9yKFwiLmNoaWxkcmVuLWl0ZW1zXCIpO1xuICAgICAgICBsZXQgaXRlbXNUb0hpZGUgPSBlLmN1cnJlbnRUYXJnZXQuY2xvc2VzdChcIm5hdi5sZWZ0XCIpLnF1ZXJ5U2VsZWN0b3JBbGwoXCJbY2hpbGQ9J1wiK2l0ZW1JZCtcIiddLCBbY2hpbGQtbGlzdD0nXCIraXRlbUlkK1wiJ11cIik7XG5cbiAgICAgICAgaWYoJGNoaWxkcmVuKXtcbiAgICAgICAgICBpZigkY2hpbGRyZW4uY2xhc3NMaXN0LmNvbnRhaW5zKFwiaGlkZVwiKSl7XG4gICAgICAgICAgICBlLmN1cnJlbnRUYXJnZXQuY2xhc3NMaXN0LmFkZCgncm90YXRlJylcbiAgICAgICAgICAgIGl0ZW1zVG9IaWRlLmZvckVhY2goaSA9PiBpLmNsYXNzTGlzdC5yZW1vdmUoXCJoaWRlXCIpKTtcbiAgICAgICAgICAgIGRhdGFDb25maWcuaGlkZGVuID0gZmFsc2U7XG4gICAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICBlLmN1cnJlbnRUYXJnZXQuY2xhc3NMaXN0LnJlbW92ZSgncm90YXRlJylcbiAgICAgICAgICAgIGl0ZW1zVG9IaWRlLmZvckVhY2goaSA9PiBpLmNsYXNzTGlzdC5hZGQoXCJoaWRlXCIpKTtcbiAgICAgICAgICAgIGRhdGFDb25maWcuaGlkZGVuID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuXG4gICAgICAgIGkuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoXCJjbGlja05hdkxlZnRUcmVlSWNvblwiLCB7XG4gICAgICAgICAgYnViYmxlczogdHJ1ZSxcbiAgICAgICAgICBjYW5jZWxhYmxlOiBmYWxzZSxcbiAgICAgICAgICBkZXRhaWw6IHtcbiAgICAgICAgICAgIGl0ZW1JZDogaXRlbUlkLFxuICAgICAgICAgICAgdHlwZTp0eXBlTm9kZSxcbiAgICAgICAgICB9XG4gICAgICAgIH0pKTtcblxuICAgICAgICAvL2UuY3VycmVudFRhcmdldC5wYXJlbnRcbiAgICAgIH0pO1xuICAgIH0pO1xuXG5cblxuXG4gICAgcmV0dXJuICRlbGVtO1xuICB9LFxuXG5cblxuICAvKipcbiAgICogQ3JlYSBIdG1sIGNvbW8gU3RyaW5nLCBwYXJhIGVsIGRldGFsbGUgZGUgaXRlbXMgZW4gZWwgU2lkZWJhciBJenF1aWVyZG9cbiAgICpcbiAgICogQHBhcmFtIHtPYmplY3R9IFtpdGVtPXt9XSAtIENvbmZpZ3VyYWNpb24gZGUgaXRlbVxuICAgKiBAcmV0dXJuIHtTdHJpbmd9IEh0bWwgZGUgdmVudGFuYSBkZSBkZXRhbGxlXG4gICAqL1xuICBnZXREZXRhaWxOYXZJdGVtQ29udGVudChpdGVtID0ge30pe1xuICAgIGlmKGl0ZW0ubmF2T3ZlciA9PSB1bmRlZmluZWQpIGl0ZW0ubmF2T3ZlciA9IHt9O1xuXG4gICAgcmV0dXJuIGBcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRlci1kZXRhaWxcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGl0bGUgdHJ1bmNhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICR7aXRlbS5sYWJlbCB8fCAnJ31cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3VidGl0bGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICR7aXRlbS5uYXZPdmVyLnN1YnRpdGxlIHx8ICcnfVxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkZXItY2hpcCAke2l0ZW0ubGlnaHQgPyBpdGVtLmxpZ2h0KyctbGlnaHQnIDogJyd9ICAke2l0ZW0ubmF2T3Zlci5jaGlwID8gJycgOiAnaGlkZSd9XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAke2l0ZW0ubmF2T3Zlci5jaGlwIHx8ICcnfVxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGV0YWlsLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgICAgICR7aXRlbS5uYXZPdmVyLmNvbnRlbnQgfHwgJyd9XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PmA7XG4gIH0sXG5cblxuXG4gIC8qKlxuICAgKiBDcmVhIFNpZGViYXIgRGVyZWNob1xuICAgKiBVc2FkbyBwcmluY2lwYWxtZW50ZSBwYXJhIGZvcm11bGFyaW8gZGUgaW5ncmVzbyBkZSBkYXRvcyBwYXJhIGxvcyBkaWFzXG4gICAqIHNlbGVjY2lvbmFkb3NcbiAgICpcbiAgICogQHBhcmFtIHtPYmplY3R9IGNvbmZpZyAtIENvbmZpZ3VyYWNpb24gY2FwaWJhcmFcbiAgICogQHBhcmFtIHtPYmplY3R9IHRhYiAtIFRhYiBkZSByZWZlcmVuY2lhLCBwYXJhIGxhIGNyZWFjaW9uIGRlbCBmb3JtdWxhcmlvXG4gICAqIEByZXR1cm4ge09iamVjdH0ge2VsZW1lbnQsIGlucHV0c30sIGVsZW1lbnQgZXMgZWwgZWxlbWVudG8gRG9tIGRlbCBzaWRlYmFyLFxuICAgKiAgICAgICAgICAgICAgICAgIGlucHV0cyBlcyB1biBhcnJheSBkZSBlbGVtZW50b3MgRG9tIGRlIGNhZGEgaW5wdXQgY3JlYWRvXG4gICAqICAgICAgICAgICAgICAgICAgKG5vIHNvbiBlbGVtZW50b3MgaHRtbCBkZSB0aXBvIGlucHV0KVxuICAgKi9cbiAgY3JlYXRlTmF2UmlnaHQoY29uZmlnLCB0YWIgPSBudWxsKXtcbiAgICB2YXIgJGVsZW0gPSBkb20uY3JlYXRlRWxlbWVudChcIm5hdlwiLHtjbGFzc05hbWU6XCJyaWdodFwifSk7XG4gICAgcmV0dXJuIHRoaXMucmVkcmF3TmF2UmlnaHQoY29uZmlnLCAkZWxlbSwgdGFiKTtcbiAgfSxcblxuICAvKipcbiAgICogUmVjcmVhIFNpZGViYXIgRGVyZWNob1xuICAgKiBVdGlsaXphICRlbGVtIGNvbW8gZWxlbWVudG8gZG9tIGRvbmRlIHJlY3JlYXJsb1xuICAgKlxuICAgKiBAcGFyYW0ge09iamVjdH0gY29uZmlnIC0gQ29uZmlndXJhY2lvbiBjYXBpYmFyYVxuICAgKiBAcGFyYW0ge09iamVjdH0gJGVsZW0gLSBFbGVtZW50byBEb20gZG9uZGUgY3JlYSBlbCBzaWRlYmFyIGRlcmVjaG9cbiAgICogQHBhcmFtIHtPYmplY3R9IHRhYiAtIFRhYiBkZSByZWZlcmVuY2lhLCBwYXJhIGxhIGNyZWFjaW9uIGRlbCBmb3JtdWxhcmlvXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBkYXRhRGF5IC0gZGF0b3MgZGVsIGRpYSBzZWxlY2Npb25hbmRvLCBwYXJhIGF1dG9ycmVsbGVubyBkZSBmb3JtdWxhcmlvXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBkYXlTZWxlY3RlZCAtIGRhdG9zIGRlbCBkaWEgc2VsZWNjaW9uYWRvXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBkYXlTZWxlY3RlZC5kYXRlIC0gZmVjaGEgZGVsIGRpYSBzZWxlY2Npb25hZG9cbiAgICogQHBhcmFtIHtPYmplY3R9IGRheVNlbGVjdGVkLml0ZW0gLSBJdGVtIGRlIFNpZGViYXIgcmVsYWNpb25hZG8gYWwgZGlhIHNlbGVjY2lvbmFkb1xuICAgKiBAcGFyYW0ge09iamVjdH0gZGF5U2VsZWN0ZWQucG9zIC0gcG9zaWNpb24gZGUgZGlhIHNlbGVjY2lvbmFkb1xuICAgKiBAcmV0dXJuIHtPYmplY3R9IEVsZW1lbnRvIERvbSBTaWRlYmFyIERlcmVjaG9cbiAgICovXG4gIHJlZHJhd05hdlJpZ2h0KGNvbmZpZywgJGVsZW0sIHRhYiA9IG51bGwsIGRhdGFEYXkgPSBudWxsLCBkYXlTZWxlY3RlZCA9IG51bGwpe1xuICAgIGxldCAkbmF2UmlnaHQgICAgICA9ICRlbGVtOyAvL2RvbS5jcmVhdGVFbGVtZW50KFwibmF2XCIse2NsYXNzTmFtZTpcInJpZ2h0XCJ9KTtcbiAgICBsZXQgJGRpdkNvbnRhaW5lciAgPSBkb20uY3JlYXRlRWxlbWVudChcImRpdlwiLHtjbGFzc05hbWU6XCJuYXYtaW5wdXQtY29udGFpbmVyXCJ9KTtcbiAgICBsZXQgJGlucHV0cyAgICAgICAgPSBbXTtcbiAgICBsZXQgY2hlY2tib3hJbnB1dHMgPSBbXTtcbiAgICBsZXQgdGFiU2VsZWN0ZWQgICAgPSB0YWI7XG5cbiAgICBpZih0YWJTZWxlY3RlZCAmJiB0YWJTZWxlY3RlZC5pbnB1dHMpe1xuICAgICAgdGFiU2VsZWN0ZWQuaW5wdXRzLmZvckVhY2goaSA9PiB7XG4gICAgICAgIGlmKGkuZGlzYWJsZWQpIHJldHVybjtcblxuICAgICAgICBsZXQgJGlucHV0ID0gdGhpcy5jcmVhdGVJbnB1dChpLCBkYXRhRGF5LCBkYXlTZWxlY3RlZCk7XG4gICAgICAgIGlmKCRpbnB1dCl7XG4gICAgICAgICAgJGRpdkNvbnRhaW5lci5hcHBlbmRDaGlsZCgkaW5wdXQpO1xuICAgICAgICAgICRpbnB1dHMucHVzaCgkaW5wdXQpO1xuXG4gICAgICAgICAgaWYoaS50eXBlID09IFwiY2hlY2tib3hcIil7XG4gICAgICAgICAgICBjaGVja2JveElucHV0cy5wdXNoKCRpbnB1dCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vbWFuZWpvIGRlIGV2ZW50b3MgcGFyYSBpbnB1dHMgY29uIHNob3dJZlxuICAgIGlmKGNoZWNrYm94SW5wdXRzKXtcbiAgICAgIGNoZWNrYm94SW5wdXRzLmZvckVhY2goJGMgPT4ge1xuICAgICAgICAvL29idGllbmUga2V5IGRlIGNoZWNrYm94XG4gICAgICAgIGxldCBrZXkgPSAkYy5nZXRBdHRyaWJ1dGUoJ2lucHV0LWtleScpO1xuICAgICAgICBsZXQgcHJvcHMgPSB0YWJTZWxlY3RlZC5pbnB1dHMuZmluZChpID0+IHsgcmV0dXJuIGkua2V5ID09IGtleX0pO1xuXG4gICAgICAgIGxldCBpc0NoZWNrZWQgPSBmYWxzZTtcbiAgICAgICAgaWYoZGF0YURheSl7XG4gICAgICAgICAgaXNDaGVja2VkID0gdXRpbHMuZ2V0VmFyQnlQYXRoKGRhdGFEYXksIHByb3BzLnZhck5hbWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy9vYnRpZW5lIGlucHV0cyByZWxhY2lvbmFkb3MgZGVzZGUgY29uZmlnIHBhcmEgbW9zdHJhci9vY3VsdGFyXG4gICAgICAgIGxldCBpbnB1dHNUb0hpZGUgPSB0YWJTZWxlY3RlZC5pbnB1dHMuZmlsdGVyKGkgPT4geyByZXR1cm4gaS5zaG93SWYgJiYgaS5zaG93SWYgPT0ga2V5fSk7XG4gICAgICAgIGxldCBpbnB1dHNUb0hpZGVLZXlzID0gaW5wdXRzVG9IaWRlLm1hcChpID0+IGkua2V5KTtcblxuICAgICAgICAvL29idGllbmUgaW5wdXRzIGRlbCBkb20sIGZpbHRyYW5kbyBjb24gaW5wdXRzVG9IaWRlXG4gICAgICAgIGxldCAkaW5wdXRzSGlkZGVuID0gJGlucHV0cy5maWx0ZXIoJGkgPT4ge1xuICAgICAgICAgIGxldCBpbnB1dEtleSA9ICRpLmdldEF0dHJpYnV0ZShcImlucHV0LWtleVwiKTtcbiAgICAgICAgICByZXR1cm4gaW5wdXRzVG9IaWRlS2V5cy5pbmRleE9mKGlucHV0S2V5KSA+IC0xO1xuICAgICAgICB9KTtcblxuICAgICAgICAvL3NpIGhheSBpbnB1dHMsXG4gICAgICAgIGlmKCRpbnB1dHNIaWRkZW4pe1xuICAgICAgICAgIGlmKCFpc0NoZWNrZWQpe1xuICAgICAgICAgICAgJGlucHV0c0hpZGRlbi5mb3JFYWNoKCRpID0+IHtcbiAgICAgICAgICAgICAgJGkuY2xhc3NMaXN0LmFkZChcImhpZGVcIik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgJGMuYWRkRXZlbnRMaXN0ZW5lcihcImlucHV0XCIsIGUgPT4ge1xuICAgICAgICAgICAgJGlucHV0c0hpZGRlbi5mb3JFYWNoKCRpID0+IHtcbiAgICAgICAgICAgICAgbGV0IGZuID0gJGMucXVlcnlTZWxlY3RvcihcImlucHV0W3R5cGU9J2NoZWNrYm94J11cIikuY2hlY2tlZCA/IFwicmVtb3ZlXCIgOiBcImFkZFwiO1xuICAgICAgICAgICAgICAkaS5jbGFzc0xpc3RbZm5dKFwiaGlkZVwiKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAkZGl2Q29udGFpbmVyLmFwcGVuZENoaWxkKHRoaXMuY3JlYXRlTmF2UmlnaHRidXR0b25zKCkpOyAvLyBzYXZlIGNhbmNlbCBidXR0b25zXG4gICAgJG5hdlJpZ2h0LmlubmVySFRNTCA9IFwiXCI7XG4gICAgJG5hdlJpZ2h0LmFwcGVuZENoaWxkKCRkaXZDb250YWluZXIpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGVsZW1lbnQ6ICRuYXZSaWdodCxcbiAgICAgIGlucHV0czogJGlucHV0c1xuICAgIH1cblxuICB9LFxuXG5cblxuICAvKipcbiAgICogQ3JlYSBDb3JuZXIgaW5mZXJpb3IgaXpxdWllcmRvLCBjb21vIHRpdHVsbyBwYXJhIGZvb3RlclxuICAgKlxuICAgKiBAcGFyYW0ge09iamVjdH0gY29uZmlnIC0gQ29uZmlndXJhY2lvbiBjYXBpYmFyYVxuICAgKiBAcmV0dXJuIHtPYmplY3R9IEVsZW1lbnRvIERvbSBDb3JuZXIgRm9vdGVyXG4gICAqL1xuICBjcmVhdGVDb3JuZXJGb290ZXIoY29uZmlnKXtcbiAgICBpZihjb25maWcudGltZWxpbmUuZm9vdGVyID09PSB1bmRlZmluZWQgfHwgY29uZmlnLnRpbWVsaW5lLmZvb3Rlci5lbmFibGVkID09IGZhbHNlKSByZXR1cm4gbnVsbDtcbiAgICBsZXQgc3RyID0gJyc7XG5cbiAgICBpZihjb25maWcudGltZWxpbmUuZm9vdGVyKXtcbiAgICAgIHN0ciArPSBgPGRpdiBjbGFzcz1cImNvcm5lci1mb290ZXJcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29ybmVyLXRpdGxlXCI+XG4gICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgJHtjb25maWcudGltZWxpbmUuZm9vdGVyLmxhYmVsfVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5gXG4gICAgfVxuICAgIHJldHVybiBkb20uY3JlYXRlRWxlbWVudEZyb21IVE1MKHN0cik7XG4gIH0sXG5cblxuICAvKipcbiAgICogQ3JlYSBGb290ZXIgcGFyYSBwbGFuaWxsYVxuICAgKiBJbmljaWFsbWVudGUgY3JlYWRvIHBhcmEgdG90YWxlc1xuICAgKlxuICAgKiBAcGFyYW0ge09iamVjdH0gY29uZmlnIC0gQ29uZmlndXJhY2lvbiBjYXBpYmFyYVxuICAgKiBAcmV0dXJuIHtPYmplY3R9IEVsZW1lbnRvIERvbSBDb3JuZXIgRm9vdGVyXG4gICAqL1xuICBjcmVhdGVGb290ZXIoY29uZmlnKXtcbiAgICBpZihjb25maWcudGltZWxpbmUuZm9vdGVyID09PSB1bmRlZmluZWQgfHwgY29uZmlnLnRpbWVsaW5lLmZvb3Rlci5lbmFibGVkID09IGZhbHNlKSByZXR1cm4gbnVsbDtcblxuICAgIGxldCBzdHIgPSBgXG4gICAgICAgIDxmb290ZXI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZvb3Rlci1jb250YWluZXJcIj5cbiAgICAgICAgICBgO1xuICAgIGNvbmZpZy50aW1lbGluZS5mb290ZXIuZGF0YS5mb3JFYWNoKGQgPT4ge1xuICAgICAgc3RyICs9IGBcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvb3Rlci1pdGVtXCI+JHtkLnZhbHVlfTwvZGl2PlxuICAgICAgICAgICAgYDtcbiAgICB9KVxuICAgIHN0ciArPSBgXG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZm9vdGVyPlxuICAgICAgICBgO1xuXG4gICAgcmV0dXJuIGRvbS5jcmVhdGVFbGVtZW50RnJvbUhUTUwoc3RyKTtcbiAgfSxcblxuXG4gIC8qKlxuICAgKiBDcmVhIEZvb3RlciBwYXJhIHBsYW5pbGxhXG4gICAqIEluaWNpYWxtZW50ZSBjcmVhZG8gcGFyYSB0b3RhbGVzXG4gICAqXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBjb25maWcgLSBDb25maWd1cmFjaW9uIGNhcGliYXJhXG4gICAqIEBwYXJhbSB7T2JqZWN0W119IHNlbGVjdGVkIC0gYXJyYXkgZGUgb2JqZXRvcywgZGUgZGlhcyBzZWxlY2Npb25hZG9zXG4gICAqIEByZXR1cm4ge09iamVjdH0gRWxlbWVudG8gRG9tIENvcm5lciBGb290ZXJcbiAgICovXG4gIGNyZWF0ZVNlbGVjdEJvYXJkKGNvbmZpZywgc2VsZWN0ZWQpe1xuICAgIGxldCAkZWxlbSA9IGRvbS5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHtjbGFzc05hbWU6IFwic2VsZWN0LWNvbnRhaW5lclwifSk7XG4gICAgcmV0dXJuIHRoaXMucmVkcmF3U2VsZWN0Qm9hcmQoJGVsZW0sIHNlbGVjdGVkKTtcbiAgfSxcblxuXG5cbiAgLyoqXG4gICAqIENyZWEgbGluZWEgdmVydGljYWwgcGFyYSBmZWNoYSBBY3R1YWxcbiAgICpcbiAgICogQHBhcmFtIHtPYmplY3R9IGNvbmZpZyAtIENvbmZpZ3VyYWNpb24gY2FwaWJhcmFcbiAgICogQHJldHVybiB7T2JqZWN0fSBFbGVtZW50byBEb20gQ29ybmVyIEZvb3RlclxuICAgKi9cbiAgY3JlYXRlVG9kYXlMaW5lKGNvbmZpZyl7XG4gICAgcmV0dXJuIHRoaXMucmVkcmF3VG9kYXlMaW5lKGNvbmZpZywgZG9tLmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwge2NsYXNzTmFtZTpcInRvZGF5LWxpbmVcIn0pKTtcbiAgfSxcblxuXG5cbiAgLyoqXG4gICAqIFJlY3JlYSBsaW5lYSB2ZXJ0aWNhbCBwYXJhIGZlY2hhIEFjdHVhbFxuICAgKiBzaSBlbCBlbGVtZW50byAkZWxlbSBubyBlcyBlbnZpYWRvLCBzZSBjcmVhIHVuIG51ZXZvIGVsZW1lbnRvXG4gICAqXG4gICAqIFNpIGVsIGRpYSBhY3R1YWwgbm8gZXN0YSBkZW50cm8gZGVsIHJhbmdvIGRlIGZlY2hhcyBkZWwgY29uZmlnLFxuICAgKiBkZXNoYWJpbGl0YSBsYSBsaW5lYSBjb24gbGEgY2xhc2UgY3NzIC5kaXNhYmxlLWxpbmVcbiAgICpcbiAgICogQHBhcmFtIHtPYmplY3R9IGNvbmZpZyAtIENvbmZpZ3VyYWNpb24gY2FwaWJhcmFcbiAgICogQHBhcmFtIHtPYmplY3R9IFskZWxlbT1udWxsXSAtIEVsZW1lbnRvIERvbSBkb25kZSByZWNyZWEgbGEgbGluZWEsIHNpIGVzIG51bGwsIGxhIGNyZWFcbiAgICogQHJldHVybiB7T2JqZWN0fSBFbGVtZW50byBEb20gQ29ybmVyIEZvb3RlclxuICAgKi9cbiAgcmVkcmF3VG9kYXlMaW5lKGNvbmZpZywgJGVsZW0gPSBudWxsKXtcbiAgICBsZXQgZW5kVGltZSAgID0gbmV3IERhdGUoY29uZmlnLnRpbWVsaW5lLmVuZCkuZ2V0VGltZSgpO1xuICAgIGxldCB0b2RheVRpbWUgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcblxuICAgIGlmKCRlbGVtID09IG51bGwpICRlbGVtID0gZG9tLmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwge2NsYXNzTmFtZTpcInRvZGF5LWxpbmVcIn0pO1xuXG4gICAgaWYoZW5kVGltZSA8IHRvZGF5VGltZSkge1xuICAgICAgJGVsZW0uY2xhc3NMaXN0LmFkZChcImRpc2FibGUtbGluZVwiKVxuICAgIH1lbHNle1xuICAgICAgJGVsZW0uY2xhc3NMaXN0LnJlbW92ZShcImRpc2FibGUtbGluZVwiKVxuICAgIH1cblxuICAgIGxldCBkaWZmRGF5cyAgPSBNYXRoLmZsb29yKCBkYXRlVXRpbHMuZGlmZkRheXMoY29uZmlnLnRpbWVsaW5lLnN0YXJ0LCBkYXRlVXRpbHMuZm9ybWF0RGF0ZShuZXcgRGF0ZSgpKSApKTtcbiAgICBsZXQgZGF5V2lkdGggPSBwYXJzZUZsb2F0KHV0aWxzLmdldENTU1ZhcmlhYmxlKGNvbmZpZywgXCItLWRheS13aWR0aFwiKSk7XG4gICAgbGV0IGRpZmYgICAgICA9IGRpZmZEYXlzICogZGF5V2lkdGg7XG4gICAgZGlmZiAgICAgICAgICs9IChkYXlXaWR0aCAvIDIpIC0gMjsgLy8gcGFyYSBjZW50cmFyIGxpbmVhXG4gICAgT2JqZWN0LmFzc2lnbigkZWxlbS5zdHlsZSx7J21hcmdpbi1sZWZ0JzogZGlmZitcInB4XCJ9KTtcbiAgICByZXR1cm4gJGVsZW07XG4gIH0sXG5cblxuXG4gIC8qKlxuICAgKiBDcmVhIGVsZW1lbnRvIEZsb2F0Qm94LCBxdWUgY29udGllbmUgbG9zIGRhdG9zIHF1ZSBzZSBtdWVzdHJhIGVuIGxhIHRhYmxhXG4gICAqXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBjb25maWcgLSBDb25maWd1cmFjaW9uIGNhcGliYXJhXG4gICAqIEBwYXJhbSB7T2JqZWN0fSB0YWIgLSBUYWIgZGUgcmVmZXJlbmNpYSwgcGFyYSBtb3N0cmFyIGRhdG9zIGNvbmZpZ3VyYWRvcyBwb3IgdGFiXG4gICAqIEByZXR1cm4ge09iamVjdH0gRWxlbWVudG8gRG9tIENvcm5lciBGb290ZXJcbiAgICovXG4gIGNyZWF0ZUZsb2F0Qm94KGNvbmZpZywgdGFiKXtcbiAgICBsZXQgJGNvbnRhaW5lciA9IGRvbS5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHtjbGFzc05hbWU6IFwiZmxvYXQtYm94LWNvbnRhaW5lclwifSk7XG4gICAgcmV0dXJuIHRoaXMucmVkcmF3RmxvYXRCb3goY29uZmlnLCB0YWIsICRjb250YWluZXIpO1xuICB9LFxuXG5cbiAgLyoqXG4gICAqIFJlY3JlYSBlbGVtZW50byBGbG9hdEJveCwgcXVlIGNvbnRpZW5lIGxvcyBkYXRvcyBxdWUgc2UgbXVlc3RyYSBlbiBsYSB0YWJsYVxuICAgKiBTZSB1c2EgcHJpbmNpcGFsbWVudGUgcGFyYSBtb3N0cmFyIGRhdG9zIGVuIGxhIHRhYmxhIGRlIGxhIHBsYW5pbGxhXG4gICAqIGxvcyBtdWVzdHJhIGRlIG1hbmVyYSBmbG90YW50ZSwgY2FsY3VsYW5kbyBlbCBUb3AgeSBlbCBMZWZ0IHNlZ3VuIGxhIHBvc2Npb25cbiAgICpcbiAgICogU2UgY29uc2lkZXJhbiBsb3MgZWxlbWVudG9zIHBhZHJlcyBvY3VsdG9zLCBwYXJhIG9jdWx0YXIgbG9zIGRhdG9zXG4gICAqXG4gICAqIFNlIGluc2VydGFuIGxvcyBlbGVtZW50b3MgRmxvYXRCb3gsIGNvbW8gZWxlbWVudG8gY29uIGRhdG9zIGRlIHVuIGl0ZW0geSBkaWEgZXNwZWNpZmljb1xuICAgKlxuICAgKlxuICAgKiBAcGFyYW0ge09iamVjdH0gY29uZmlnIC0gQ29uZmlndXJhY2lvbiBjYXBpYmFyYVxuICAgKiBAcGFyYW0ge09iamVjdH0gdGFiIC0gVGFiIGRlIHJlZmVyZW5jaWEsIHBhcmEgbW9zdHJhciBkYXRvcyBjb25maWd1cmFkb3MgcG9yIHRhYlxuICAgKiBAcmV0dXJuIHtPYmplY3R9IEVsZW1lbnRvIERvbSBDb3JuZXIgRm9vdGVyXG4gICAqL1xuICByZWRyYXdGbG9hdEJveChjb25maWcsIHRhYiwgJGNvbnRhaW5lcil7XG5cbiAgICAkY29udGFpbmVyLmlubmVySFRNTCA9IFwiXCI7XG4gICAgbGV0IHRhYlNlbGVjdGVkICAgICAgPSB0YWIgfHwgbnVsbDtcblxuICAgIGNvbmZpZy5kYXRhLmZvckVhY2goZGUgPT4ge1xuICAgICAgLy9wYXJlbnQgRGF0YVxuICAgICAgZGUuY2hpbGRyZW4uZm9yRWFjaChkcyA9PiB7XG4gICAgICAgIGRzLmRhdGEuZm9yRWFjaChkYXRhID0+IHtcblxuICAgICAgICAgIGlmKCghZGF0YS5tZXNzYWdlIHx8IGRhdGEubWVzc2FnZS52YWx1ZSA9PSBudWxsKSAmJiBPYmplY3QuZW50cmllcyhkYXRhLnZhbHVlcykubGVuZ3RoID09PSAwICkgcmV0dXJuO1xuXG4gICAgICAgICAgLy9jaGlsZHJlbiBEYXRhXG4gICAgICAgICAgbGV0IHBvc2l0aW9uID0gdGhpcy5nZXRQb3NpdGlvbkZsb2F0Qm94KGNvbmZpZywgZGF0YSwgZHMpO1xuXG4gICAgICAgICAgbGV0IGNsYXNzTmFtZSA9ICcnO1xuICAgICAgICAgIGlmKCBkYXRhLm1lc3NhZ2UgJiYgZGF0YS5tZXNzYWdlLnZhbHVlKXtcbiAgICAgICAgICAgIGNsYXNzTmFtZSArPSAnaGFzLW1lc3NhZ2UgJztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiggZGF0YS5lcnJvcnMgJiYgZGF0YS5lcnJvcnMubGVuZ3RoID4gMCl7XG4gICAgICAgICAgICBjbGFzc05hbWUgKz0gJ2hhcy1lcnJvcnMgJztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiggZGUuaGlkZGVuICl7XG4gICAgICAgICAgICBjbGFzc05hbWUgKz0gJ2hpZGUgJztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBsZXQgc3RyID0gYFxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbG9hdC1ib3ggJHtjbGFzc05hbWV9ICR7ZGUuaGlkZGVuPydoaWRlJzonJ31cIlxuICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCIke3Bvc2l0aW9uPyBwb3NpdGlvbjogJyd9XCJcbiAgICAgICAgICAgICAgICAgICAgIGl0ZW0taWQ9XCIke2RzLmlkIHx8IC0xfVwiXG4gICAgICAgICAgICAgICAgICAgICB0eXBlLW5vZGU9XCIke2RzLnR5cGUgfHwgJyd9XCI+IGA7XG5cblxuICAgICAgICAgICAgICAgIGlmKHRhYlNlbGVjdGVkICYmIHRhYlNlbGVjdGVkLmZsb2F0Qm94KXtcblxuICAgICAgICAgICAgICAgICAgLy9udW1lcm9zIGVuIGVsIGZsb2F0Qm94XG4gICAgICAgICAgICAgICAgICBpZih0YWJTZWxlY3RlZC5mbG9hdEJveC5udW1zKXtcbiAgICAgICAgICAgICAgICAgICAgdGFiU2VsZWN0ZWQuZmxvYXRCb3gubnVtcy5mb3JFYWNoKG4gPT4ge1xuXG4gICAgICAgICAgICAgICAgICAgICAgaWYodGFiU2VsZWN0ZWQubGVnZW5kcyAmJiBuLnRhYktleSl7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgbGVnZW5kID0gdGFiU2VsZWN0ZWQubGVnZW5kcy5maW5kKGwgPT4gbC5rZXkgPT0gbi50YWJLZXkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYobGVnZW5kICYmICFsZWdlbmQuYWN0aXZlKSByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IGRhdGFGbG9hdEJveCA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgbGV0IGNsYXNzTmFtZSA9IFwiXCI7XG5cbiAgICAgICAgICAgICAgICAgICAgICBpZihuLnZhck5hbWUpe1xuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUZsb2F0Qm94ID0gdXRpbHMuZ2V0VmFyQnlQYXRoKGRhdGEudmFsdWVzLCBuLnZhck5hbWUpO1xuICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgIGxldCBzaG93SWYgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgIGlmKG4udmFyU2hvdyl7XG4gICAgICAgICAgICAgICAgICAgICAgICBzaG93SWYgPSBCb29sZWFuKCB1dGlscy5nZXRWYXJCeVBhdGgoZGF0YS52YWx1ZXMsIG4udmFyU2hvdykgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFGbG9hdEJveCA9IGRhdGFGbG9hdEJveCB8fCBcIlwiO1xuICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgIGxldCBoaWRlSWYgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICBpZihuLnZhckhpZGUpe1xuICAgICAgICAgICAgICAgICAgICAgICAgaGlkZUlmID0gQm9vbGVhbiggdXRpbHMuZ2V0VmFyQnlQYXRoKGRhdGEudmFsdWVzLCBuLnZhckhpZGUpICk7XG4gICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgaWYobi5zaGFwZSl7XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWUgKz0gXCJzaGFwZS1cIituLnNoYXBlO1xuICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgIGlmKGRhdGFGbG9hdEJveCAhPT0gbnVsbCAmJiBzaG93SWYgJiYgIWhpZGVJZil7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdHIgKz1gPHNwYW4gY2xhc3M9XCJkYXRhICR7bi5jb2xvcn0gJHtjbGFzc05hbWV9XCI+JHsgZGF0YUZsb2F0Qm94IH08L3NwYW4+YDtcbiAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgLy9wdW50b3MgZW4gZWwgZmxvYXRCb3hcbiAgICAgICAgICAgICAgICAgIGlmKHRhYlNlbGVjdGVkLmZsb2F0Qm94LmRvdHMpe1xuICAgICAgICAgICAgICAgICAgICBzdHIgKz1gXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRvdC1jb250YWluZXItbWlkZGxlXCI+YDtcbiAgICAgICAgICAgICAgICAgICAgdGFiU2VsZWN0ZWQuZmxvYXRCb3guZG90cy5mb3JFYWNoKG4gPT4ge1xuXG4gICAgICAgICAgICAgICAgICAgICAgaWYodXRpbHMuZ2V0VmFyQnlQYXRoKGRhdGEudmFsdWVzLCBuLnZhck5hbWUpICE9PSBudWxsKXtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0ciArPWBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZG90ICR7bi5jb2xvcn0gJHtuLnNoYXBlIHx8ICcnfVwiPjwvZGl2PmA7XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICBzdHIgKz0gYFxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+YDtcbiAgICAgICAgICAgICAgICAgIH1cblxuXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBzdHIgKz0gYFxuICAgICAgICAgICAgICAgIDwvZGl2PmA7XG5cblxuICAgICAgICAgICAgICAgIGxldCAkZWxlbSA9IGRvbS5jcmVhdGVFbGVtZW50RnJvbUhUTUwoc3RyKTtcblxuICAgICAgICAgICAgICAgICRlbGVtLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZW92ZXJcIiwgZSA9PiB7XG4gICAgICAgICAgICAgICAgICAkZWxlbS5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudChcIm1vdXNlT3ZlckZsb2F0Qm94XCIsIHtcbiAgICAgICAgICAgICAgICAgICAgYnViYmxlczogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgY2FuY2VsYWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIGRldGFpbDoge1xuICAgICAgICAgICAgICAgICAgICAgIGl0ZW0gOiBkcyxcbiAgICAgICAgICAgICAgICAgICAgICBkYXRhOiBkYXRhLFxuICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbmFsRXZ0IDogZVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAkZWxlbS5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgZSA9PiB7XG4gICAgICAgICAgICAgICAgICAkZWxlbS5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudChcImNsaWNrRmxvYXRCb3hcIiwge1xuICAgICAgICAgICAgICAgICAgICBidWJibGVzOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBjYW5jZWxhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgZGV0YWlsOiB7XG4gICAgICAgICAgICAgICAgICAgICAgaXRlbSAgICAgICAgOiBkcyxcbiAgICAgICAgICAgICAgICAgICAgICBkYXRhICAgICAgICA6IGRhdGEsXG4gICAgICAgICAgICAgICAgICAgICAgb3JpZ2luYWxFdnQgOiBlXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICB9KTtcblxuXG4gICAgICAgICAgICAgICRjb250YWluZXIuYXBwZW5kQ2hpbGQoJGVsZW0pO1xuXG5cbiAgICAgICAgfSk7XG4gICAgICB9KVxuICAgIH0pXG5cbiAgICByZXR1cm4gJGNvbnRhaW5lcjtcbiAgfSxcblxuXG5cblxuICAvKipcbiAgICogQ3JlYSBEZXRhaWxEYXksIGRldGFsbGUgZGUgdmFsb3JlcyBkZSBpdGVtIHkgRGlhXG4gICAqIHNlIHVzYSBwYXJhOlxuICAgKiAgICAtIE11ZXN0cmEgbm9tYnJlIGRlIGl0ZW0geSBkZXRhbGxlc1xuICAgKiAgICAtIE11ZXN0cmEgY2Fwc3VsYXMgZGUgZGF0b3NcbiAgICogICAgLSBNdWVzdHJhIFBpbGxzLCBwaWxkb3JhcyBkZSBkYXRvcyByZXN1bWlkb3NcbiAgICogICAgLSBNdWVzdHJhIGFsZXJ0YXNcbiAgICogICAgLSBNdWVzdHJhIE1lbnNhamVcbiAgICpcbiAgICogQHBhcmFtIHtPYmplY3R9IGNvbmZpZyAtIENvbmZpZ3VyYWNpb24gY2FwaWJhcmFcbiAgICogQHBhcmFtIHtPYmplY3R9IGl0ZW0gLSBJdGVtIHJlbGFjaW9uYWRvXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBkYXRhRGF5IC0gdmFsb3JlcyBkZSBpdGVtIHkgRGlhXG4gICAqIEBwYXJhbSB7Qm9vbGVhbn0gW29ubHlTdHJpbmdDb250ZW50ID0gZmFsc2VdIC0gcGFyYSBlc2NvZ2VyIHNpIGRldnVlbHZlIFN0cmluZyBvIERvbUVsZW1lbnRcbiAgICogQHJldHVybiB7U3RyaW5nfE9iamVjdH0gRWxlbWVudG8gY29tbyBTdHJpbmcgbyBEb21FbGVtZW50XG4gICAqL1xuICBjcmVhdGVEZXRhaWxEYXkoY29uZmlnLCBpdGVtLCBkYXRhRGF5LCBvbmx5U3RyaW5nQ29udGVudCA9IGZhbHNlKXtcblxuICAgIGxldCBzdHIgPSBgXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRlci1kZXRhaWxcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZSB0cnVuY2F0ZVwiPlxuICAgICAgICAgICAgICAkeyBpdGVtLmxhYmVsIHx8ICcnIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1YnRpdGxlXCI+XG4gICAgICAgICAgICAgICR7IGRhdGFEYXkgPyBkYXRlVXRpbHMuZm9ybWF0RGF0ZVJlYWRlYWJsZShkYXRhRGF5LmRhdGUpIDogJycgfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibGlzdC1kZXRhaWwgbGlzdFwiPmBcblxuXG5cbiAgICAvL0NBUFNVTEVTXG4gICAgaWYoZGF0YURheSl7XG4gICAgICBjb25maWcudGltZWxpbmUuZGV0YWlsRGF5LmNhcHN1bGVzLmZvckVhY2goY2FwID0+IHtcbiAgICAgICAgLy9wYXJhIGNvbXByb2JhciBzaSB0aWVuZSBkYXRvcywgc2Ugb2J0aWVuZSBlbCBwcmltZXIgdmFsb3JcbiAgICAgICAgLy9kZSBsYSBsaXN0YSBkZSB2YWx1ZXMgZGUgdW5hIGNhcHN1bGFcbiAgICAgICAgbGV0IGhhc1ZhbHVlcyA9IGNhcC52YWx1ZXMuZmlsdGVyKHYgPT4gdXRpbHMuZ2V0VmFyQnlQYXRoKGRhdGFEYXkudmFsdWVzLCB2LnZhck5hbWUpKS5sZW5ndGggPiAwO1xuICAgICAgICBsZXQgaGlkZUlmID0gZmFsc2U7XG5cbiAgICAgICAgaWYoY2FwLmhpZGVJZil7XG4gICAgICAgICAgaGlkZUlmID0gQm9vbGVhbih1dGlscy5nZXRWYXJCeVBhdGgoZGF0YURheS52YWx1ZXMsIGNhcC5oaWRlSWYpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmKGhhc1ZhbHVlcyAmJiAhaGlkZUlmKXtcbiAgICAgICAgICBzdHIgKz0gYFxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaXRlbS1kZXRhaWwgJHtjYXAuY29sb3IgfHwgJyd9XCI+XG5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGVmdC1pY29uICR7Y2FwLnNoYXBlIHx8ICcnfSBcIj48L2Rpdj5cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJuYW1lXCI+XG4gICAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgJHtjYXAudGl0bGUgfHwgJyd9XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+YDtcblxuICAgICAgICAgIHN0ciArPSBgXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIml0ZW0tZGVzY3JpcHRpb25cIj4gYDtcblxuXG4gICAgICAgICAgY2FwLnZhbHVlcy5mb3JFYWNoKHYgPT4ge1xuICAgICAgICAgICAgbGV0IHZhbHVlID0gdXRpbHMuZ2V0VmFyQnlQYXRoKGRhdGFEYXkudmFsdWVzLCB2LnZhck5hbWUpO1xuICAgICAgICAgICAgaWYoY2FwLmlzTGFiZWxlZEFycmF5KXtcbiAgICAgICAgICAgICAgdmFsdWUuZm9yRWFjaCh2YWx1ZUxhYmVsZWQgPT4ge1xuXG4gICAgICAgICAgICAgICAgbGV0IG91dHB1dFZhbHVlID0gbnVsbDtcbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICBpZih2YWx1ZUxhYmVsZWQudmFsdWUpe1xuICAgICAgICAgICAgICAgICAgb3V0cHV0VmFsdWUgPSB2LnJvdW5kID8gdXRpbHMucm91bmQodmFsdWVMYWJlbGVkLnZhbHVlLCB2LnJvdW5kKSA6IHZhbHVlTGFiZWxlZC52YWx1ZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZih2LmZvcm1hdHRlcil7XG4gICAgICAgICAgICAgICAgICBvdXRwdXRWYWx1ZSA9IHYuZm9ybWF0dGVyKHZhbHVlTGFiZWxlZCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgc3RyICs9IHZhbHVlTGFiZWxlZC52YWx1ZSA9PSBudWxsID8gJycgOiBgXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRlc2NcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgJHt2YWx1ZUxhYmVsZWQubGFiZWx9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAke3YucHJlZml4IHx8ICcnfVxuICAgICAgICAgICAgICAgICAgICAgICAgJHtvdXRwdXRWYWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICR7dmFsdWVMYWJlbGVkLnN1ZmZpeCB8fCB2LnN1ZmZpeCB8fCAnJ31cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5gO1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICAgIGxldCBvdXRwdXRWYWx1ZSA9IHYucm91bmQgPyB1dGlscy5yb3VuZCh2YWx1ZSwgdi5yb3VuZCkgOiB2YWx1ZTtcbiAgICAgICAgICAgICAgc3RyICs9IHZhbHVlID09IG51bGwgPyAnJyA6IGBcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRlc2NcIj5cbiAgICAgICAgICAgICAgICAgICAgICAke3YucHJlZml4IHx8ICcnfVxuICAgICAgICAgICAgICAgICAgICAgICR7b3V0cHV0VmFsdWV9XG4gICAgICAgICAgICAgICAgICAgICAgJHt2LnN1ZmZpeCB8fCAnJ31cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIHN0ciArPSBgXG4gICAgICAgICAgICAgICAgPC9kaXY+YDtcblxuXG4gICAgICAgICAgc3RyICs9IGBcbiAgICAgICAgICAgICAgPC9kaXY+YDsvLyBlbmQgLml0ZW0tZGV0YWlsXG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuXG4gICAgc3RyICs9IGBcbiAgICAgICAgPC9kaXY+YDsgLy8gbGlzdC1kZXRhaWxcblxuXG5cblxuICAgIC8vUElMTFNcbiAgICBpZihjb25maWcudGltZWxpbmUuZGV0YWlsRGF5LnBpbGxzVmFyTmFtZSAmJlxuICAgICAgZGF0YURheSAmJiBkYXRhRGF5LnZhbHVlc1tjb25maWcudGltZWxpbmUuZGV0YWlsRGF5LnBpbGxzVmFyTmFtZV0pe1xuXG4gICAgICBzdHIgKz0gYFxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJlbGVtZW50cy1kZXRhaWxcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJuYW1lXCI+ICR7IGNvbmZpZy50aW1lbGluZS5kZXRhaWxEYXkucGlsbHNUaXRsZSB9IDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImVsZW1lbnRzLWxpc3RcIj5gO1xuXG4gICAgICAgICAgZGF0YURheS52YWx1ZXNbY29uZmlnLnRpbWVsaW5lLmRldGFpbERheS5waWxsc1Zhck5hbWVdLmZvckVhY2goZSA9PiB7XG4gICAgICAgICAgICBzdHIgKz1gXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZWxlbWVudC1kZXRhaWxcIj5cbiAgICAgICAgICAgICAgPGI+JHtlLmxhYmVsfTwvYj5cbiAgICAgICAgICAgICAgJHtlLnZhbHVlfVxuICAgICAgICAgICAgPC9kaXY+YDtcbiAgICAgICAgICB9KTtcblxuICAgICAgc3RyICs9IGBcbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+YDsgLy9lbmQgLmVsZW1lbnQtZGV0YWlsID4gLmVsZW1lbnQtbGlzdFxuICAgIH1cblxuXG5cblxuICAgIC8vc3RyICs9IGA8L2Rpdj5gO1xuXG5cbiAgICBpZihkYXRhRGF5ICYmIGRhdGFEYXkuZXJyb3JzICYmIGRhdGFEYXkuZXJyb3JzLmxlbmd0aCA+IDApe1xuICAgICAgZGF0YURheS5lcnJvcnMuZm9yRWFjaChlcnIgPT4ge1xuICAgICAgICBsZXQgYWxlcnRJY29uID0gYDxzcGFuIGNsYXNzPVwiYWxlcnQtaWNvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHN0eWxlPVwid2lkdGg6MjRweDtoZWlnaHQ6MjRweFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGZpbGw9XCJjdXJyZW50Q29sb3JcIiBkPVwiTTEzIDE0SDExVjlIMTNNMTMgMThIMTFWMTZIMTNNMSAyMUgyM0wxMiAyTDEgMjFaXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+YFxuICAgICAgICBzdHIgKz0gYFxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJhbGVydFwiPlxuICAgICAgICAgICAgJHthbGVydEljb259XG4gICAgICAgICAgICAke2Vyci5sYWJlbCB9XG4gICAgICAgICAgPC9kaXY+YDtcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgaWYoZGF0YURheSAmJiBkYXRhRGF5Lm1lc3NhZ2UgJiYgZGF0YURheS5tZXNzYWdlLnZhbHVlKXtcbiAgICAgIHN0ciArPWBcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibXNqLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1zalwiPlxuICAgICAgICAgICAgICAkeyBkYXRhRGF5Lm1lc3NhZ2UudmFsdWUgfHwgJyd9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtc2otZGV0YWlsXCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZW1haWxcIj4gJHsgZGF0YURheS5tZXNzYWdlLmF1dGhvciB8fCAnJ30gPC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRhdGVcIj4gJHsgZGF0YURheS5tZXNzYWdlLmRhdGUgPyBkYXRlVXRpbHMuZm9ybWF0RGF0ZVJlYWRlYWJsZShuZXcgRGF0ZShkYXRhRGF5Lm1lc3NhZ2UuZGF0ZSkpIDogJyd9IDwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5gO1xuICAgIH1cblxuICAgIGxldCBzdHJDb250YWluZXIgPSBgPGRpdiBjbGFzcz1cImRldGFpbC1kYXkgZGQtaGlkZVwiPiAke3N0cn0gPC9kaXY+YDtcblxuICAgIGlmIChvbmx5U3RyaW5nQ29udGVudCkgcmV0dXJuIHN0cjtcblxuICAgIHJldHVybiBkb20uY3JlYXRlRWxlbWVudEZyb21IVE1MKHN0ckNvbnRhaW5lcik7XG4gIH0sXG5cblxuXG4gIC8qKlxuICAgKiBSZWNyZWEgQmFja2dyb3VuZCwgcXVlIGVzIGVsIGZvbmRvIGdyaWQsIGNvbW8gdGFibGFcbiAgICpcbiAgICogQHBhcmFtIHtPYmplY3R9IGNvbmZpZyAtIENvbmZpZ3VyYWNpb24gY2FwaWJhcmFcbiAgICogQHBhcmFtIHtPYmplY3R9ICRlbGVtIC0gRWxlbWVudG8gcmVsYWNpb25hZG8sIGRvbmRlIHNlIGNyZSBlbCBiYWNrZ3JvdW5kXG4gICAqIEByZXR1cm4ge09iamVjdH0gRWxlbWVudG8gRG9tIENvcm5lciBGb290ZXJcbiAgICovXG4gIHJlZHJhd0JhY2tncm91bmQoY29uZmlnLCAkZWxlbSl7XG4gICAgcmV0dXJuIHRoaXMuY3JlYXRlQmFja2dyb3VuZChjb25maWcsICRlbGVtKTtcbiAgfSxcblxuXG5cbiAgLyoqXG4gICAqIFJlY3JlYSBIVE1MIGRlIGRldGFpbERheVxuICAgKlxuICAgKiBAcGFyYW0ge09iamVjdH0gY29uZmlnIC0gQ29uZmlndXJhY2lvbiBjYXBpYmFyYVxuICAgKiBAcGFyYW0ge09iamVjdH0gaXRlbSAtIEl0ZW0gcmVsYWNpb25hZG9cbiAgICogQHBhcmFtIHtPYmplY3R9IGRhdGFEYXkgLSB2YWxvcmVzIGRlIGl0ZW0geSBEaWFcbiAgICogQHJldHVybiB7U3RyaW5nfSBFbGVtZW50byBjb21vIFN0cmluZywgZGUgZGV0YWlsRGF5XG4gICAqL1xuICByZWRyYXdEZXRhaWxEYXkoY29uZmlnLCBpdGVtLCBkYXRhRGF5KXtcbiAgICByZXR1cm4gdGhpcy5jcmVhdGVEZXRhaWxEYXkoY29uZmlnLCBpdGVtLCBkYXRhRGF5LCB0cnVlKTtcbiAgfSxcblxuXG4gIC8qKlxuICAgKiBSZXBvc2ljaW9uYSBGbG9hdEJveFxuICAgKiB2ZXJpZmljYSBzaSBlbCBwYXJlbnQgZXN0YSBkZXNwbGVnYWRvLCBwYXJhIG9jdWx0YXIgbG9zIGRhdG9zXG4gICAqXG4gICAqIFNvbG8gYWN0dWFsaXphIGxhcyBhbHR1cmFzIGRlIGxvcyBmbG9hdGJveFxuICAgKiBubyByZWNyZWEgbG9zIGZsb2F0Ym94LCBlcyBtYXMgb3B0aW1vXG4gICAqXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBjb25maWcgLSBDb25maWd1cmFjaW9uIGNhcGliYXJhXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBpdGVtIC0gSXRlbSByZWxhY2lvbmFkb1xuICAgKi9cbiAgcmVwb3NpdGlvbkZsb2F0Qm94KGNvbmZpZywgJGZsb2F0Qm94Q29udGFpbmVyKXtcbiAgICAgICRmbG9hdEJveENvbnRhaW5lci5xdWVyeVNlbGVjdG9yQWxsKFwiLmZsb2F0LWJveFwiKS5mb3JFYWNoKCRmID0+IHtcbiAgICAgICAgbGV0IGl0ZW1JZCA9ICRmLmdldEF0dHJpYnV0ZShcIml0ZW0taWRcIik7XG4gICAgICAgIGxldCBpdGVtSGVpZ2h0ID0gcGFyc2VGbG9hdCh1dGlscy5nZXRDU1NWYXJpYWJsZShjb25maWcsIFwiLS1pdGVtLWhlaWdodFwiKSk7XG4gICAgICAgIGxldCBpdGVtLHBhcmVudDtcbiAgICAgICAgKHtpdGVtLCBwYXJlbnR9ID0gdXRpbHMuZ2V0SXRlbUJ5SWQoY29uZmlnLCBpdGVtSWQsIFwiY2hpbGRcIiwgdHJ1ZSkpO1xuICAgICAgICBpZihpdGVtKXtcbiAgICAgICAgICBsZXQgdG9wICAgICAgPSB1dGlscy5nZXRQb3NpdGlvbkJ5SXRlbShjb25maWcsIGl0ZW0pO1xuICAgICAgICAgICRmLnN0eWxlLnRvcCA9ICh0b3AgKiBpdGVtSGVpZ2h0ICkgK1wicHhcIjtcbiAgICAgICAgICBpZihwYXJlbnQgJiYgcGFyZW50LmhpZGRlbil7XG4gICAgICAgICAgICAkZi5jbGFzc0xpc3QuYWRkKFwiaGlkZVwiKTtcbiAgICAgICAgICB9ZWxzZSBpZigkZi5jbGFzc0xpc3QuY29udGFpbnMoXCJoaWRlXCIpKXtcbiAgICAgICAgICAgICRmLmNsYXNzTGlzdC5yZW1vdmUoXCJoaWRlXCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH0sXG5cblxuXG4gIC8qKlxuICAgKiBSZWNyZWEgaW5kaWNhZG9yZXMgZGUgZGlhcyBzZWxlY2Npb25hZG9zXG4gICAqXG4gICAqIEBwYXJhbSB7T2JqZWN0fSAkZWxlbSAtIEVsZW1lbnRvIERvbSBkb25kZSBjcmVhIGxvcyBlbGVtZW50b3Mgc2VsZWNjaW9uYWRvc1xuICAgKiBAcGFyYW0ge09iamVjdFtdfSBzZWxlY3RlZCAtIEFycmF5IGNvbiBsb3MgZGlhcyBzZWxlY2Npb25hZG9zXG4gICAqIEByZXR1cm4ge09iamVjdH0gRWxlbWVudG8gRG9tIHF1ZSBjb250aWVuZSBsb3MgaW5kaWNhZG9yZXMgZGUgZGlhcyBzZWxlY2Npb25hZG9zXG4gICAqL1xuICByZWRyYXdTZWxlY3RCb2FyZCgkZWxlbSwgc2VsZWN0ZWQpe1xuICAgICRlbGVtLmlubmVySFRNTCA9IFwiXCI7XG4gICAgbGV0IGhhc051bWJlciA9IHRydWU7XG5cbiAgICBpZihzZWxlY3RlZCl7XG5cbiAgICAgIGlmKHNlbGVjdGVkLmxlbmd0aCA9PSAxKSBoYXNOdW1iZXIgPSBmYWxzZTtcblxuICAgICAgc2VsZWN0ZWQuZm9yRWFjaChzID0+IHtcbiAgICAgICAgbGV0IGF0dHJpYnV0ZXMgPSBbXVxuXG4gICAgICAgIGlmKGhhc051bWJlcil7XG4gICAgICAgICAgYXR0cmlidXRlcy5wdXNoKHtuYW1lOlwiY2FwLWJhZGdlXCIsIHZhbHVlOnMuaW5kZXggfSk7XG4gICAgICAgIH1cbiAgICAgICAgbGV0ICRzID0gZG9tLmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwge2NsYXNzTmFtZTogXCJzZWxlY3RlZC1kYXlcIiwgYXR0cmlidXRlcyB9KTtcbiAgICAgICAgJHMuc3R5bGUubGVmdCA9IHMucG9zLmxlZnQgKyBcInB4XCI7XG4gICAgICAgICRzLnN0eWxlLnRvcCA9IHMucG9zLnRvcCArIFwicHhcIjtcbiAgICAgICAgJGVsZW0uYXBwZW5kKCRzKTtcbiAgICAgIH0pXG4gICAgfVxuICAgIHJldHVybiAkZWxlbTtcbiAgfSxcblxuXG5cbiAgLyoqXG4gICAqIE9idGllbmUgU3RyaW5nIGNvbiBlc3RpbG9zIENTUyBkZSBsYSBwb3NpY2lvbiBkZSB1biBmbG9hdEJveFxuICAgKiBjYWxjdWxhZG8gc2VndW4gaXRlbSB5IGZlY2hhIGRlIGxvcyB2YWxvcmVzXG4gICAqXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBjb25maWcgLSBDb25maWd1cmFjaW9uIGNhcGliYXJhLCBwYXJhIHZlciBmZWNoYSBkZSBpbmljaW9cbiAgICogQHBhcmFtIHtPYmplY3R9IGRhdGEgLSBEYXRvcyBkZWwgZGlhIGluZGljYWRvXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBpdGVtIC0gSXRlbSByZWxhY2lvbmFkb1xuICAgKiBAcmV0dXJuIHtTdHJpbmd9IFN0cmluZyBDU1MgdG9wIHkgbGVmdCAsIHBhcmEgcG9zaWNpb25hciBmbG9hdEJveCBlbiB0YWJsZVxuICAgKi9cbiAgZ2V0UG9zaXRpb25GbG9hdEJveChjb25maWcsIGRhdGEsIGl0ZW0pe1xuICAgIGxldCBsZWZ0ID0gZGF0ZVV0aWxzLmRpZmZEYXlzKGNvbmZpZy50aW1lbGluZS5zdGFydCwgZGF0YS5kYXRlKTtcbiAgICBsZXQgdG9wICA9IHV0aWxzLmdldFBvc2l0aW9uQnlJdGVtKGNvbmZpZywgaXRlbSk7XG4gICAgbGV0IGRheVdpZHRoID0gcGFyc2VGbG9hdCh1dGlscy5nZXRDU1NWYXJpYWJsZShjb25maWcsIFwiLS1kYXktd2lkdGhcIikpO1xuICAgIGxldCBpdGVtSGVpZ2h0ID0gcGFyc2VGbG9hdCh1dGlscy5nZXRDU1NWYXJpYWJsZShjb25maWcsIFwiLS1pdGVtLWhlaWdodFwiKSk7XG4gICAgbGVmdCAgICAqPSBkYXlXaWR0aDtcbiAgICB0b3AgICAgICo9IGl0ZW1IZWlnaHQ7XG4gICAgcmV0dXJuIFwidG9wOiBcIit0b3ArXCIuNXB4OyBsZWZ0OlwiK2xlZnQrXCIuNXB4O1wiO1xuICB9LFxuXG5cblxuXG4gIC8qKlxuICAgKiBDcmVhIEJvdG9uIGNvbW8gZWxlbWVudG8gRG9tXG4gICAqXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIHByb3BpZWRhZGVzIHBhcmEgYm90b25cbiAgICogQHBhcmFtIHtTdHJpbmd9IHByb3BzLmNsYXNzTmFtZSAtIGNsYXNzZXMgY3NzIHBhcmEgYm90b25cbiAgICogQHBhcmFtIHsqfSBwcm9wcy5rZXkgLSBrZXkgcGFyYSBpZGVudGlmaWNhciBhIGJvdG9uXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBwcm9wcy5sYWJlbCAtIFRleHRvIGJvdG9uXG4gICAqIEByZXR1cm4ge09iamVjdH0gRWxlbWVudG8gRG9tIGRlbCBib3RvbiBjcmVhZG9cbiAgICovXG4gIGNyZWF0ZUJ1dHRvbihwcm9wcyl7XG4gICAgcmV0dXJuIGRvbS5jcmVhdGVFbGVtZW50RnJvbUhUTUwoYFxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cIiR7cHJvcHMuY2xhc3NOYW1lIHx8ICcnfSBpbnB1dC1rZXk9XCIke3Byb3BzLmtleSB8fCAnJ31cIj5cbiAgICAgICAgICAgICAgJHtwcm9wcy5sYWJlbCB8fCAnJ31cbiAgICAgICAgICAgIDwvYnV0dG9uPmApO1xuICB9LFxuXG4gIC8qKlxuICAgKiBDcmVhIEJvdG9uZXMgZGUgZ3VhcmRhciB5IGNhbmNlbGFyIGxvcyBkYXRvcyBkZSBmb3JtdWxhcmlvIGRlbCBzaWRlYmFyIGRlcmVjaG9cbiAgICpcbiAgICogQHJldHVybiB7T2JqZWN0fSBFbGVtZW50byBEb20gZGVsIGJvdG9uZXMgY3JlYWRvc1xuICAgKi9cbiAgY3JlYXRlTmF2UmlnaHRidXR0b25zKCl7XG4gICAgbGV0IHNhdmVCdG4gICAgPSB0aGlzLmNyZWF0ZUJ1dHRvbih7bGFiZWw6J0d1YXJkYXInLCBjbGFzc05hbWU6J2J0bi1yYWlzZWQnfSk7XG4gICAgbGV0IGNhbmNlbEJ0biAgPSB0aGlzLmNyZWF0ZUJ1dHRvbih7bGFiZWw6J0NhbmNlbGFyJywgY2xhc3NOYW1lOididG4tb3V0bGluZSd9KTtcbiAgICBsZXQgYnRuU2VjdGlvbiA9IGRvbS5jcmVhdGVFbGVtZW50RnJvbUhUTUwoYDxkaXYgY2xhc3M9XCJidXR0b24tc2VjdGlvblwiPjwvZGl2PmApO1xuICAgIGJ0blNlY3Rpb24uYXBwZW5kQ2hpbGQoc2F2ZUJ0bik7XG4gICAgYnRuU2VjdGlvbi5hcHBlbmRDaGlsZChjYW5jZWxCdG4pO1xuXG4gICAgc2F2ZUJ0bi5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgZSA9PiB7XG4gICAgICBzYXZlQnRuLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KFwic2F2ZU11bHRpSW5wdXRcIiwge1xuICAgICAgICBidWJibGVzOiB0cnVlLFxuICAgICAgICBjYW5jZWxhYmxlOiBmYWxzZSxcbiAgICAgIH0pKTtcbiAgICB9KTtcblxuICAgIGNhbmNlbEJ0bi5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgZSA9PiB7XG4gICAgICBjYW5jZWxCdG4uZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoXCJjYW5jZWxNdWx0aUlucHV0XCIsIHtcbiAgICAgICAgYnViYmxlczogdHJ1ZSxcbiAgICAgICAgY2FuY2VsYWJsZTogZmFsc2UsXG4gICAgICB9KSk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gYnRuU2VjdGlvbjtcbiAgfSxcblxuXG5cbiAgLyoqXG4gICAqIENyZWEgSW5wdXQgY29tbyBlbGVtZW50byBEb21cbiAgICpcbiAgICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gY29uZmlnIHBhcmEgSW5wdXRcbiAgICogQHBhcmFtIHtPYmplY3R9IFtkYXRhRGF5ID0gbnVsbF0gLSB2YWxvcmVzIGRlIGl0ZW0geSBEaWEsIG9wY2lvbmFsXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBbZGF5U2VsZWN0ZWQgPSBudWxsXSAtIGRhdG9zIGRlbCBkaWEgc2VsZWNjaW9uYWRvXG4gICAqIEByZXR1cm4ge09iamVjdH0gRWxlbWVudG8gRG9tIGRlbCBpbnB1dCBjcmVhZG9cbiAgICovXG4gIGNyZWF0ZUlucHV0KHByb3BzLCBkYXRhRGF5PSBudWxsLCBkYXlTZWxlY3RlZCA9IG51bGwpe1xuICAgIGxldCByID0gbnVsbDtcblxuICAgIGlmKHByb3BzLmlzSGlkZGVuKSByZXR1cm4gcjtcblxuICAgIHN3aXRjaCAocHJvcHMudHlwZSkge1xuICAgICAgY2FzZSBcImlucHV0TGlzdFwiOlxuICAgICAgICByID0gdGhpcy5jcmVhdGVJbnB1dExpc3QocHJvcHMsIGRhdGFEYXksIGRheVNlbGVjdGVkKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwidGl0bGVcIjpcbiAgICAgICAgciA9IHRoaXMuY3JlYXRlVGl0bGUocHJvcHMpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJudW1iZXJcIjpcbiAgICAgICAgciA9IHRoaXMuY3JlYXRlSW5wdXROdW1iZXIocHJvcHMsIGRhdGFEYXkpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJmbG9hdFwiOlxuICAgICAgICByID0gdGhpcy5jcmVhdGVJbnB1dEZsb2F0KHByb3BzLCBkYXRhRGF5KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwibWVzc2FnZVwiOlxuICAgICAgICByID0gdGhpcy5jcmVhdGVJbnB1dE1lc3NhZ2UocHJvcHMsIGRhdGFEYXkpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJ0ZXh0YXJlYVwiOlxuICAgICAgICByID0gdGhpcy5jcmVhdGVJbnB1dFRleHRBcmVhKHByb3BzLCBkYXRhRGF5KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiY2hlY2tib3hcIjpcbiAgICAgICAgciA9IHRoaXMuY3JlYXRlSW5wdXRDaGVja2JveChwcm9wcywgZGF0YURheSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcImlucHV0LWJveFwiOlxuICAgICAgICByID0gdGhpcy5jcmVhdGVJbnB1dEJveChwcm9wcywgZGF0YURheSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcInRpbWVcIjpcbiAgICAgICAgciA9IHRoaXMuY3JlYXRlSW5wdXRUaW1lKHByb3BzLCBkYXRhRGF5KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwidGV4dFwiOlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgciA9IHRoaXMuY3JlYXRlSW5wdXRUZXh0KHByb3BzLCBkYXRhRGF5KTtcbiAgICB9XG5cbiAgICByZXR1cm4gcjtcbiAgfSxcblxuXG5cbiAgLyoqXG4gICAqIENyZWEgSW5wdXQgY29uIGZvcm1hdG8gSG9yYSwgY29tbyBlbGVtZW50byBEb21cbiAgICpcbiAgICogVXNhIDIgaW5wdXRzLCBob3JhIHkgbWludXRvc1xuICAgKlxuICAgKiBlbCB2YWx1ZSBxdWUgaW50ZXJwcmV0YSBlcyBTdHJpbmcgSEg6TU1cbiAgICpcbiAgICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gY29uZmlnIHBhcmEgSW5wdXRcbiAgICogQHBhcmFtIHtPYmplY3R9IFtkYXRhRGF5ID0gbnVsbF0gLSB2YWxvcmVzIGRlIGl0ZW0geSBEaWEsIG9wY2lvbmFsXG4gICAqIEByZXR1cm4ge09iamVjdH0gRWxlbWVudG8gRG9tIGRlbCBpbnB1dCBjcmVhZG9cbiAgICovXG4gIGNyZWF0ZUlucHV0VGltZShwcm9wcywgZGF0YURheSl7XG4gICAgbGV0IGhoVmFsdWUgPSAnJztcbiAgICBsZXQgbW1WYWx1ZSA9ICcnO1xuXG4gICAgaWYoZGF0YURheSAmJiBkYXRhRGF5LnZhbHVlcyl7XG4gICAgICBsZXQgdmFsdWUgPSB1dGlscy5nZXRWYXJCeVBhdGgoZGF0YURheSwgcHJvcHMudmFyTmFtZSk7XG5cbiAgICAgIGlmKHZhbHVlKXtcbiAgICAgICAgdmFsdWUgICA9IHZhbHVlLnNwbGl0KFwiOlwiKTtcbiAgICAgICAgaGhWYWx1ZSA9IHZhbHVlWzBdO1xuICAgICAgICBtbVZhbHVlID0gdmFsdWVbMV07XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGV0IHIgPSBkb20uY3JlYXRlRWxlbWVudEZyb21IVE1MKGBcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtc2VjdGlvblwiIGlucHV0LWtleT1cIiR7cHJvcHMua2V5IHx8ICcnfVwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXN1YnRpdGxlIGQtYmxvY2tcIj5cbiAgICAgICAgICAgICAgJHtwcm9wcy5sYWJlbCB8fCAnJ31cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aW1lXCI+XG4gICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaG91clwiXG4gICAgICAgICAgICAgICAgICAgICBpZD1cInRlc3RcIlxuICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCIwMFwiXG4gICAgICAgICAgICAgICAgICAgICBtaW49XCIwXCJcbiAgICAgICAgICAgICAgICAgICAgIG1heD1cIjI0XCJcbiAgICAgICAgICAgICAgICAgICAgIHZhbHVlPVwiJHtoaFZhbHVlfVwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN5bWJvbFwiPjo8L3NwYW4+XG4gICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWludXRlc1wiXG4gICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIjAwXCJcbiAgICAgICAgICAgICAgICAgICAgIG1pbj1cIjBcIlxuICAgICAgICAgICAgICAgICAgICAgbWF4PVwiNTlcIlxuICAgICAgICAgICAgICAgICAgICAgdmFsdWU9XCIke21tVmFsdWV9XCI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5gKTtcblxuICAgIGxldCBoaCA9IHIucXVlcnlTZWxlY3RvcignLmhvdXInKTtcbiAgICBsZXQgbW0gPSByLnF1ZXJ5U2VsZWN0b3IoJy5taW51dGVzJyk7XG5cbiAgICBoaC5hZGRFdmVudExpc3RlbmVyKFwiaW5wdXRcIiwgZSA9PiB7XG4gICAgICBoaC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudChcImNoYW5nZVRpbWVJbnB1dEhIXCIsIHtcbiAgICAgICAgYnViYmxlczogdHJ1ZSxcbiAgICAgICAgY2FuY2VsYWJsZTogZmFsc2UsXG4gICAgICAgIGRldGFpbDp7XG4gICAgICAgICAga2V5OiBwcm9wcy5rZXksXG4gICAgICAgICAgdmFsdWU6IGUuc3JjRWxlbWVudC52YWx1ZVxuICAgICAgICB9XG4gICAgICB9KSk7XG4gICAgfSk7XG5cbiAgICBtbS5hZGRFdmVudExpc3RlbmVyKFwiaW5wdXRcIiwgZSA9PiB7XG4gICAgICBtbS5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudChcImNoYW5nZVRpbWVJbnB1dE1NXCIsIHtcbiAgICAgICAgYnViYmxlczogdHJ1ZSxcbiAgICAgICAgY2FuY2VsYWJsZTogZmFsc2UsXG4gICAgICAgIGRldGFpbDp7XG4gICAgICAgICAga2V5OiBwcm9wcy5rZXksXG4gICAgICAgICAgdmFsdWU6IGUuc3JjRWxlbWVudC52YWx1ZVxuICAgICAgICB9XG4gICAgICB9KSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLmFkZEtleURvd25JbnB1dEV2ZW50cyhoaCk7XG4gICAgdGhpcy5hZGRLZXlEb3duSW5wdXRFdmVudHMobW0pO1xuXG4gICAgcmV0dXJuIHI7XG4gIH0sXG5cblxuICAvKipcbiAgICogQ3JlYSBUaXRsZSBjb21vIGVsZW1lbnRvIERvbVxuICAgKiBTZSBjb25maWd1cmEgY29tbyBpbnB1dCwgcGVybyBubyBkZXZ1ZWx2ZSBkYXRvcywgZXMgdW4gdGV4dG9cbiAgICpcbiAgICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gY29uZmlnIHBhcmEgSW5wdXRcbiAgICogQHJldHVybiB7T2JqZWN0fSBFbGVtZW50byBEb20gZGVsIGlucHV0IGNyZWFkb1xuICAgKi9cbiAgY3JlYXRlVGl0bGUocHJvcHMpe1xuICAgIHJldHVybiBkb20uY3JlYXRlRWxlbWVudEZyb21IVE1MKGBcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtc2VjdGlvblwiIGlucHV0LWtleT1cIiR7cHJvcHMua2V5IHx8ICcnfVwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXRpdGxlIFwiPlxuICAgICAgICAgICAgICAke3Byb3BzLmxhYmVsfVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvZGl2PmApO1xuICB9LFxuXG5cblxuICAvKipcbiAgICogQ3JlYSBJbnB1dCB0aXBvIE51bWVyaWNvIGNvbW8gZWxlbWVudG8gRG9tXG4gICAqXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIGNvbmZpZyBwYXJhIElucHV0XG4gICAqIEBwYXJhbSB7T2JqZWN0fSBkYXRhRGF5IC0gdmFsb3JlcyBkZSBpdGVtIHkgRGlhLCBvcGNpb25hbFxuICAgKiBAcmV0dXJuIHtPYmplY3R9IEVsZW1lbnRvIERvbSBkZWwgaW5wdXQgY3JlYWRvXG4gICAqL1xuICBjcmVhdGVJbnB1dE51bWJlcihwcm9wcywgZGF0YURheSl7XG4gICAgbGV0IHZhbHVlID0gXCJcIjtcbiAgICBpZihkYXRhRGF5ICYmIGRhdGFEYXkudmFsdWVzKXtcbiAgICAgIHZhbHVlID0gdXRpbHMuZ2V0VmFyQnlQYXRoKGRhdGFEYXksIHByb3BzLnZhck5hbWUpO1xuICAgIH1cbiAgICB2YWx1ZSA9IHZhbHVlIHx8ICcnO1xuXG4gICAgbGV0IGVsZW0gPSBkb20uY3JlYXRlRWxlbWVudEZyb21IVE1MKGBcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtc2VjdGlvblwiIGlucHV0LWtleT1cIiR7cHJvcHMua2V5IHx8ICcnfVwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXN1YnRpdGxlIGQtYmxvY2tcIj5cbiAgICAgICAgICAgICAgJHtwcm9wcy5sYWJlbH1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwibmF2LWlucHV0XCJcbiAgICAgICAgICAgICAgICAgIHZhbHVlPVwiJHt2YWx1ZX1cIj5cbiAgICAgICAgICA8L2Rpdj5gKTtcblxuICAgIGxldCBpbnB1dEVsZW0gPSBlbGVtLnF1ZXJ5U2VsZWN0b3IoXCJpbnB1dFwiKTtcbiAgICB0aGlzLmFkZEtleURvd25JbnB1dEV2ZW50cyhpbnB1dEVsZW0pO1xuXG4gICAgcmV0dXJuIGVsZW07XG4gIH0sXG5cblxuXG5cbiAgLyoqXG4gICAqIENyZWEgbGlzdGEgZGUgSW5wdXRzLCBjb24gYXJyYXkgZGUgdmFsb3JlcywgY29tbyBlbGVtZW50byBEb21cbiAgICpcbiAgICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gY29uZmlnIHBhcmEgSW5wdXRcbiAgICogQHBhcmFtIHtPYmplY3R9IGRhdGFEYXkgLSB2YWxvcmVzIGRlIGl0ZW0geSBEaWEsIG9wY2lvbmFsXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBbZGF5U2VsZWN0ZWQgPSBudWxsXSAtIGRhdG9zIGRlbCBkaWEgc2VsZWNjaW9uYWRvXG4gICAqIEByZXR1cm4ge09iamVjdH0gRWxlbWVudG8gRG9tIGRlbCBpbnB1dCBjcmVhZG9cbiAgICovXG4gIGNyZWF0ZUlucHV0TGlzdChwcm9wcywgZGF0YURheSwgZGF5U2VsZWN0ZWQgPSBudWxsKXtcbiAgICBsZXQgdmFsdWUgPSBudWxsO1xuICAgIGxldCBpbnB1dExpc3QgPSBbXTtcblxuICAgIC8vb2J0aWVuZSBpbnB1dHMgZGVmYXVsdCwgcGFyYSBjcmVhcmxvcywgc2luIHZhbG9yZXNcbiAgICBpZihkYXlTZWxlY3RlZCAmJiBBcnJheS5pc0FycmF5KGRheVNlbGVjdGVkLml0ZW0udmFsdWVzW3Byb3BzLmlucHV0TGlzdF0pKXtcblxuICAgICAgaW5wdXRMaXN0ID0gZGF5U2VsZWN0ZWQuaXRlbS52YWx1ZXNbcHJvcHMuaW5wdXRMaXN0XS5tYXAoaW5wdXRSb3cgPT4ge1xuXG4gICAgICAgIC8vbGltcGlhIGlucHV0TGlzdCBpbnB1dHNcbiAgICAgICAgLy9BVEVOVElPTiBwb3NpYmxlbWVudGUgaW5uZWNlc2FyaWFcbiAgICAgICAgaW5wdXRSb3cuaW5wdXRzLm1hcChpbnB1dCA9PiB7XG4gICAgICAgICAgaW5wdXQudmFsdWU7XG4gICAgICAgICAgcmV0dXJuIGlucHV0O1xuICAgICAgICB9KVxuXG5cbiAgICAgICAgLy9vYnRpZW5lIHZhbG9yZXMgZGVsIGRpYVxuICAgICAgICBpZiAoZGF0YURheSAmJiBkYXRhRGF5LnZhbHVlcykge1xuICAgICAgICAgIGxldCBpbnB1dFZhbHVlcyA9IHV0aWxzLmdldFZhckJ5UGF0aChkYXRhRGF5LCBwcm9wcy52YWx1ZXNQYXRoKTtcblxuICAgICAgICAgIC8vYXV0b3JyZWxsZW5hXG4gICAgICAgICAgaWYoaW5wdXRWYWx1ZXMpe1xuICAgICAgICAgICAgaW5wdXRSb3cuaW5wdXRzLmZvckVhY2goaW5wdXQgPT4ge1xuICAgICAgICAgICAgICBsZXQgdmFsdWVzID0gaW5wdXRWYWx1ZXMuZmluZCh2ID0+IHYuaWQgPT0gaW5wdXRSb3cuaWQpO1xuICAgICAgICAgICAgICBpbnB1dC52YWx1ZSA9IHZhbHVlcyA/IHZhbHVlc1tpbnB1dC52YXJOYW1lXSA6IG51bGw7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGlucHV0Um93O1xuXG4gICAgICB9KTtcbiAgICB9XG5cblxuICAgIGxldCBzdHIgPSBgPGRpdiBpbnB1dC1rZXk9XCIke3Byb3BzLmtleSB8fCAnJ31cIiA+YDtcbiAgICAgIGlucHV0TGlzdC5mb3JFYWNoKGlucHV0Um93ID0+IHtcbiAgICAgICAgc3RyICs9IGBcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1zZWN0aW9uIGlucHV0LXNlY3Rpb24tZmxleFwiID5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtc3VidGl0bGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICR7aW5wdXRSb3cubGFiZWx9XG4gICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPmA7XG5cbiAgICAgICAgICBpbnB1dFJvdy5pbnB1dHMuZm9yRWFjaChpbnB1dCA9PiB7XG4gICAgICAgICAgICBzdHIgKz0gYCBcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LXNlY3Rpb24tY29sXCIgPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1zdWJ0aXRsZSBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICR7aW5wdXQubGFiZWx9XG4gICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dC1pZD1cIiR7aW5wdXRSb3cuaWR9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dC1sYWJlbD1cIiR7aW5wdXQubGFiZWx9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm5hdi1pbnB1dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9XCIke2lucHV0LnZhbHVlfVwiPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5gO1xuICAgICAgICAgIH0pXG4gICAgICAgICAgc3RyICs9IGBcbiAgICAgICAgICAgICAgICAgIDwvZGl2PmA7XG4gICAgICB9KVxuICAgIHN0ciArPSBgPC9kaXY+YDtcblxuICAgIGxldCBlbGVtID0gZG9tLmNyZWF0ZUVsZW1lbnRGcm9tSFRNTChzdHIpO1xuXG4gICAgbGV0IGlucHV0c0VsZW0gPSBlbGVtLnF1ZXJ5U2VsZWN0b3JBbGwoXCJpbnB1dFwiKTtcbiAgICBpbnB1dHNFbGVtLmZvckVhY2goaW5wdXRFbGVtID0+ICB0aGlzLmFkZEtleURvd25JbnB1dEV2ZW50cyhpbnB1dEVsZW0pKTtcbiAgICByZXR1cm4gZWxlbTtcbiAgfSxcblxuXG5cbiAgLyoqXG4gICAqIENyZWEgSW5wdXQgZGUgdGV4dG8gVGV4dEFyZWEgY29tbyBlbGVtZW50byBEb21cbiAgICpcbiAgICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gY29uZmlnIHBhcmEgSW5wdXRcbiAgICogQHBhcmFtIHtPYmplY3R9IGRhdGFEYXkgLSB2YWxvcmVzIGRlIGl0ZW0geSBEaWEsIG9wY2lvbmFsXG4gICAqIEByZXR1cm4ge09iamVjdH0gRWxlbWVudG8gRG9tIGRlbCBpbnB1dCBjcmVhZG9cbiAgICovXG4gIGNyZWF0ZUlucHV0VGV4dEFyZWEocHJvcHMsIGRhdGFEYXkpe1xuICAgIGxldCB2YWx1ZSA9IFwiXCI7XG4gICAgaWYoZGF0YURheSAmJiBkYXRhRGF5LnZhbHVlcyl7XG4gICAgICB2YWx1ZSA9IHV0aWxzLmdldFZhckJ5UGF0aChkYXRhRGF5LCBwcm9wcy52YXJOYW1lKTtcbiAgICB9XG4gICAgbGV0IGVsZW0gPSBkb20uY3JlYXRlRWxlbWVudEZyb21IVE1MKGBcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtc2VjdGlvblwiIGlucHV0LWtleT1cIiR7cHJvcHMua2V5IHx8ICcnfVwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXN1YnRpdGxlIGQtYmxvY2tcIj5cbiAgICAgICAgICAgICAgJHtwcm9wcy5sYWJlbH1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDx0ZXh0YXJlYSBjbGFzcz1cIlwiIHZhbHVlPVwiJHt2YWx1ZX1cIj48L3RleHRhcmVhPlxuICAgICAgICAgIDwvZGl2PmApO1xuXG4gICAgbGV0IGlucHV0RWxlbSA9IGVsZW0ucXVlcnlTZWxlY3RvcihcInRleHRhcmVhXCIpO1xuICAgIHRoaXMuYWRkS2V5RG93bklucHV0RXZlbnRzKGlucHV0RWxlbSk7XG4gICAgcmV0dXJuIGVsZW07XG4gIH0sXG5cblxuXG4gIC8qKlxuICAgKiBDcmVhIElucHV0IGRlIE1lbnNhamUgY29tbyBlbGVtZW50byBEb21cbiAgICogdXRpbGl6YSBUZXh0QXJlYVxuICAgKlxuICAgKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBjb25maWcgcGFyYSBJbnB1dFxuICAgKiBAcGFyYW0ge09iamVjdH0gZGF0YURheSAtIHZhbG9yZXMgZGUgaXRlbSB5IERpYSwgb3BjaW9uYWxcbiAgICogQHJldHVybiB7T2JqZWN0fSBFbGVtZW50byBEb20gZGVsIGlucHV0IGNyZWFkb1xuICAgKi9cbiAgY3JlYXRlSW5wdXRNZXNzYWdlKHByb3BzLCBkYXRhRGF5KXtcbiAgICBsZXQgdmFsdWUgPVwiXCI7XG4gICAgaWYoZGF0YURheSAmJiBkYXRhRGF5Lm1lc3NhZ2Upe1xuICAgICAgdmFsdWUgPSB1dGlscy5nZXRWYXJCeVBhdGgoZGF0YURheSwgcHJvcHMudmFyTmFtZSk7XG4gICAgfVxuICAgIGxldCBlbGVtID0gZG9tLmNyZWF0ZUVsZW1lbnRGcm9tSFRNTChgXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LXNlY3Rpb24gbXNqLWlucHV0LWNvbnRhaW5lclwiXG4gICAgICAgICAgICAgIGlucHV0LWtleT1cIiR7cHJvcHMua2V5IHx8ICcnfVwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXN1YnRpdGxlIGQtYmxvY2tcIj5cbiAgICAgICAgICAgICAgTWVuc2FqZVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPHRleHRhcmVhIGNsYXNzPVwibXNqXCI+JHt2YWx1ZSB8fCAnJ308L3RleHRhcmVhPlxuICAgICAgICAgIDwvZGl2PmApO1xuXG4gICAgbGV0IGlucHV0RWxlbSA9IGVsZW0ucXVlcnlTZWxlY3RvcihcInRleHRhcmVhXCIpO1xuICAgIHRoaXMuYWRkS2V5RG93bklucHV0RXZlbnRzKGlucHV0RWxlbSk7XG4gICAgcmV0dXJuIGVsZW07XG5cbiAgfSxcblxuXG5cbiAgLyoqXG4gICAqIENyZWEgSW5wdXQgZGUgdGV4dG8gY29tbyBlbGVtZW50byBEb21cbiAgICpcbiAgICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gY29uZmlnIHBhcmEgSW5wdXRcbiAgICogQHBhcmFtIHtPYmplY3R9IGRhdGFEYXkgLSB2YWxvcmVzIGRlIGl0ZW0geSBEaWEsIG9wY2lvbmFsXG4gICAqIEByZXR1cm4ge09iamVjdH0gRWxlbWVudG8gRG9tIGRlbCBpbnB1dCBjcmVhZG9cbiAgICovXG4gIGNyZWF0ZUlucHV0VGV4dChwcm9wcywgZGF0YURheSl7XG4gICAgbGV0IHZhbHVlID0gXCJcIjtcbiAgICBpZihkYXRhRGF5ICYmIGRhdGFEYXkudmFsdWVzKXtcbiAgICAgIHZhbHVlID0gdXRpbHMuZ2V0VmFyQnlQYXRoKGRhdGFEYXksIHByb3BzLnZhck5hbWUpO1xuICAgIH1cbiAgICBsZXQgZWxlbSA9IGRvbS5jcmVhdGVFbGVtZW50RnJvbUhUTUwoYFxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1zZWN0aW9uXCIgaW5wdXQta2V5PVwiJHtwcm9wcy5rZXkgfHwgJyd9XCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtc3VidGl0bGUgZC1ibG9ja1wiPlxuICAgICAgICAgICAgICAke3Byb3BzLmxhYmVsfVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJuYXYtaW5wdXRcIiB2YWx1ZT1cIiR7dmFsdWV9XCI+XG4gICAgICAgICAgPC9kaXY+YCk7XG5cbiAgICBsZXQgaW5wdXRFbGVtID0gZWxlbS5xdWVyeVNlbGVjdG9yKFwiaW5wdXRcIik7XG4gICAgdGhpcy5hZGRLZXlEb3duSW5wdXRFdmVudHMoaW5wdXRFbGVtKTtcbiAgICByZXR1cm4gZWxlbTtcblxuICB9LFxuXG5cblxuICAvKipcbiAgICogQ3JlYSBJbnB1dCBOdW1lcm8gRmxvdGFudGUsIGNvbW8gZWxlbWVudG8gRG9tXG4gICAqXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIGNvbmZpZyBwYXJhIElucHV0XG4gICAqIEBwYXJhbSB7T2JqZWN0fSBkYXRhRGF5IC0gdmFsb3JlcyBkZSBpdGVtIHkgRGlhLCBvcGNpb25hbFxuICAgKiBAcmV0dXJuIHtPYmplY3R9IEVsZW1lbnRvIERvbSBkZWwgaW5wdXQgY3JlYWRvXG4gICAqL1xuICBjcmVhdGVJbnB1dEZsb2F0KHByb3BzLCBkYXRhRGF5KXtcbiAgICBsZXQgdmFsdWUgPSBcIlwiO1xuICAgIGlmKGRhdGFEYXkgJiYgZGF0YURheS52YWx1ZXMpe1xuICAgICAgdmFsdWUgPSB1dGlscy5nZXRWYXJCeVBhdGgoZGF0YURheSwgcHJvcHMudmFyTmFtZSk7XG4gICAgfVxuICAgIGxldCBlbGVtID0gZG9tLmNyZWF0ZUVsZW1lbnRGcm9tSFRNTChgXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LXNlY3Rpb25cIiBpbnB1dC1rZXk9XCIke3Byb3BzLmtleSB8fCAnJ31cIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1zdWJ0aXRsZSBkLWJsb2NrXCI+XG4gICAgICAgICAgICAgICR7cHJvcHMubGFiZWx9XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8aW5wdXQgdHlwZT1cIm51bWJlclwiIGNsYXNzPVwibmF2LWlucHV0XCIgdmFsdWU9XCIke3ZhbHVlfVwiPlxuICAgICAgICAgIDwvZGl2PmApO1xuXG4gICAgbGV0IGlucHV0RWxlbSA9IGVsZW0ucXVlcnlTZWxlY3RvcihcImlucHV0XCIpO1xuICAgIHRoaXMuYWRkS2V5RG93bklucHV0RXZlbnRzKGlucHV0RWxlbSk7XG4gICAgcmV0dXJuIGVsZW07XG5cbiAgfSxcblxuXG4gIC8qKlxuICAgKiBDcmVhIElucHV0Qm94LCBjb21vIGVsZW1lbnRvIERvbVxuICAgKiB1biBJbnB1dEJveCBlcyB1biBjb250ZW5lZG9yIGNvbiB1bmEgbGlzdGEgZGUgaW5wdXRzXG4gICAqXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIGNvbmZpZyBwYXJhIElucHV0XG4gICAqIEBwYXJhbSB7T2JqZWN0fSBkYXRhRGF5IC0gdmFsb3JlcyBkZSBpdGVtIHkgRGlhLCBvcGNpb25hbFxuICAgKiBAcmV0dXJuIHtPYmplY3R9IEVsZW1lbnRvIERvbSBkZWwgaW5wdXQgY3JlYWRvXG4gICAqL1xuICBjcmVhdGVJbnB1dEJveChwcm9wcywgZGF0YURheSl7XG4gICAgbGV0IHZhbHVlID0gW107XG4gICAgaWYoZGF0YURheSAmJiBkYXRhRGF5LnZhbHVlcyl7XG4gICAgICB2YWx1ZSA9IHV0aWxzLmdldFZhckJ5UGF0aChkYXRhRGF5LCBwcm9wcy52YXJOYW1lKTtcbiAgICB9XG5cbiAgICBsZXQgc3RyICA9IGA8ZGl2IGNsYXNzPVwiaW5wdXQtYm94IFwiIGlucHV0LWtleT1cIiR7cHJvcHMua2V5IHx8ICcnfVwiPmA7XG5cbiAgICBpZihwcm9wcy5pbnB1dHMpe1xuICAgICAgcHJvcHMuaW5wdXRzLmZvckVhY2goaSA9PiB7XG4gICAgICAgIGxldCB2YWx1ZV9mb3VuZCA9IHZhbHVlID8gdmFsdWUuZmluZCh2YWwgPT4gdmFsLmlkID09IGkuaWQpIDogbnVsbDtcbiAgICAgICAgbGV0IHYgPSB2YWx1ZV9mb3VuZCB8fCAnJztcbiAgICAgICAgbGV0IHRvb2x0aXAgPSBcIlwiO1xuICAgICAgICBsZXQgaWNvbiA9IFwiXCI7XG5cbiAgICAgICAgaWYoaS50b29sdGlwKXtcbiAgICAgICAgdG9vbHRpcCA9IGBcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtaW5pLWlucHV0LXNlY3Rpb24tLXRvb2x0aXBcIj5cbiAgICAgICAgICAgICAgICAgICAgJHtpLnRvb2x0aXB9XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5gO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYoaS5jb2xvckljb24pe1xuICAgICAgICAgIGljb249IGA8ZGl2IGNsYXNzPVwibWluaS1pbnB1dC1zZWN0aW9uLS1pY29uICR7aS5jb2xvckljb259XCI+IDwvZGl2PmA7XG4gICAgICAgIH1cblxuXG5cbiAgICAgICAgc3RyICs9IGBcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtaW5pLWlucHV0LXNlY3Rpb25cIj5cbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwidHJ1bmNhdGVcIj5cbiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgICAgICAgICAgICAgaW5wdXQtaWQ9XCIke2kuaWQgfHwgJycgfVwiXG4gICAgICAgICAgICAgICAgICAgICAgaW5wdXQta2V5PVwiJHtpLmtleSB8fCBpLmxhYmVsfVwiXG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWU9XCIke3YudmFsdWUgfHwgJyd9XCI+XG4gICAgICAgICAgICAgICAgICAgICAke2ljb24gfVxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWluaS1pbnB1dC1zZWN0aW9uLS1uYW1lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAke2kubGFiZWx9XG4gICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAke3Rvb2x0aXB9XG4gICAgICAgICAgICA8L2Rpdj5gO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgc3RyICs9IGA8L2Rpdj5gO1xuICAgIHJldHVybiBkb20uY3JlYXRlRWxlbWVudEZyb21IVE1MKHN0cik7XG4gIH0sXG5cblxuXG4gIC8qKlxuICAgKiBDcmVhIENoZWNrYm94LCBjb21vIGVsZW1lbnRvIERvbVxuICAgKlxuICAgKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBjb25maWcgcGFyYSBJbnB1dFxuICAgKiBAcGFyYW0ge09iamVjdH0gZGF0YURheSAtIHZhbG9yZXMgZGUgaXRlbSB5IERpYSwgb3BjaW9uYWxcbiAgICogQHJldHVybiB7T2JqZWN0fSBFbGVtZW50byBEb20gZGVsIGlucHV0IGNyZWFkb1xuICAgKi9cbiAgY3JlYXRlSW5wdXRDaGVja2JveChwcm9wcywgZGF0YURheSl7XG4gICAgbGV0IHZhbHVlID0gXCJcIjtcbiAgICBpZihkYXRhRGF5ICYmIGRhdGFEYXkudmFsdWVzKXtcbiAgICAgIHZhbHVlID0gdXRpbHMuZ2V0VmFyQnlQYXRoKGRhdGFEYXksIHByb3BzLnZhck5hbWUpO1xuICAgIH1cbiAgICBsZXQgciA9IGRvbS5jcmVhdGVFbGVtZW50RnJvbUhUTUwoYFxuICAgICAgPGRpdiBjbGFzcz1cImlucHV0LXNlY3Rpb25cIiBpbnB1dC1rZXk9XCIke3Byb3BzLmtleSB8fCAnJ31cIj5cbiAgICAgICAgPGxhYmVsPlxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBuYW1lPVwiJHtwcm9wcy5rZXkgfHwgJyd9XCIgaW5wdXQta2V5PVwiJHtwcm9wcy5rZXkgfHwgJyd9XCIgJHt2YWx1ZT8nY2hlY2tlZCc6Jyd9PlxuICAgICAgICAgICR7cHJvcHMubGFiZWx9XG4gICAgICAgIDwvbGFiZWw+XG4gICAgICA8L2Rpdj5gKTtcblxuICAgICAgcmV0dXJuIHI7XG4gICAgfSxcbiAgICBcbiAgYWRkS2V5RG93bklucHV0RXZlbnRzKGlucHV0KXtcbiAgICBpbnB1dC5hZGRFdmVudExpc3RlbmVyKFwia2V5ZG93blwiLCBmdW5jdGlvbihldmVudCkge1xuICAgICAgaWYgKGV2ZW50LmtleUNvZGUgPT09IDEzKSB7IC8vRU5URVJcbiAgICAgICAgaW5wdXQuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoXCJzYXZlTXVsdGlJbnB1dFwiLCB7XG4gICAgICAgICAgYnViYmxlczogdHJ1ZSxcbiAgICAgICAgICBjYW5jZWxhYmxlOiBmYWxzZSxcbiAgICAgICAgfSkpO1xuICAgICAgfVxuICAgICAgaWYgKGV2ZW50LmtleUNvZGUgPT09IDI3KSB7IC8vRVNDXG4gICAgICAgIGlucHV0LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KFwiY2FuY2VsTXVsdGlJbnB1dFwiLCB7XG4gICAgICAgICAgYnViYmxlczogdHJ1ZSxcbiAgICAgICAgICBjYW5jZWxhYmxlOiBmYWxzZSxcbiAgICAgICAgfSkpO1xuICAgICAgfVxuICAgIH0pO1xuICB9LFxuXG5cbiAgY3JlYXRlQ29udGV4dE1lbnUoIHtcbiAgICBjb25maWcsXG4gICAgJGNhcGliYXJhRWxlbSA9IG51bGwsXG4gICAgZXZ0ICAgICAgPSBudWxsLFxuICAgIGRhdGUgICAgID0gbnVsbCxcbiAgICBpdGVtICAgICA9IG51bGwsXG4gICAgc2VsZWN0ZWQgPSBbXSxcbiAgICB0YWJTZWxlY3RlZCA9IG51bGwsXG4gICAgbGVmdCAgICAgPSBudWxsLFxuICAgIHRvcCAgICAgID0gbnVsbCxcbiAgICBuYW1lICAgICA9IFwiXCJcbiAgfSApe1xuXG4gICAgaWYoY29uZmlnLnRpbWVsaW5lLmNvbnRleHRNZW51ID09PSB1bmRlZmluZWQpIHJldHVybiB7ZWxlbTogbnVsbCwgaXNWaXNpYmxlOiBmYWxzZX0gO1xuXG4gICAgbGV0IGNsYXNzTmFtZSA9IFwiXCI7XG4gICAgbGV0IHN0eWxlID0gXCJcIjtcbiAgICBsZXQgc3RySHRtbCA9ICcnO1xuICAgIGxldCBsZWZ0UG9zaXRpb24gPSBudWxsO1xuICAgIGxldCB0b3BQb3NpdGlvbiA9IG51bGw7XG4gICAgbGV0IGlzVmlzaWJsZSA9IHRydWU7XG5cbiAgICBpZihldnQgJiYgJGNhcGliYXJhRWxlbSApe1xuICAgICAgbGVmdCA9IGV2dC5jbGllbnRYO1xuICAgICAgdG9wID0gZXZ0LmNsaWVudFkgLSAkY2FwaWJhcmFFbGVtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcDtcbiAgICB9XG5cbiAgICBpZihsZWZ0KXtcbiAgICAgIGxlZnRQb3NpdGlvbiA9IGxlZnQ7XG4gICAgfVxuXG4gICAgaWYodG9wKXtcbiAgICAgIHRvcFBvc2l0aW9uID0gdG9wO1xuICAgIH1cblxuICAgIGlmKGxlZnRQb3NpdGlvbiAhPT0gbnVsbCAmIHRvcFBvc2l0aW9uICE9PSBudWxsKXtcbiAgICAgIHN0eWxlICs9IGB0b3A6ICR7IHRvcFBvc2l0aW9uIH1weDsgbGVmdDogJHsgbGVmdFBvc2l0aW9uIH1weGA7XG4gICAgfWVsc2V7XG4gICAgICBjbGFzc05hbWUgKz0gXCJjbS1oaWRlXCI7XG4gICAgICBpc1Zpc2libGUgPSBmYWxzZTtcbiAgICB9XG5cblxuXG4gICAgc3RySHRtbCArPSBgIDxkaXYgY2xhc3M9XCJjYXAtY29udGV4dC1tZW51LWNvbnRhaW5lciAke2NsYXNzTmFtZX1cIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcC1jb250ZXh0LW1lbnVcIiBzdHlsZT1cIiR7c3R5bGV9XCI+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICA8L2Rpdj5gO1xuXG4gICAgbGV0ICRjb250ZXh0TWVudUNvbnRhaW5lciA9IGRvbS5jcmVhdGVFbGVtZW50RnJvbUhUTUwoc3RySHRtbCk7XG4gICAgbGV0ICRjb250ZXh0TWVudSA9ICRjb250ZXh0TWVudUNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKFwiLmNhcC1jb250ZXh0LW1lbnVcIik7XG5cbiAgICBjb25maWcudGltZWxpbmUuY29udGV4dE1lbnUub3B0aW9ucy5mb3JFYWNoKG9wdGlvbiA9PiB7XG5cbiAgICAgIGlmKG9wdGlvbi5zaG93SWYpe1xuICAgICAgICBsZXQgc2hvdyA9IG9wdGlvbi5zaG93SWYoe2l0ZW0sIGRhdGUsIHNlbGVjdGVkLCBuYW1lLCB0YWJTZWxlY3RlZH0pO1xuICAgICAgICBpZighc2hvdykgcmV0dXJuO1xuICAgICAgfVxuXG5cbiAgICAgIGxldCBpc0VuYWJsZWQgPSB0cnVlO1xuICAgICAgaWYob3B0aW9uLmVuYWJsZUlmKXtcbiAgICAgICAgaXNFbmFibGVkID0gb3B0aW9uLmVuYWJsZUlmKHtpdGVtLCBkYXRlLCBzZWxlY3RlZCwgbmFtZSwgdGFiU2VsZWN0ZWR9KTtcbiAgICAgIH1cblxuICAgICAgbGV0IG9wdGlvbkNsYXNzTmFtZSA9IFwiXCI7XG4gICAgICBsZXQgc3RySWNvbiA9IFwiXCI7XG5cbiAgICAgIGlmKCFpc0VuYWJsZWQpe1xuICAgICAgICBvcHRpb25DbGFzc05hbWUgKz0gXCJpcy1kaXNhYmxlZFwiO1xuICAgICAgfVxuXG4gICAgICBpZihvcHRpb24uaWNvbil7XG5cbiAgICAgICAgc3RySWNvbiA9IGA8ZGl2IGNsYXNzPVwiY2FwLWNvbnRleHQtbWVudV9pdGVtX2ljb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCIke29wdGlvbi5pY29ufVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5gO1xuICAgICAgfVxuXG4gICAgICBsZXQgb3B0aW9uU3RySHRtbCA9IGBcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcC1jb250ZXh0LW1lbnVfaXRlbSAke29wdGlvbkNsYXNzTmFtZX1cIj5cbiAgICAgICAgICAke3N0ckljb259XG4gICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAke29wdGlvbi5sYWJlbH1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvZGl2PmA7XG5cbiAgICAgIGxldCAkb3B0aW9uID0gZG9tLmNyZWF0ZUVsZW1lbnRGcm9tSFRNTChvcHRpb25TdHJIdG1sKTtcblxuICAgICAgaWYoaXNFbmFibGVkKXtcbiAgICAgICAgJG9wdGlvbi5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgKGV2dENsaWNrKSA9PiBvcHRpb24ub25DbGljayh7XG4gICAgICAgICAgY29uZmlnLCBldnQ6ZXZ0Q2xpY2ssIGRhdGUsIGl0ZW0sIHNlbGVjdGVkLCB0YWJTZWxlY3RlZFxuICAgICAgICB9KSk7XG4gICAgICB9ZWxzZXtcbiAgICAgICAgJG9wdGlvbi5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgKGV2dENsaWNrKSA9PiB7XG4gICAgICAgICAgZXZ0Q2xpY2sucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBldnRDbGljay5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgICRjb250ZXh0TWVudS5hcHBlbmQoJG9wdGlvbik7XG4gICAgfSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgZWxlbTogJGNvbnRleHRNZW51Q29udGFpbmVyLFxuICAgICAgaXNWaXNpYmxlXG4gICAgfTtcblxuICB9LFxuXG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFGQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFGQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBS0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFFQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTUE7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFHQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBR0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUhBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBSEE7QUFPQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBSEE7QUFPQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBSEE7QUFPQTtBQUdBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUhBO0FBUUE7QUFDQTtBQUVBO0FBQ0E7QUFHQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBSEE7QUFPQTtBQUNBO0FBRUE7QUFDQTtBQUlBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFIQTtBQU9BO0FBQ0E7QUFFQTtBQUNBO0FBR0E7QUFFQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFKQTtBQUhBO0FBVUE7QUFHQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBSEE7QUFRQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBSUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBSEE7QUFTQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFNQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQTdDQTtBQWlEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBN0NBO0FBZ0RBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBUUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUE3Q0E7QUFnREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQTdDQTtBQWdEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFJQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFJQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUtBO0FBSUE7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSkE7QUFIQTtBQVVBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQUhBO0FBU0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQU5BO0FBSEE7QUFZQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUFIQTtBQVNBO0FBQ0E7QUFPQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUhBO0FBVUE7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRkE7QUFLQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBSEE7QUFTQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQUhBO0FBU0E7QUFHQTtBQUdBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBS0E7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUVBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBOUJBO0FBQ0E7QUFnQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBSEE7QUFRQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFIQTtBQVFBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBVkE7QUFhQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFEQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUZBO0FBS0E7QUFDQTtBQTMyRkEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/util/tableElements.js\n");
|
|
247
247
|
|
|
248
248
|
/***/ }),
|
|
249
249
|
|