@vacayou/tripfusion-js-sdk 1.1.0 → 1.3.0
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/dist/index.html +17 -2
- package/dist/main.js +1359 -2
- package/package.json +1 -1
package/dist/main.js
CHANGED
|
@@ -1,2 +1,1359 @@
|
|
|
1
|
-
(()=>{"use strict";var n={365:(n,t,e)=>{e.d(t,{A:()=>s});var r=e(354),i=e.n(r),o=e(314),a=e.n(o)()(i());a.push([n.id,"@import url(https://use.typekit.net/sag8ceb.css);"]),a.push([n.id,'#tripfusion-loader {\n color: white;\n margin-right: -50%;\n position: absolute;\n top: 50%;\n left: 50%;\n font-family: futura-lt-w01-book, futura-lt-w05-book, Arial, Helvetica, sans-serif;\n transform: translate(-50%, -50%);\n}\n#tripfusion-loader span {\n font-weight: bold;\n font-size: 1.3rem;\n}\n\n#tripfusion-resume-button {\n position: fixed;\n overflow: hidden;\n cursor: pointer;\n display: flex;\n justify-content: space-evenly;\n align-items: center;\n padding: 12px 32px;\n box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.25), 0px 4px 4px rgba(0, 0, 0, 0.1);\n right: 30px;\n z-index: 100000000000;\n bottom: 40px;\n border: none;\n transform: translateX(400px);\n background-color: #092b43;\n border-radius: 23px;\n}\n\n#tripfusion-resume-button span {\n display: block !important;\n font-family: sweet-sans-pro, sans-serif;\n font-size: 1rem;\n font-weight: 700;\n line-height: 1.2;\n letter-spacing: 1.5px;\n text-transform: uppercase !important;\n color: #ffffff !important;\n}\n\n#tripfusion-widget-wrapper {\n background: rgba(0, 0, 0, 0);\n position: fixed;\n top: 0;\n right: 0;\n width: 100%;\n transition: background 0.5s ease-out;\n}\n\n#tripfusion-widget {\n position: absolute;\n width: 100%;\n height: 100%;\n top: 0px;\n right: 0px;\n}\n\n#tripfusion-widget-inner-wrapper {\n position: fixed;\n display: flex;\n flex-direction: column;\n width: 500px;\n height: calc(100% - 40px);\n right: 20px;\n bottom: 20px;\n background: white;\n border-radius: 8px;\n box-shadow: 0 2px 10px 0 rgba(0, 0, 0, 0.2);\n font-family: "Roboto", "Helvetica", "Arial", sans-serif;\n font-weight: 400;\n font-size: 1rem;\n line-height: 1.5;\n letter-spacing: 0.00938em;\n}\n\n#tripfusion-widget-header {\n height: 60px;\n background: white;\n border-bottom: 1px solid #f1f1f1;\n padding: 0 32px 0 32px;\n display: flex;\n justify-content: space-between;\n align-items: center;\n color: #092b43;\n}\n\n#tripfusion-widget-iframe {\n height: 100%;\n border: none;\n}\n\n#tripfusion-widget-header-title {\n font-family: sweet-sans-pro, sans-serif;\n line-height: 1.2;\n font-weight: 700;\n font-size: 1rem;\n letter-spacing: 1.5px;\n text-transform: uppercase;\n}\n\n#tripfusion-widget-close-button {\n overflow: hidden;\n position: relative;\n border: none;\n padding: 0;\n width: 2em;\n height: 2em;\n border-radius: 50%;\n background: transparent;\n font: inherit;\n text-indent: 100%;\n cursor: pointer;\n\n &:focus {\n outline: solid 0 transparent;\n background-color: rgba(0, 0, 0, 0.04);\n }\n\n &:hover {\n background-color: rgba(0, 0, 0, 0.04);\n }\n\n &:before,\n &:after {\n position: absolute;\n top: 25%;\n left: calc(50% - 0.0625em);\n width: 0.125em;\n height: 50%;\n border-radius: 0.125em;\n transform: rotate(45deg);\n background: currentcolor;\n content: "";\n }\n\n &:after {\n transform: rotate(-45deg);\n }\n}\n\n.dismiss-btn-slide-in {\n -webkit-transition: 500ms;\n -moz-transition: 500ms;\n transition: 500ms;\n transform: translateX(0) !important;\n}\n\n.dismiss-btn-slide-out {\n -webkit-transition: 500ms;\n -moz-transition: 500ms;\n transition: 500ms;\n transform: translateX(400px) !important;\n}\n\n.dismiss-btn-slide-out span {\n display: none;\n}\n\n.dismiss-btn-resize-in {\n width: 46px !important;\n height: 46px !important;\n transition: 500ms;\n right: 30px !important;\n}\n\n.dismiss-btn-resize-in span {\n display: none;\n}\n\n.dismiss-btn-resize-in:hover {\n width: 217px !important;\n height: 46px !important;\n transition: all 300ms linear;\n cursor: pointer;\n}\n\n.dismiss-btn-resize-in:hover span {\n display: inline;\n height: 20px !important;\n overflow: hidden;\n}\n\n.dismiss-btn-resize-out {\n width: 46px !important;\n height: 46px !important;\n transition: 500ms;\n right: -100px !important;\n}\n\n.slide-in {\n transform: translateX(100%);\n -webkit-transform: translateX(100%);\n animation: slide-in 0.8s forwards !important;\n -webkit-animation: slide-in 0.8s forwards !important;\n z-index: 1000000000000;\n}\n\n.slide-out {\n transform: translateX(100%);\n -webkit-transform: translateX(100%);\n animation: slide-out 1s forwards !important;\n -webkit-animation: slide-out 1s forwards !important;\n z-index: -1000000000000;\n}\n\n@media screen and (max-width: 495px) {\n .slide-in {\n transform: translateY(100%);\n -webkit-transform: translateY(100%);\n animation: slide-up 0.8s forwards !important;\n -webkit-animation: slide-up 0.8s forwards !important;\n z-index: 1000000000000;\n }\n\n .slide-out {\n transform: translateY(100%);\n -webkit-transform: translateY(100%);\n animation: slide-down 0.5s forwards !important;\n -webkit-animation: slide-down 1s forwards !important;\n z-index: -1000000000000;\n }\n}\n\n@keyframes slide-in {\n 100% {\n transform: translateX(0%);\n }\n}\n\n@-webkit-keyframes slide-in {\n 100% {\n -webkit-transform: translateX(0%);\n }\n}\n\n@keyframes slide-up {\n 100% {\n transform: translateY(0%);\n }\n}\n\n@-webkit-keyframes slide-up {\n 100% {\n -webkit-transform: translateY(0%);\n }\n}\n\n@keyframes slide-out {\n 0% {\n transform: translateX(0%);\n }\n\n 100% {\n transform: translateX(100%);\n }\n}\n\n@-webkit-keyframes slide-out {\n 0% {\n -webkit-transform: translateX(0%);\n }\n\n 100% {\n -webkit-transform: translateX(100%);\n }\n}\n\n@keyframes slide-down {\n 0% {\n transform: translateY(0%);\n }\n\n 100% {\n transform: translateY(100%);\n }\n}\n\n@-webkit-keyframes slide-down {\n 0% {\n -webkit-transform: translateY(0%);\n }\n\n 100% {\n -webkit-transform: translateY(100%);\n }\n}\n',"",{version:3,sources:["webpack://./src/styles.css"],names:[],mappings:"AAEA;IACI,YAAY;IACZ,kBAAkB;IAClB,kBAAkB;IAClB,QAAQ;IACR,SAAS;IACT,iFAAiF;IACjF,gCAAgC;AACpC;AACA;IACI,iBAAiB;IACjB,iBAAiB;AACrB;;AAEA;IACI,eAAe;IACf,gBAAgB;IAChB,eAAe;IACf,aAAa;IACb,6BAA6B;IAC7B,mBAAmB;IACnB,kBAAkB;IAClB,2EAA2E;IAC3E,WAAW;IACX,qBAAqB;IACrB,YAAY;IACZ,YAAY;IACZ,4BAA4B;IAC5B,yBAAyB;IACzB,mBAAmB;AACvB;;AAEA;IACI,yBAAyB;IACzB,uCAAuC;IACvC,eAAe;IACf,gBAAgB;IAChB,gBAAgB;IAChB,qBAAqB;IACrB,oCAAoC;IACpC,yBAAyB;AAC7B;;AAEA;IACI,4BAA4B;IAC5B,eAAe;IACf,MAAM;IACN,QAAQ;IACR,WAAW;IACX,oCAAoC;AACxC;;AAEA;IACI,kBAAkB;IAClB,WAAW;IACX,YAAY;IACZ,QAAQ;IACR,UAAU;AACd;;AAEA;IACI,eAAe;IACf,aAAa;IACb,sBAAsB;IACtB,YAAY;IACZ,yBAAyB;IACzB,WAAW;IACX,YAAY;IACZ,iBAAiB;IACjB,kBAAkB;IAClB,2CAA2C;IAC3C,uDAAuD;IACvD,gBAAgB;IAChB,eAAe;IACf,gBAAgB;IAChB,yBAAyB;AAC7B;;AAEA;IACI,YAAY;IACZ,iBAAiB;IACjB,gCAAgC;IAChC,sBAAsB;IACtB,aAAa;IACb,8BAA8B;IAC9B,mBAAmB;IACnB,cAAc;AAClB;;AAEA;IACI,YAAY;IACZ,YAAY;AAChB;;AAEA;IACI,uCAAuC;IACvC,gBAAgB;IAChB,gBAAgB;IAChB,eAAe;IACf,qBAAqB;IACrB,yBAAyB;AAC7B;;AAEA;IACI,gBAAgB;IAChB,kBAAkB;IAClB,YAAY;IACZ,UAAU;IACV,UAAU;IACV,WAAW;IACX,kBAAkB;IAClB,uBAAuB;IACvB,aAAa;IACb,iBAAiB;IACjB,eAAe;;IAEf;QACI,4BAA4B;QAC5B,qCAAqC;IACzC;;IAEA;QACI,qCAAqC;IACzC;;IAEA;;QAEI,kBAAkB;QAClB,QAAQ;QACR,0BAA0B;QAC1B,cAAc;QACd,WAAW;QACX,sBAAsB;QACtB,wBAAwB;QACxB,wBAAwB;QACxB,WAAW;IACf;;IAEA;QACI,yBAAyB;IAC7B;AACJ;;AAEA;IACI,yBAAyB;IACzB,sBAAsB;IACtB,iBAAiB;IACjB,mCAAmC;AACvC;;AAEA;IACI,yBAAyB;IACzB,sBAAsB;IACtB,iBAAiB;IACjB,uCAAuC;AAC3C;;AAEA;IACI,aAAa;AACjB;;AAEA;IACI,sBAAsB;IACtB,uBAAuB;IACvB,iBAAiB;IACjB,sBAAsB;AAC1B;;AAEA;IACI,aAAa;AACjB;;AAEA;IACI,uBAAuB;IACvB,uBAAuB;IACvB,4BAA4B;IAC5B,eAAe;AACnB;;AAEA;IACI,eAAe;IACf,uBAAuB;IACvB,gBAAgB;AACpB;;AAEA;IACI,sBAAsB;IACtB,uBAAuB;IACvB,iBAAiB;IACjB,wBAAwB;AAC5B;;AAEA;IACI,2BAA2B;IAC3B,mCAAmC;IACnC,4CAA4C;IAC5C,oDAAoD;IACpD,sBAAsB;AAC1B;;AAEA;IACI,2BAA2B;IAC3B,mCAAmC;IACnC,2CAA2C;IAC3C,mDAAmD;IACnD,uBAAuB;AAC3B;;AAEA;IACI;QACI,2BAA2B;QAC3B,mCAAmC;QACnC,4CAA4C;QAC5C,oDAAoD;QACpD,sBAAsB;IAC1B;;IAEA;QACI,2BAA2B;QAC3B,mCAAmC;QACnC,8CAA8C;QAC9C,oDAAoD;QACpD,uBAAuB;IAC3B;AACJ;;AAEA;IACI;QACI,yBAAyB;IAC7B;AACJ;;AAEA;IACI;QACI,iCAAiC;IACrC;AACJ;;AAEA;IACI;QACI,yBAAyB;IAC7B;AACJ;;AAEA;IACI;QACI,iCAAiC;IACrC;AACJ;;AAEA;IACI;QACI,yBAAyB;IAC7B;;IAEA;QACI,2BAA2B;IAC/B;AACJ;;AAEA;IACI;QACI,iCAAiC;IACrC;;IAEA;QACI,mCAAmC;IACvC;AACJ;;AAEA;IACI;QACI,yBAAyB;IAC7B;;IAEA;QACI,2BAA2B;IAC/B;AACJ;;AAEA;IACI;QACI,iCAAiC;IACrC;;IAEA;QACI,mCAAmC;IACvC;AACJ",sourcesContent:['@import url("https://use.typekit.net/sag8ceb.css");\n\n#tripfusion-loader {\n color: white;\n margin-right: -50%;\n position: absolute;\n top: 50%;\n left: 50%;\n font-family: futura-lt-w01-book, futura-lt-w05-book, Arial, Helvetica, sans-serif;\n transform: translate(-50%, -50%);\n}\n#tripfusion-loader span {\n font-weight: bold;\n font-size: 1.3rem;\n}\n\n#tripfusion-resume-button {\n position: fixed;\n overflow: hidden;\n cursor: pointer;\n display: flex;\n justify-content: space-evenly;\n align-items: center;\n padding: 12px 32px;\n box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.25), 0px 4px 4px rgba(0, 0, 0, 0.1);\n right: 30px;\n z-index: 100000000000;\n bottom: 40px;\n border: none;\n transform: translateX(400px);\n background-color: #092b43;\n border-radius: 23px;\n}\n\n#tripfusion-resume-button span {\n display: block !important;\n font-family: sweet-sans-pro, sans-serif;\n font-size: 1rem;\n font-weight: 700;\n line-height: 1.2;\n letter-spacing: 1.5px;\n text-transform: uppercase !important;\n color: #ffffff !important;\n}\n\n#tripfusion-widget-wrapper {\n background: rgba(0, 0, 0, 0);\n position: fixed;\n top: 0;\n right: 0;\n width: 100%;\n transition: background 0.5s ease-out;\n}\n\n#tripfusion-widget {\n position: absolute;\n width: 100%;\n height: 100%;\n top: 0px;\n right: 0px;\n}\n\n#tripfusion-widget-inner-wrapper {\n position: fixed;\n display: flex;\n flex-direction: column;\n width: 500px;\n height: calc(100% - 40px);\n right: 20px;\n bottom: 20px;\n background: white;\n border-radius: 8px;\n box-shadow: 0 2px 10px 0 rgba(0, 0, 0, 0.2);\n font-family: "Roboto", "Helvetica", "Arial", sans-serif;\n font-weight: 400;\n font-size: 1rem;\n line-height: 1.5;\n letter-spacing: 0.00938em;\n}\n\n#tripfusion-widget-header {\n height: 60px;\n background: white;\n border-bottom: 1px solid #f1f1f1;\n padding: 0 32px 0 32px;\n display: flex;\n justify-content: space-between;\n align-items: center;\n color: #092b43;\n}\n\n#tripfusion-widget-iframe {\n height: 100%;\n border: none;\n}\n\n#tripfusion-widget-header-title {\n font-family: sweet-sans-pro, sans-serif;\n line-height: 1.2;\n font-weight: 700;\n font-size: 1rem;\n letter-spacing: 1.5px;\n text-transform: uppercase;\n}\n\n#tripfusion-widget-close-button {\n overflow: hidden;\n position: relative;\n border: none;\n padding: 0;\n width: 2em;\n height: 2em;\n border-radius: 50%;\n background: transparent;\n font: inherit;\n text-indent: 100%;\n cursor: pointer;\n\n &:focus {\n outline: solid 0 transparent;\n background-color: rgba(0, 0, 0, 0.04);\n }\n\n &:hover {\n background-color: rgba(0, 0, 0, 0.04);\n }\n\n &:before,\n &:after {\n position: absolute;\n top: 25%;\n left: calc(50% - 0.0625em);\n width: 0.125em;\n height: 50%;\n border-radius: 0.125em;\n transform: rotate(45deg);\n background: currentcolor;\n content: "";\n }\n\n &:after {\n transform: rotate(-45deg);\n }\n}\n\n.dismiss-btn-slide-in {\n -webkit-transition: 500ms;\n -moz-transition: 500ms;\n transition: 500ms;\n transform: translateX(0) !important;\n}\n\n.dismiss-btn-slide-out {\n -webkit-transition: 500ms;\n -moz-transition: 500ms;\n transition: 500ms;\n transform: translateX(400px) !important;\n}\n\n.dismiss-btn-slide-out span {\n display: none;\n}\n\n.dismiss-btn-resize-in {\n width: 46px !important;\n height: 46px !important;\n transition: 500ms;\n right: 30px !important;\n}\n\n.dismiss-btn-resize-in span {\n display: none;\n}\n\n.dismiss-btn-resize-in:hover {\n width: 217px !important;\n height: 46px !important;\n transition: all 300ms linear;\n cursor: pointer;\n}\n\n.dismiss-btn-resize-in:hover span {\n display: inline;\n height: 20px !important;\n overflow: hidden;\n}\n\n.dismiss-btn-resize-out {\n width: 46px !important;\n height: 46px !important;\n transition: 500ms;\n right: -100px !important;\n}\n\n.slide-in {\n transform: translateX(100%);\n -webkit-transform: translateX(100%);\n animation: slide-in 0.8s forwards !important;\n -webkit-animation: slide-in 0.8s forwards !important;\n z-index: 1000000000000;\n}\n\n.slide-out {\n transform: translateX(100%);\n -webkit-transform: translateX(100%);\n animation: slide-out 1s forwards !important;\n -webkit-animation: slide-out 1s forwards !important;\n z-index: -1000000000000;\n}\n\n@media screen and (max-width: 495px) {\n .slide-in {\n transform: translateY(100%);\n -webkit-transform: translateY(100%);\n animation: slide-up 0.8s forwards !important;\n -webkit-animation: slide-up 0.8s forwards !important;\n z-index: 1000000000000;\n }\n\n .slide-out {\n transform: translateY(100%);\n -webkit-transform: translateY(100%);\n animation: slide-down 0.5s forwards !important;\n -webkit-animation: slide-down 1s forwards !important;\n z-index: -1000000000000;\n }\n}\n\n@keyframes slide-in {\n 100% {\n transform: translateX(0%);\n }\n}\n\n@-webkit-keyframes slide-in {\n 100% {\n -webkit-transform: translateX(0%);\n }\n}\n\n@keyframes slide-up {\n 100% {\n transform: translateY(0%);\n }\n}\n\n@-webkit-keyframes slide-up {\n 100% {\n -webkit-transform: translateY(0%);\n }\n}\n\n@keyframes slide-out {\n 0% {\n transform: translateX(0%);\n }\n\n 100% {\n transform: translateX(100%);\n }\n}\n\n@-webkit-keyframes slide-out {\n 0% {\n -webkit-transform: translateX(0%);\n }\n\n 100% {\n -webkit-transform: translateX(100%);\n }\n}\n\n@keyframes slide-down {\n 0% {\n transform: translateY(0%);\n }\n\n 100% {\n transform: translateY(100%);\n }\n}\n\n@-webkit-keyframes slide-down {\n 0% {\n -webkit-transform: translateY(0%);\n }\n\n 100% {\n -webkit-transform: translateY(100%);\n }\n}\n'],sourceRoot:""}]);const s=a},314:n=>{n.exports=function(n){var t=[];return t.toString=function(){return this.map((function(t){var e="",r=void 0!==t[5];return t[4]&&(e+="@supports (".concat(t[4],") {")),t[2]&&(e+="@media ".concat(t[2]," {")),r&&(e+="@layer".concat(t[5].length>0?" ".concat(t[5]):""," {")),e+=n(t),r&&(e+="}"),t[2]&&(e+="}"),t[4]&&(e+="}"),e})).join("")},t.i=function(n,e,r,i,o){"string"==typeof n&&(n=[[null,n,void 0]]);var a={};if(r)for(var s=0;s<this.length;s++){var A=this[s][0];null!=A&&(a[A]=!0)}for(var d=0;d<n.length;d++){var l=[].concat(n[d]);r&&a[l[0]]||(void 0!==o&&(void 0===l[5]||(l[1]="@layer".concat(l[5].length>0?" ".concat(l[5]):""," {").concat(l[1],"}")),l[5]=o),e&&(l[2]?(l[1]="@media ".concat(l[2]," {").concat(l[1],"}"),l[2]=e):l[2]=e),i&&(l[4]?(l[1]="@supports (".concat(l[4],") {").concat(l[1],"}"),l[4]=i):l[4]="".concat(i)),t.push(l))}},t}},354:n=>{n.exports=function(n){var t=n[1],e=n[3];if(!e)return t;if("function"==typeof btoa){var r=btoa(unescape(encodeURIComponent(JSON.stringify(e)))),i="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(r),o="/*# ".concat(i," */");return[t].concat([o]).join("\n")}return[t].join("\n")}},72:n=>{var t=[];function e(n){for(var e=-1,r=0;r<t.length;r++)if(t[r].identifier===n){e=r;break}return e}function r(n,r){for(var o={},a=[],s=0;s<n.length;s++){var A=n[s],d=r.base?A[0]+r.base:A[0],l=o[d]||0,c="".concat(d," ").concat(l);o[d]=l+1;var u=e(c),p={css:A[1],media:A[2],sourceMap:A[3],supports:A[4],layer:A[5]};if(-1!==u)t[u].references++,t[u].updater(p);else{var f=i(p,r);r.byIndex=s,t.splice(s,0,{identifier:c,updater:f,references:1})}a.push(c)}return a}function i(n,t){var e=t.domAPI(t);return e.update(n),function(t){if(t){if(t.css===n.css&&t.media===n.media&&t.sourceMap===n.sourceMap&&t.supports===n.supports&&t.layer===n.layer)return;e.update(n=t)}else e.remove()}}n.exports=function(n,i){var o=r(n=n||[],i=i||{});return function(n){n=n||[];for(var a=0;a<o.length;a++){var s=e(o[a]);t[s].references--}for(var A=r(n,i),d=0;d<o.length;d++){var l=e(o[d]);0===t[l].references&&(t[l].updater(),t.splice(l,1))}o=A}}},659:n=>{var t={};n.exports=function(n,e){var r=function(n){if(void 0===t[n]){var e=document.querySelector(n);if(window.HTMLIFrameElement&&e instanceof window.HTMLIFrameElement)try{e=e.contentDocument.head}catch(n){e=null}t[n]=e}return t[n]}(n);if(!r)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");r.appendChild(e)}},540:n=>{n.exports=function(n){var t=document.createElement("style");return n.setAttributes(t,n.attributes),n.insert(t,n.options),t}},56:(n,t,e)=>{n.exports=function(n){var t=e.nc;t&&n.setAttribute("nonce",t)}},825:n=>{n.exports=function(n){if("undefined"==typeof document)return{update:function(){},remove:function(){}};var t=n.insertStyleElement(n);return{update:function(e){!function(n,t,e){var r="";e.supports&&(r+="@supports (".concat(e.supports,") {")),e.media&&(r+="@media ".concat(e.media," {"));var i=void 0!==e.layer;i&&(r+="@layer".concat(e.layer.length>0?" ".concat(e.layer):""," {")),r+=e.css,i&&(r+="}"),e.media&&(r+="}"),e.supports&&(r+="}");var o=e.sourceMap;o&&"undefined"!=typeof btoa&&(r+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(o))))," */")),t.styleTagTransform(r,n,t.options)}(t,n,e)},remove:function(){!function(n){if(null===n.parentNode)return!1;n.parentNode.removeChild(n)}(t)}}}},113:n=>{n.exports=function(n,t){if(t.styleSheet)t.styleSheet.cssText=n;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(n))}}}},t={};function e(r){var i=t[r];if(void 0!==i)return i.exports;var o=t[r]={id:r,exports:{}};return n[r](o,o.exports,e),o.exports}e.n=n=>{var t=n&&n.__esModule?()=>n.default:()=>n;return e.d(t,{a:t}),t},e.d=(n,t)=>{for(var r in t)e.o(t,r)&&!e.o(n,r)&&Object.defineProperty(n,r,{enumerable:!0,get:t[r]})},e.o=(n,t)=>Object.prototype.hasOwnProperty.call(n,t),e.nc=void 0;var r="https://develop.bookings.vacayou.com/",i="tripfusion-widget",o="tripfusion-widget-inner-wrapper",a="tripfusion-widget-wrapper",s="tripfusion-widget-iframe",A="tripfusion-resume-button",d="tripfusion-loader",l="normal",c="append",u=function(){return u=Object.assign||function(n){for(var t,e=1,r=arguments.length;e<r;e++)for(var i in t=arguments[e])Object.prototype.hasOwnProperty.call(t,i)&&(n[i]=t[i]);return n},u.apply(this,arguments)};function p(n){var t={tripfusion:"tripfusion",client:"client",propertyid:"propertyId",mode:"mode",offerid:"offerId",bookingid:"bookingId",checkin:"checkIn",checkout:"checkOut",adults:"adults",children:"children"};return Array.from(n.entries()).reduce((function(n,e){var r,i=e[0],o=e[1];return u(u({},n),((r={})[t[i.toLowerCase()]]=o,r))}),{})}function f(n){return t=this,e=arguments,o=function(n,t){var e,i,o;return void 0===t&&(t="error"),function(n,t){var e,r,i,o={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]},a=Object.create(("function"==typeof Iterator?Iterator:Object).prototype);return a.next=s(0),a.throw=s(1),a.return=s(2),"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function s(s){return function(A){return function(s){if(e)throw new TypeError("Generator is already executing.");for(;a&&(a=0,s[0]&&(o=0)),o;)try{if(e=1,r&&(i=2&s[0]?r.return:s[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,s[1])).done)return i;switch(r=0,i&&(s=[2&s[0],i.value]),s[0]){case 0:case 1:i=s;break;case 4:return o.label++,{value:s[1],done:!1};case 5:o.label++,r=s[1],s=[0];continue;case 7:s=o.ops.pop(),o.trys.pop();continue;default:if(!((i=(i=o.trys).length>0&&i[i.length-1])||6!==s[0]&&2!==s[0])){o=0;continue}if(3===s[0]&&(!i||s[1]>i[0]&&s[1]<i[3])){o.label=s[1];break}if(6===s[0]&&o.label<i[1]){o.label=i[1],i=s;break}if(i&&o.label<i[2]){o.label=i[2],o.ops.push(s);break}i[2]&&o.ops.pop(),o.trys.pop();continue}s=t.call(n,o)}catch(n){s=[6,n],r=0}finally{e=i=0}if(5&s[0])throw s[1];return{value:s[0]?s[1]:void 0,done:!0}}([s,A])}}}(this,(function(a){return e="".concat(r,"api/vacayou/log"),i={message:n,page:window.location.href},o={"content-type":"application/json"},[2,fetch(e,{method:"POST",body:JSON.stringify({type:t,payload:i}),headers:o}).then((function(n){return n.json()})).catch((function(n){console.log("Tripfusion: failed to log message: ".concat(n))}))]}))},new((i=void 0)||(i=Promise))((function(n,r){function a(n){try{A(o.next(n))}catch(n){r(n)}}function s(n){try{A(o.throw(n))}catch(n){r(n)}}function A(t){var e;t.done?n(t.value):(e=t.value,e instanceof i?e:new i((function(n){n(e)}))).then(a,s)}A((o=o.apply(t,e||[])).next())}));var t,e,i,o}function m(){try{var n=document.getElementById(i),t=document.getElementById(a),e=document.getElementById(A);n&&t&&e&&(document.body.style.overflow="initial",n.setAttribute("class","slide-out"),t.style.background="rgba(0, 0, 0, 0)",n.style.display="none",t.style.zIndex="".concat(-1e11),e.setAttribute("class","dismiss-btn-slide-in"),e.focus())}catch(n){f("Widget: Error closing widget: ".concat(n)),console.error("Tripfusion: Error closing widget: ",n)}}function C(){document.body.style.overflow="hidden"}var I=e(72),g=e.n(I),B=e(825),b=e.n(B),h=e(659),y=e.n(h),w=e(56),v=e.n(w),k=e(540),x=e.n(k),E=e(113),z=e.n(E),Q=e(365),Y={};Y.styleTagTransform=z(),Y.setAttributes=v(),Y.insert=y().bind(null,"head"),Y.domAPI=b(),Y.insertStyleElement=x(),g()(Q.A,Y),Q.A&&Q.A.locals&&Q.A.locals;var j=function(){return j=Object.assign||function(n){for(var t,e=1,r=arguments.length;e<r;e++)for(var i in t=arguments[e])Object.prototype.hasOwnProperty.call(t,i)&&(n[i]=t[i]);return n},j.apply(this,arguments)},T=null,X=null,O=null,S=!1;function D(n){var t,e;try{var r=n.target;"A"!==r.tagName&&"A"===(null===(t=r.parentNode)||void 0===t?void 0:t.tagName)&&(r.href=r.parentNode.href);var i=r.href||"";if(!i.includes("?"))return;var o=p(new URLSearchParams(i.substring(i.indexOf("?"))));"true"===o.tripfusion&&(n.preventDefault(),L({config:{client:null!==(e=o.client)&&void 0!==e?e:T,propertyId:o.propertyId?+o.propertyId:X,mode:o.mode===c?c:l,bookingId:(null==o?void 0:o.bookingId)&&(null==o?void 0:o.mode)===c?+o.bookingId:null},bookingData:{offerId:o.offerId?+o.offerId:void 0,checkIn:o.checkIn,checkOut:o.checkOut,adults:o.adults?+o.adults:void 0,children:o.children?o.children.split(",").map((function(n){return+n})):void 0}}))}catch(n){f("Widget: Error in link click handler: ".concat(n)),console.error("Tripfusion: Error in link click handler: ",n)}}function W(){setTimeout((function(){var n,t=p(new URLSearchParams(window.location.search));"true"===t.tripfusion&&(T||t.client)&&(X||t.propertyId)&&L({config:{client:null!==(n=t.client)&&void 0!==n?n:T,propertyId:t.propertyId?+t.propertyId:X,mode:t.mode===c?c:l,bookingId:(null==t?void 0:t.bookingId)&&(null==t?void 0:t.mode)===c?+t.bookingId:null},bookingData:{offerId:t.offerId?+t.offerId:void 0,checkIn:t.checkIn,checkOut:t.checkOut,adults:t.adults?+t.adults:void 0,children:t.children?t.children.split(",").map((function(n){return+n})):void 0}})}),500)}function L(n){var t,e,l,u,p;try{var m=document.getElementById(i),I=document.getElementById(a),g=document.getElementById(A),B=g?g.getAttribute("class"):null;(null==B?void 0:B.includes("dismiss-btn"))&&g.setAttribute("class","dismiss-btn-slide-out");var b=j(j({},n),{config:j(j({},null==n?void 0:n.config),{client:null!==(e=null===(t=null==n?void 0:n.config)||void 0===t?void 0:t.client)&&void 0!==e?e:T,propertyId:null!==(u=null===(l=null==n?void 0:n.config)||void 0===l?void 0:l.propertyId)&&void 0!==u?u:X})});if(JSON.stringify(O)!==JSON.stringify(b)){S=!1,function(){var n=document.getElementById(a);if(n){var t=document.createElement("div");t.id=d,t.innerHTML="Loading <span>TripFusion</span>",n.appendChild(t),n.style.zIndex="".concat(1e11),n.style.height="100%",n.style.background="rgba(0, 0, 0, .74)",C()}}(),null===(p=document.getElementById(s))||void 0===p||p.remove(),function(n){var t=n.config,e=n.bookingData;try{var i=document.getElementById(o);if(i){var a=document.createElement("iframe"),A="".concat(r).concat(t.client,"/").concat(t.propertyId);if(t.mode===c&&t.bookingId&&(A+="/booking/".concat(t.bookingId,"/append")),e){var d=Object.entries(e).filter((function(n){return n[0],!!n[1]})).map((function(n){var t=n[0],e=n[1];return"".concat(t,"=").concat(e).toLowerCase()})).join("&");d&&(A+="?".concat(d))}a.setAttribute("src",A),a.id=s,i.appendChild(a)}}catch(n){f("Widget: Error injecting iframe: ".concat(n)),console.error("Tripfusion: Error injecting iframe: ",n)}}(b),O=b;var h=document.getElementById(A),y=null==h?void 0:h.querySelector("span");y&&(y.innerHTML="Complete your booking")}var w=setInterval((function(){var n;if(S){null===(n=document.getElementById(d))||void 0===n||n.remove(),clearInterval(w),"none"===m.style.display&&(Object.assign(I.style,{zIndex:0xe8d4a5100b,height:"100%",background:"rgba(0, 0, 0, .4)"}),C(),setTimeout((function(){m.style.display="block",m.setAttribute("class","slide-in")}),20),setTimeout((function(){var n=document.getElementById(s);null==n||n.focus()}),250));var t=document.getElementById(A);null==t||t.addEventListener("click",(function(){try{var n=t.getAttribute("class");(null==n?void 0:n.includes("dismiss-btn"))&&t.setAttribute("class","dismiss-btn-slide-out"),Object.assign(I.style,{zIndex:0xe8d4a5100b,height:"100%",background:"rgba(0, 0, 0, .5)"}),document.body.style.overflow="hidden",m.style.display="block",m.setAttribute("class","slide-in"),setTimeout((function(){var n=document.getElementById(s);null==n||n.focus()}),500)}catch(n){f("Widget: resume button error: ".concat(n)),console.error("Tripfusion: resume button error",n)}}))}}),100)}catch(n){f("Widget: failed to book: ".concat(n)),console.error("Tripfusion: failed to book: ".concat(n))}}!function(){var n,t;try{var e=document.getElementById("tripfusion-sdk").getAttribute("src"),r=p(new URLSearchParams(e.substring(e.indexOf("?"))));if(T=null!==(n=r.client)&&void 0!==n?n:null,X=r.propertyId?+r.propertyId:null,!T||!X)throw new Error("(!) Tripfusion: client and propertyId are required.");t=setInterval((function(){"complete"===document.readyState&&(function(){try{var n=document.createElement("div"),t=document.createElement("div"),e=document.createElement("div"),r=document.createElement("div"),s=document.createElement("span"),d=document.createElement("button"),l=document.createElement("button"),c=document.createElement("span");l.id=A,c.innerHTML="Complete your booking",l.appendChild(c),n.id=i,n.style.display="none",t.id=a,e.id=o,r.id="tripfusion-widget-header",d.id="tripfusion-widget-close-button",d.addEventListener("click",m),s.id="tripfusion-widget-header-title",s.innerHTML="Booking",t.appendChild(n),n.appendChild(e),e.appendChild(r),r.appendChild(s),r.appendChild(d),document.body.appendChild(t),document.body.appendChild(l)}catch(n){f("Widget: Error injecting resume button: ".concat(n)),console.error("Tripfusion: Error injecting resume button: ",n)}}(),document.querySelectorAll("a").forEach((function(n){n.addEventListener("click",D)})),clearInterval(t))}),100),"complete"===document.readyState?W():window.addEventListener("load",W),Object.assign(window,{book:L,closeWidget:m}),window.onmessage=function(n){switch(n.data){case"tripfusion-widget-ready":S=!0;break;case"tripfusion-booking-completed":var t=document.getElementById(A),e=null==t?void 0:t.querySelector("span");e&&(e.innerHTML="Booking completed!")}}}catch(n){f("Widget: failed to init Tripfusion JS SDK: ".concat(n)),console.error("Tripfusion: failed to init SDK: ".concat(n))}}()})();
|
|
2
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,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VUFHOUJ4QyxFQUFjM0YsWUFBWXlGLEdBQzFCQSxFQUFPekYsWUFBWXFKLEdBQ25CQSxFQUFtQnJKLFlBQVlzSixHQUMvQkEsRUFBYXRKLFlBQVl1SixHQUN6QkQsRUFBYXRKLFlBQVl3SixHQUN6QmpLLFNBQVN5RixLQUFLaEYsWUFBWTJGLEdBQzFCcEcsU0FBU3lGLEtBQUtoRixZQUFZNEYsRUFDOUIsQ0FBRSxNQUFPUCxHQUNMaEIsRUFBTyxpREFBMENnQixJQUNqREMsUUFBUUQsTUFBTSw4Q0FBK0NBLEVBQ2pFLENBQ0osQ0UwQllvRSxHQWpGUmxLLFNBQVNtSyxpQkFBaUIsS0FBS0MsU0FBUSxTQUFDQyxHQUNwQ0EsRUFBWVosaUJBQWlCLFFBQVN6QyxFQUMxQyxJQWtGUXVDLGNBQWNJLEdBRXRCLEdBQUcsS0F2Q3lCLGFBQXhCM0osU0FBUzZKLFdBQ1QxQixJQUVBakksT0FBT3VKLGlCQUFpQixPQUFRdEIsR0EySmhDM0YsT0FBT2dILE9BQU90SixPQUFRLENBQUV3SCxLQUFJLEVBQUV6QixZQUFXLElBQ3pDL0YsT0FBT29LLFVBQVksU0FBVWhLLEdBQ3pCLE9BQVFBLEVBQUUzQyxNQUNOLElBQUssMEJBQ0RvSixHQUFnQixFQUNoQixNQUVKLElBQUssK0JBQ0QsSUFBTVYsRUFBZXJHLFNBQVNtRyxlQUFlN0MsR0FDdkMrRixFQUFtQmhELGFBQVksRUFBWkEsRUFBY3BHLGNBQWMsUUFDakRvSixJQUNBQSxFQUFpQlQsVUFBWSxzQkFPN0MsQ0FDSixDQUFFLE1BQU85QyxHQUNMaEIsRUFBTyxvREFBNkNnQixJQUNwREMsUUFBUUQsTUFBTSwwQ0FBbUNBLEdBQ3JELENBQ0osQ0FFQXlFLEUiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9AdmFjYXlvdS90cmlwZnVzaW9uLWpzLXNkay8uL3NyYy9zdHlsZXMuY3NzIiwid2VicGFjazovL0B2YWNheW91L3RyaXBmdXNpb24tanMtc2RrLy4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qcyIsIndlYnBhY2s6Ly9AdmFjYXlvdS90cmlwZnVzaW9uLWpzLXNkay8uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9zb3VyY2VNYXBzLmpzIiwid2VicGFjazovL0B2YWNheW91L3RyaXBmdXNpb24tanMtc2RrLy4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzIiwid2VicGFjazovL0B2YWNheW91L3RyaXBmdXNpb24tanMtc2RrLy4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0QnlTZWxlY3Rvci5qcyIsIndlYnBhY2s6Ly9AdmFjYXlvdS90cmlwZnVzaW9uLWpzLXNkay8uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydFN0eWxlRWxlbWVudC5qcyIsIndlYnBhY2s6Ly9AdmFjYXlvdS90cmlwZnVzaW9uLWpzLXNkay8uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3NldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcy5qcyIsIndlYnBhY2s6Ly9AdmFjYXlvdS90cmlwZnVzaW9uLWpzLXNkay8uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlRG9tQVBJLmpzIiwid2VicGFjazovL0B2YWNheW91L3RyaXBmdXNpb24tanMtc2RrLy4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVUYWdUcmFuc2Zvcm0uanMiLCJ3ZWJwYWNrOi8vQHZhY2F5b3UvdHJpcGZ1c2lvbi1qcy1zZGsvd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vQHZhY2F5b3UvdHJpcGZ1c2lvbi1qcy1zZGsvd2VicGFjay9ydW50aW1lL2NvbXBhdCBnZXQgZGVmYXVsdCBleHBvcnQiLCJ3ZWJwYWNrOi8vQHZhY2F5b3UvdHJpcGZ1c2lvbi1qcy1zZGsvd2VicGFjay9ydW50aW1lL2RlZmluZSBwcm9wZXJ0eSBnZXR0ZXJzIiwid2VicGFjazovL0B2YWNheW91L3RyaXBmdXNpb24tanMtc2RrL3dlYnBhY2svcnVudGltZS9oYXNPd25Qcm9wZXJ0eSBzaG9ydGhhbmQiLCJ3ZWJwYWNrOi8vQHZhY2F5b3UvdHJpcGZ1c2lvbi1qcy1zZGsvd2VicGFjay9ydW50aW1lL25vbmNlIiwid2VicGFjazovL0B2YWNheW91L3RyaXBmdXNpb24tanMtc2RrLy4vc3JjL2NvbnN0LnRzIiwid2VicGFjazovL0B2YWNheW91L3RyaXBmdXNpb24tanMtc2RrLy4vc3JjL3V0aWxzLnRzIiwid2VicGFjazovL0B2YWNheW91L3RyaXBmdXNpb24tanMtc2RrLy4vc3JjL2RvbS50cyIsIndlYnBhY2s6Ly9AdmFjYXlvdS90cmlwZnVzaW9uLWpzLXNkay8uL3NyYy9zdHlsZXMuY3NzPzQ0YjIiLCJ3ZWJwYWNrOi8vQHZhY2F5b3UvdHJpcGZ1c2lvbi1qcy1zZGsvLi9zcmMvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9zb3VyY2VNYXBzLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiQGltcG9ydCB1cmwoaHR0cHM6Ly91c2UudHlwZWtpdC5uZXQvc2FnOGNlYi5jc3MpO1wiXSk7XG4vLyBNb2R1bGVcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgYCN0cmlwZnVzaW9uLWxvYWRlciB7XG4gICAgY29sb3I6IHdoaXRlO1xuICAgIG1hcmdpbi1yaWdodDogLTUwJTtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiA1MCU7XG4gICAgbGVmdDogNTAlO1xuICAgIGZvbnQtZmFtaWx5OiBmdXR1cmEtbHQtdzAxLWJvb2ssIGZ1dHVyYS1sdC13MDUtYm9vaywgQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcbn1cbiN0cmlwZnVzaW9uLWxvYWRlciBzcGFuIHtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICBmb250LXNpemU6IDEuM3JlbTtcbn1cblxuI3RyaXBmdXNpb24tcmVzdW1lLWJ1dHRvbiB7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1ldmVubHk7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBwYWRkaW5nOiAxMnB4IDMycHg7XG4gICAgYm94LXNoYWRvdzogMHB4IDBweCAycHggcmdiYSgwLCAwLCAwLCAwLjI1KSwgMHB4IDRweCA0cHggcmdiYSgwLCAwLCAwLCAwLjEpO1xuICAgIHJpZ2h0OiAzMHB4O1xuICAgIHotaW5kZXg6IDEwMDAwMDAwMDAwMDtcbiAgICBib3R0b206IDQwcHg7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCg0MDBweCk7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzA5MmI0MztcbiAgICBib3JkZXItcmFkaXVzOiAyM3B4O1xufVxuXG4jdHJpcGZ1c2lvbi1yZXN1bWUtYnV0dG9uIHNwYW4ge1xuICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7XG4gICAgZm9udC1mYW1pbHk6IHN3ZWV0LXNhbnMtcHJvLCBzYW5zLXNlcmlmO1xuICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICBmb250LXdlaWdodDogNzAwO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjI7XG4gICAgbGV0dGVyLXNwYWNpbmc6IDEuNXB4O1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2UgIWltcG9ydGFudDtcbiAgICBjb2xvcjogI2ZmZmZmZiAhaW1wb3J0YW50O1xufVxuXG4jdHJpcGZ1c2lvbi13aWRnZXQtd3JhcHBlciB7XG4gICAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwKTtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgdG9wOiAwO1xuICAgIHJpZ2h0OiAwO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQgMC41cyBlYXNlLW91dDtcbn1cblxuI3RyaXBmdXNpb24td2lkZ2V0IHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHRvcDogMHB4O1xuICAgIHJpZ2h0OiAwcHg7XG59XG5cbiN0cmlwZnVzaW9uLXdpZGdldC1pbm5lci13cmFwcGVyIHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIHdpZHRoOiA1MDBweDtcbiAgICBoZWlnaHQ6IGNhbGMoMTAwJSAtIDQwcHgpO1xuICAgIHJpZ2h0OiAyMHB4O1xuICAgIGJvdHRvbTogMjBweDtcbiAgICBiYWNrZ3JvdW5kOiB3aGl0ZTtcbiAgICBib3JkZXItcmFkaXVzOiA4cHg7XG4gICAgYm94LXNoYWRvdzogMCAycHggMTBweCAwIHJnYmEoMCwgMCwgMCwgMC4yKTtcbiAgICBmb250LWZhbWlseTogXCJSb2JvdG9cIiwgXCJIZWx2ZXRpY2FcIiwgXCJBcmlhbFwiLCBzYW5zLXNlcmlmO1xuICAgIGZvbnQtd2VpZ2h0OiA0MDA7XG4gICAgZm9udC1zaXplOiAxcmVtO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjU7XG4gICAgbGV0dGVyLXNwYWNpbmc6IDAuMDA5MzhlbTtcbn1cblxuI3RyaXBmdXNpb24td2lkZ2V0LWhlYWRlciB7XG4gICAgaGVpZ2h0OiA2MHB4O1xuICAgIGJhY2tncm91bmQ6IHdoaXRlO1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZjFmMWYxO1xuICAgIHBhZGRpbmc6IDAgMzJweCAwIDMycHg7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBjb2xvcjogIzA5MmI0Mztcbn1cblxuI3RyaXBmdXNpb24td2lkZ2V0LWlmcmFtZSB7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIGJvcmRlcjogbm9uZTtcbn1cblxuI3RyaXBmdXNpb24td2lkZ2V0LWhlYWRlci10aXRsZSB7XG4gICAgZm9udC1mYW1pbHk6IHN3ZWV0LXNhbnMtcHJvLCBzYW5zLXNlcmlmO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjI7XG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICBmb250LXNpemU6IDFyZW07XG4gICAgbGV0dGVyLXNwYWNpbmc6IDEuNXB4O1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG59XG5cbiN0cmlwZnVzaW9uLXdpZGdldC1jbG9zZS1idXR0b24ge1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBwYWRkaW5nOiAwO1xuICAgIHdpZHRoOiAyZW07XG4gICAgaGVpZ2h0OiAyZW07XG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgIGZvbnQ6IGluaGVyaXQ7XG4gICAgdGV4dC1pbmRlbnQ6IDEwMCU7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuXG4gICAgJjpmb2N1cyB7XG4gICAgICAgIG91dGxpbmU6IHNvbGlkIDAgdHJhbnNwYXJlbnQ7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4wNCk7XG4gICAgfVxuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4wNCk7XG4gICAgfVxuXG4gICAgJjpiZWZvcmUsXG4gICAgJjphZnRlciB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiAyNSU7XG4gICAgICAgIGxlZnQ6IGNhbGMoNTAlIC0gMC4wNjI1ZW0pO1xuICAgICAgICB3aWR0aDogMC4xMjVlbTtcbiAgICAgICAgaGVpZ2h0OiA1MCU7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDAuMTI1ZW07XG4gICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDQ1ZGVnKTtcbiAgICAgICAgYmFja2dyb3VuZDogY3VycmVudGNvbG9yO1xuICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgIH1cblxuICAgICY6YWZ0ZXIge1xuICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgtNDVkZWcpO1xuICAgIH1cbn1cblxuLmRpc21pc3MtYnRuLXNsaWRlLWluIHtcbiAgICAtd2Via2l0LXRyYW5zaXRpb246IDUwMG1zO1xuICAgIC1tb3otdHJhbnNpdGlvbjogNTAwbXM7XG4gICAgdHJhbnNpdGlvbjogNTAwbXM7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApICFpbXBvcnRhbnQ7XG59XG5cbi5kaXNtaXNzLWJ0bi1zbGlkZS1vdXQge1xuICAgIC13ZWJraXQtdHJhbnNpdGlvbjogNTAwbXM7XG4gICAgLW1vei10cmFuc2l0aW9uOiA1MDBtcztcbiAgICB0cmFuc2l0aW9uOiA1MDBtcztcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoNDAwcHgpICFpbXBvcnRhbnQ7XG59XG5cbi5kaXNtaXNzLWJ0bi1zbGlkZS1vdXQgc3BhbiB7XG4gICAgZGlzcGxheTogbm9uZTtcbn1cblxuLmRpc21pc3MtYnRuLXJlc2l6ZS1pbiB7XG4gICAgd2lkdGg6IDQ2cHggIWltcG9ydGFudDtcbiAgICBoZWlnaHQ6IDQ2cHggIWltcG9ydGFudDtcbiAgICB0cmFuc2l0aW9uOiA1MDBtcztcbiAgICByaWdodDogMzBweCAhaW1wb3J0YW50O1xufVxuXG4uZGlzbWlzcy1idG4tcmVzaXplLWluIHNwYW4ge1xuICAgIGRpc3BsYXk6IG5vbmU7XG59XG5cbi5kaXNtaXNzLWJ0bi1yZXNpemUtaW46aG92ZXIge1xuICAgIHdpZHRoOiAyMTdweCAhaW1wb3J0YW50O1xuICAgIGhlaWdodDogNDZweCAhaW1wb3J0YW50O1xuICAgIHRyYW5zaXRpb246IGFsbCAzMDBtcyBsaW5lYXI7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG4uZGlzbWlzcy1idG4tcmVzaXplLWluOmhvdmVyIHNwYW4ge1xuICAgIGRpc3BsYXk6IGlubGluZTtcbiAgICBoZWlnaHQ6IDIwcHggIWltcG9ydGFudDtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4uZGlzbWlzcy1idG4tcmVzaXplLW91dCB7XG4gICAgd2lkdGg6IDQ2cHggIWltcG9ydGFudDtcbiAgICBoZWlnaHQ6IDQ2cHggIWltcG9ydGFudDtcbiAgICB0cmFuc2l0aW9uOiA1MDBtcztcbiAgICByaWdodDogLTEwMHB4ICFpbXBvcnRhbnQ7XG59XG5cbi5zbGlkZS1pbiB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpO1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpO1xuICAgIGFuaW1hdGlvbjogc2xpZGUtaW4gMC44cyBmb3J3YXJkcyAhaW1wb3J0YW50O1xuICAgIC13ZWJraXQtYW5pbWF0aW9uOiBzbGlkZS1pbiAwLjhzIGZvcndhcmRzICFpbXBvcnRhbnQ7XG4gICAgei1pbmRleDogMTAwMDAwMDAwMDAwMDtcbn1cblxuLnNsaWRlLW91dCB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpO1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpO1xuICAgIGFuaW1hdGlvbjogc2xpZGUtb3V0IDFzIGZvcndhcmRzICFpbXBvcnRhbnQ7XG4gICAgLXdlYmtpdC1hbmltYXRpb246IHNsaWRlLW91dCAxcyBmb3J3YXJkcyAhaW1wb3J0YW50O1xuICAgIHotaW5kZXg6IC0xMDAwMDAwMDAwMDAwO1xufVxuXG5AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA0OTVweCkge1xuICAgIC5zbGlkZS1pbiB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMDAlKTtcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTAwJSk7XG4gICAgICAgIGFuaW1hdGlvbjogc2xpZGUtdXAgMC44cyBmb3J3YXJkcyAhaW1wb3J0YW50O1xuICAgICAgICAtd2Via2l0LWFuaW1hdGlvbjogc2xpZGUtdXAgMC44cyBmb3J3YXJkcyAhaW1wb3J0YW50O1xuICAgICAgICB6LWluZGV4OiAxMDAwMDAwMDAwMDAwO1xuICAgIH1cblxuICAgIC5zbGlkZS1vdXQge1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTAwJSk7XG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMCUpO1xuICAgICAgICBhbmltYXRpb246IHNsaWRlLWRvd24gMC41cyBmb3J3YXJkcyAhaW1wb3J0YW50O1xuICAgICAgICAtd2Via2l0LWFuaW1hdGlvbjogc2xpZGUtZG93biAxcyBmb3J3YXJkcyAhaW1wb3J0YW50O1xuICAgICAgICB6LWluZGV4OiAtMTAwMDAwMDAwMDAwMDtcbiAgICB9XG59XG5cbkBrZXlmcmFtZXMgc2xpZGUtaW4ge1xuICAgIDEwMCUge1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCUpO1xuICAgIH1cbn1cblxuQC13ZWJraXQta2V5ZnJhbWVzIHNsaWRlLWluIHtcbiAgICAxMDAlIHtcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCUpO1xuICAgIH1cbn1cblxuQGtleWZyYW1lcyBzbGlkZS11cCB7XG4gICAgMTAwJSB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwJSk7XG4gICAgfVxufVxuXG5ALXdlYmtpdC1rZXlmcmFtZXMgc2xpZGUtdXAge1xuICAgIDEwMCUge1xuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgwJSk7XG4gICAgfVxufVxuXG5Aa2V5ZnJhbWVzIHNsaWRlLW91dCB7XG4gICAgMCUge1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCUpO1xuICAgIH1cblxuICAgIDEwMCUge1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7XG4gICAgfVxufVxuXG5ALXdlYmtpdC1rZXlmcmFtZXMgc2xpZGUtb3V0IHtcbiAgICAwJSB7XG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDAlKTtcbiAgICB9XG5cbiAgICAxMDAlIHtcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7XG4gICAgfVxufVxuXG5Aa2V5ZnJhbWVzIHNsaWRlLWRvd24ge1xuICAgIDAlIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDAlKTtcbiAgICB9XG5cbiAgICAxMDAlIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMCUpO1xuICAgIH1cbn1cblxuQC13ZWJraXQta2V5ZnJhbWVzIHNsaWRlLWRvd24ge1xuICAgIDAlIHtcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCUpO1xuICAgIH1cblxuICAgIDEwMCUge1xuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMDAlKTtcbiAgICB9XG59XG5gLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uL3NyYy9zdHlsZXMuY3NzXCJdLFwibmFt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QW9EO0lBQ3BELHNCQUFzQjtBQUMxQjs7QUFFQTtJQUNJLDJCQUEyQjtJQUMzQixtQ0FBbUM7SUFDbkMsMkNBQTJDO0lBQzNDLG1EQUFtRDtJQUNuRCx1QkFBdUI7QUFDM0I7O0FBRUE7SUFDSTtRQUNJLDJCQUEyQjtRQUMzQixtQ0FBbUM7UUFDbkMsNENBQTRDO1FBQzVDLG9EQUFvRDtRQUNwRCxzQkFBc0I7SUFDMUI7O0lBRUE7UUFDSSwyQkFBMkI7UUFDM0IsbUNBQW1DO1FBQ25DLDhDQUE4QztRQUM5QyxvREFBb0Q7UUFDcEQsdUJBQXVCO0lBQzNCO0FBQ0o7O0FBRUE7SUFDSTtRQUNJLHlCQUF5QjtJQUM3QjtBQUNKOztBQUVBO0lBQ0k7UUFDSSxpQ0FBaUM7SUFDckM7QUFDSjs7QUFFQTtJQUNJO1FBQ0kseUJBQXlCO0lBQzdCO0FBQ0o7O0FBRUE7SUFDSTtRQUNJLGlDQUFpQztJQUNyQztBQUNKOztBQUVBO0lBQ0k7UUFDSSx5QkFBeUI7SUFDN0I7O0lBRUE7UUFDSSwyQkFBMkI7SUFDL0I7QUFDSjs7QUFFQTtJQUNJO1FBQ0ksaUNBQWlDO0lBQ3JDOztJQUVBO1FBQ0ksbUNBQW1DO0lBQ3ZDO0FBQ0o7O0FBRUE7SUFDSTtRQUNJLHlCQUF5QjtJQUM3Qjs7SUFFQTtRQUNJLDJCQUEyQjtJQUMvQjtBQUNKOztBQUVBO0lBQ0k7UUFDSSxpQ0FBaUM7SUFDckM7O0lBRUE7UUFDSSxtQ0FBbUM7SUFDdkM7QUFDSlwiLFwic291cmNlc0NvbnRlbnRcIjpbXCJAaW1wb3J0IHVybChcXFwiaHR0cHM6Ly91c2UudHlwZWtpdC5uZXQvc2FnOGNlYi5jc3NcXFwiKTtcXG5cXG4jdHJpcGZ1c2lvbi1sb2FkZXIge1xcbiAgICBjb2xvcjogd2hpdGU7XFxuICAgIG1hcmdpbi1yaWdodDogLTUwJTtcXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgICB0b3A6IDUwJTtcXG4gICAgbGVmdDogNTAlO1xcbiAgICBmb250LWZhbWlseTogZnV0dXJhLWx0LXcwMS1ib29rLCBmdXR1cmEtbHQtdzA1LWJvb2ssIEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7XFxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xcbn1cXG4jdHJpcGZ1c2lvbi1sb2FkZXIgc3BhbiB7XFxuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xcbiAgICBmb250LXNpemU6IDEuM3JlbTtcXG59XFxuXFxuI3RyaXBmdXNpb24tcmVzdW1lLWJ1dHRvbiB7XFxuICAgIHBvc2l0aW9uOiBmaXhlZDtcXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gICAgY3Vyc29yOiBwb2ludGVyO1xcbiAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWV2ZW5seTtcXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gICAgcGFkZGluZzogMTJweCAzMnB4O1xcbiAgICBib3gtc2hhZG93OiAwcHggMHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMjUpLCAwcHggNHB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMSk7XFxuICAgIHJpZ2h0OiAzMHB4O1xcbiAgICB6LWluZGV4OiAxMDAwMDAwMDAwMDA7XFxuICAgIGJvdHRvbTogNDBweDtcXG4gICAgYm9yZGVyOiBub25lO1xcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoNDAwcHgpO1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDkyYjQzO1xcbiAgICBib3JkZXItcmFkaXVzOiAyM3B4O1xcbn1cXG5cXG4jdHJpcGZ1c2lvbi1yZXN1bWUtYnV0dG9uIHNwYW4ge1xcbiAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50O1xcbiAgICBmb250LWZhbWlseTogc3dlZXQtc2Fucy1wcm8sIHNhbnMtc2VyaWY7XFxuICAgIGZvbnQtc2l6ZTogMXJlbTtcXG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcXG4gICAgbGluZS1oZWlnaHQ6IDEuMjtcXG4gICAgbGV0dGVyLXNwYWNpbmc6IDEuNXB4O1xcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlICFpbXBvcnRhbnQ7XFxuICAgIGNvbG9yOiAjZmZmZmZmICFpbXBvcnRhbnQ7XFxufVxcblxcbiN0cmlwZnVzaW9uLXdpZGdldC13cmFwcGVyIHtcXG4gICAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwKTtcXG4gICAgcG9zaXRpb246IGZpeGVkO1xcbiAgICB0b3A6IDA7XFxuICAgIHJpZ2h0OiAwO1xcbiAgICB3aWR0aDogMTAwJTtcXG4gICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAwLjVzIGVhc2Utb3V0O1xcbn1cXG5cXG4jdHJpcGZ1c2lvbi13aWRnZXQge1xcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICAgIHdpZHRoOiAxMDAlO1xcbiAgICBoZWlnaHQ6IDEwMCU7XFxuICAgIHRvcDogMHB4O1xcbiAgICByaWdodDogMHB4O1xcbn1cXG5cXG4jdHJpcGZ1c2lvbi13aWRnZXQtaW5uZXItd3JhcHBlciB7XFxuICAgIHBvc2l0aW9uOiBmaXhlZDtcXG4gICAgZGlzcGxheTogZmxleDtcXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcXG4gICAgd2lkdGg6IDUwMHB4O1xcbiAgICBoZWlnaHQ6IGNhbGMoMTAwJSAtIDQwcHgpO1xcbiAgICByaWdodDogMjBweDtcXG4gICAgYm90dG9tOiAyMHB4O1xcbiAgICBiYWNrZ3JvdW5kOiB3aGl0ZTtcXG4gICAgYm9yZGVyLXJhZGl1czogOHB4O1xcbiAgICBib3gtc2hhZG93OiAwIDJweCAxMHB4IDAgcmdiYSgwLCAwLCAwLCAwLjIpO1xcbiAgICBmb250LWZhbWlseTogXFxcIlJvYm90b1xcXCIsIFxcXCJIZWx2ZXRpY2FcXFwiLCBcXFwiQXJpYWxcXFwiLCBzYW5zLXNlcmlmO1xcbiAgICBmb250LXdlaWdodDogNDAwO1xcbiAgICBmb250LXNpemU6IDFyZW07XFxuICAgIGxpbmUtaGVpZ2h0OiAxLjU7XFxuICAgIGxldHRlci1zcGFjaW5nOiAwLjAwOTM4ZW07XFxufVxcblxcbiN0cmlwZnVzaW9uLXdpZGdldC1oZWFkZXIge1xcbiAgICBoZWlnaHQ6IDYwcHg7XFxuICAgIGJhY2tncm91bmQ6IHdoaXRlO1xcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2YxZjFmMTtcXG4gICAgcGFkZGluZzogMCAzMnB4IDAgMzJweDtcXG4gICAgZGlzcGxheTogZmxleDtcXG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgICBjb2xvcjogIzA5MmI0MztcXG59XFxuXFxuI3RyaXBmdXNpb24td2lkZ2V0LWlmcmFtZSB7XFxuICAgIGhlaWdodDogMTAwJTtcXG4gICAgYm9yZGVyOiBub25lO1xcbn1cXG5cXG4jdHJpcGZ1c2lvbi13aWRnZXQtaGVhZGVyLXRpdGxlIHtcXG4gICAgZm9udC1mYW1pbHk6IHN3ZWV0LXNhbnMtcHJvLCBzYW5zLXNlcmlmO1xcbiAgICBsaW5lLWhlaWdodDogMS4yO1xcbiAgICBmb250LXdlaWdodDogNzAwO1xcbiAgICBmb250LXNpemU6IDFyZW07XFxuICAgIGxldHRlci1zcGFjaW5nOiAxLjVweDtcXG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcXG59XFxuXFxuI3RyaXBmdXNpb24td2lkZ2V0LWNsb3NlLWJ1dHRvbiB7XFxuICAgIG92ZXJmbG93OiBoaWRkZW47XFxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gICAgYm9yZGVyOiBub25lO1xcbiAgICBwYWRkaW5nOiAwO1xcbiAgICB3aWR0aDogMmVtO1xcbiAgICBoZWlnaHQ6IDJlbTtcXG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcXG4gICAgZm9udDogaW5oZXJpdDtcXG4gICAgdGV4dC1pbmRlbnQ6IDEwMCU7XFxuICAgIGN1cnNvcjogcG9pbnRlcjtcXG5cXG4gICAgJjpmb2N1cyB7XFxuICAgICAgICBvdXRsaW5lOiBzb2xpZCAwIHRyYW5zcGFyZW50O1xcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjA0KTtcXG4gICAgfVxcblxcbiAgICAmOmhvdmVyIHtcXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4wNCk7XFxuICAgIH1cXG5cXG4gICAgJjpiZWZvcmUsXFxuICAgICY6YWZ0ZXIge1xcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgICAgICAgdG9wOiAyNSU7XFxuICAgICAgICBsZWZ0OiBjYWxjKDUwJSAtIDAuMDYyNWVtKTtcXG4gICAgICAgIHdpZHRoOiAwLjEyNWVtO1xcbiAgICAgICAgaGVpZ2h0OiA1MCU7XFxuICAgICAgICBib3JkZXItcmFkaXVzOiAwLjEyNWVtO1xcbiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpO1xcbiAgICAgICAgYmFja2dyb3VuZDogY3VycmVudGNvbG9yO1xcbiAgICAgICAgY29udGVudDogXFxcIlxcXCI7XFxuICAgIH1cXG5cXG4gICAgJjphZnRlciB7XFxuICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgtNDVkZWcpO1xcbiAgICB9XFxufVxcblxcbi5kaXNtaXNzLWJ0bi1zbGlkZS1pbiB7XFxuICAgIC13ZWJraXQtdHJhbnNpdGlvbjogNTAwbXM7XFxuICAgIC1tb3otdHJhbnNpdGlvbjogNTAwbXM7XFxuICAgIHRyYW5zaXRpb246IDUwMG1zO1xcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCkgIWltcG9ydGFudDtcXG59XFxuXFxuLmRpc21pc3MtYnRuLXNsaWRlLW91dCB7XFxuICAgIC13ZWJraXQtdHJhbnNpdGlvbjogNTAwbXM7XFxuICAgIC1tb3otdHJhbnNpdGlvbjogNTAwbXM7XFxuICAgIHRyYW5zaXRpb246IDUwMG1zO1xcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoNDAwcHgpICFpbXBvcnRhbnQ7XFxufVxcblxcbi5kaXNtaXNzLWJ0bi1zbGlkZS1vdXQgc3BhbiB7XFxuICAgIGRpc3BsYXk6IG5vbmU7XFxufVxcblxcbi5kaXNtaXNzLWJ0bi1yZXNpemUtaW4ge1xcbiAgICB3aWR0aDogNDZweCAhaW1wb3J0YW50O1xcbiAgICBoZWlnaHQ6IDQ2cHggIWltcG9ydGFudDtcXG4gICAgdHJhbnNpdGlvbjogNTAwbXM7XFxuICAgIHJpZ2h0OiAzMHB4ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5kaXNtaXNzLWJ0bi1yZXNpemUtaW4gc3BhbiB7XFxuICAgIGRpc3BsYXk6IG5vbmU7XFxufVxcblxcbi5kaXNtaXNzLWJ0bi1yZXNpemUtaW46aG92ZXIge1xcbiAgICB3aWR0aDogMjE3cHggIWltcG9ydGFudDtcXG4gICAgaGVpZ2h0OiA0NnB4ICFpbXBvcnRhbnQ7XFxuICAgIHRyYW5zaXRpb246IGFsbCAzMDBtcyBsaW5lYXI7XFxuICAgIGN1cnNvcjogcG9pbnRlcjtcXG59XFxuXFxuLmRpc21pc3MtYnRuLXJlc2l6ZS1pbjpob3ZlciBzcGFuIHtcXG4gICAgZGlzcGxheTogaW5saW5lO1xcbiAgICBoZWlnaHQ6IDIwcHggIWltcG9ydGFudDtcXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcXG59XFxuXFxuLmRpc21pc3MtYnRuLXJlc2l6ZS1vdXQge1xcbiAgICB3aWR0aDogNDZweCAhaW1wb3J0YW50O1xcbiAgICBoZWlnaHQ6IDQ2cHggIWltcG9ydGFudDtcXG4gICAgdHJhbnNpdGlvbjogNTAwbXM7XFxuICAgIHJpZ2h0OiAtMTAwcHggIWltcG9ydGFudDtcXG59XFxuXFxuLnNsaWRlLWluIHtcXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpO1xcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTtcXG4gICAgYW5pbWF0aW9uOiBzbGlkZS1pbiAwLjhzIGZvcndhcmRzICFpbXBvcnRhbnQ7XFxuICAgIC13ZWJraXQtYW5pbWF0aW9uOiBzbGlkZS1pbiAwLjhzIGZvcndhcmRzICFpbXBvcnRhbnQ7XFxuICAgIHotaW5kZXg6IDEwMDAwMDAwMDAwMDA7XFxufVxcblxcbi5zbGlkZS1vdXQge1xcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7XFxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpO1xcbiAgICBhbmltYXRpb246IHNsaWRlLW91dCAxcyBmb3J3YXJkcyAhaW1wb3J0YW50O1xcbiAgICAtd2Via2l0LWFuaW1hdGlvbjogc2xpZGUtb3V0IDFzIGZvcndhcmRzICFpbXBvcnRhbnQ7XFxuICAgIHotaW5kZXg6IC0xMDAwMDAwMDAwMDAwO1xcbn1cXG5cXG5AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA0OTVweCkge1xcbiAgICAuc2xpZGUtaW4ge1xcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMCUpO1xcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTAwJSk7XFxuICAgICAgICBhbmltYXRpb246IHNsaWRlLXVwIDAuOHMgZm9yd2FyZHMgIWltcG9ydGFudDtcXG4gICAgICAgIC13ZWJraXQtYW5pbWF0aW9uOiBzbGlkZS11cCAwLjhzIGZvcndhcmRzICFpbXBvcnRhbnQ7XFxuICAgICAgICB6LWluZGV4OiAxMDAwMDAwMDAwMDAwO1xcbiAgICB9XFxuXFxuICAgIC5zbGlkZS1vdXQge1xcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMCUpO1xcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTAwJSk7XFxuICAgICAgICBhbmltYXRpb246IHNsaWRlLWRvd24gMC41cyBmb3J3YXJkcyAhaW1wb3J0YW50O1xcbiAgICAgICAgLXdlYmtpdC1hbmltYXRpb246IHNsaWRlLWRvd24gMXMgZm9yd2FyZHMgIWltcG9ydGFudDtcXG4gICAgICAgIHotaW5kZXg6IC0xMDAwMDAwMDAwMDAwO1xcbiAgICB9XFxufVxcblxcbkBrZXlmcmFtZXMgc2xpZGUtaW4ge1xcbiAgICAxMDAlIHtcXG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwJSk7XFxuICAgIH1cXG59XFxuXFxuQC13ZWJraXQta2V5ZnJhbWVzIHNsaWRlLWluIHtcXG4gICAgMTAwJSB7XFxuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgwJSk7XFxuICAgIH1cXG59XFxuXFxuQGtleWZyYW1lcyBzbGlkZS11cCB7XFxuICAgIDEwMCUge1xcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDAlKTtcXG4gICAgfVxcbn1cXG5cXG5ALXdlYmtpdC1rZXlmcmFtZXMgc2xpZGUtdXAge1xcbiAgICAxMDAlIHtcXG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDAlKTtcXG4gICAgfVxcbn1cXG5cXG5Aa2V5ZnJhbWVzIHNsaWRlLW91dCB7XFxuICAgIDAlIHtcXG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwJSk7XFxuICAgIH1cXG5cXG4gICAgMTAwJSB7XFxuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7XFxuICAgIH1cXG59XFxuXFxuQC13ZWJraXQta2V5ZnJhbWVzIHNsaWRlLW91dCB7XFxuICAgIDAlIHtcXG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDAlKTtcXG4gICAgfVxcblxcbiAgICAxMDAlIHtcXG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpO1xcbiAgICB9XFxufVxcblxcbkBrZXlmcmFtZXMgc2xpZGUtZG93biB7XFxuICAgIDAlIHtcXG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwJSk7XFxuICAgIH1cXG5cXG4gICAgMTAwJSB7XFxuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTAwJSk7XFxuICAgIH1cXG59XFxuXFxuQC13ZWJraXQta2V5ZnJhbWVzIHNsaWRlLWRvd24ge1xcbiAgICAwJSB7XFxuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgwJSk7XFxuICAgIH1cXG5cXG4gICAgMTAwJSB7XFxuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMDAlKTtcXG4gICAgfVxcbn1cXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbi8qXG4gIE1JVCBMaWNlbnNlIGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwXG4gIEF1dGhvciBUb2JpYXMgS29wcGVycyBAc29rcmFcbiovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChjc3NXaXRoTWFwcGluZ1RvU3RyaW5nKSB7XG4gIHZhciBsaXN0ID0gW107XG5cbiAgLy8gcmV0dXJuIHRoZSBsaXN0IG9mIG1vZHVsZXMgYXMgY3NzIHN0cmluZ1xuICBsaXN0LnRvU3RyaW5nID0gZnVuY3Rpb24gdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMubWFwKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICB2YXIgY29udGVudCA9IFwiXCI7XG4gICAgICB2YXIgbmVlZExheWVyID0gdHlwZW9mIGl0ZW1bNV0gIT09IFwidW5kZWZpbmVkXCI7XG4gICAgICBpZiAoaXRlbVs0XSkge1xuICAgICAgICBjb250ZW50ICs9IFwiQHN1cHBvcnRzIChcIi5jb25jYXQoaXRlbVs0XSwgXCIpIHtcIik7XG4gICAgICB9XG4gICAgICBpZiAoaXRlbVsyXSkge1xuICAgICAgICBjb250ZW50ICs9IFwiQG1lZGlhIFwiLmNvbmNhdChpdGVtWzJdLCBcIiB7XCIpO1xuICAgICAgfVxuICAgICAgaWYgKG5lZWRMYXllcikge1xuICAgICAgICBjb250ZW50ICs9IFwiQGxheWVyXCIuY29uY2F0KGl0ZW1bNV0ubGVuZ3RoID4gMCA/IFwiIFwiLmNvbmNhdChpdGVtWzVdKSA6IFwiXCIsIFwiIHtcIik7XG4gICAgICB9XG4gICAgICBjb250ZW50ICs9IGNzc1dpdGhNYXBwaW5nVG9TdHJpbmcoaXRlbSk7XG4gICAgICBpZiAobmVlZExheWVyKSB7XG4gICAgICAgIGNvbnRlbnQgKz0gXCJ9XCI7XG4gICAgICB9XG4gICAgICBpZiAoaXRlbVsyXSkge1xuICAgICAgICBjb250ZW50ICs9IFwifVwiO1xuICAgICAgfVxuICAgICAgaWYgKGl0ZW1bNF0pIHtcbiAgICAgICAgY29udGVudCArPSBcIn1cIjtcbiAgICAgIH1cbiAgICAgIHJldHVybiBjb250ZW50O1xuICAgIH0pLmpvaW4oXCJcIik7XG4gIH07XG5cbiAgLy8gaW1wb3J0IGEgbGlzdCBvZiBtb2R1bGVzIGludG8gdGhlIGxpc3RcbiAgbGlzdC5pID0gZnVuY3Rpb24gaShtb2R1bGVzLCBtZWRpYSwgZGVkdXBlLCBzdXBwb3J0cywgbGF5ZXIpIHtcbiAgICBpZiAodHlwZW9mIG1vZHVsZXMgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIG1vZHVsZXMgPSBbW251bGwsIG1vZHVsZXMsIHVuZGVmaW5lZF1dO1xuICAgIH1cbiAgICB2YXIgYWxyZWFkeUltcG9ydGVkTW9kdWxlcyA9IHt9O1xuICAgIGlmIChkZWR1cGUpIHtcbiAgICAgIGZvciAodmFyIGsgPSAwOyBrIDwgdGhpcy5sZW5ndGg7IGsrKykge1xuICAgICAgICB2YXIgaWQgPSB0aGlzW2tdWzBdO1xuICAgICAgICBpZiAoaWQgIT0gbnVsbCkge1xuICAgICAgICAgIGFscmVhZHlJbXBvcnRlZE1vZHVsZXNbaWRdID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBmb3IgKHZhciBfayA9IDA7IF9rIDwgbW9kdWxlcy5sZW5ndGg7IF9rKyspIHtcbiAgICAgIHZhciBpdGVtID0gW10uY29uY2F0KG1vZHVsZXNbX2tdKTtcbiAgICAgIGlmIChkZWR1cGUgJiYgYWxyZWFkeUltcG9ydGVkTW9kdWxlc1tpdGVtWzBdXSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGlmICh0eXBlb2YgbGF5ZXIgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBpdGVtWzVdID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgICAgaXRlbVs1XSA9IGxheWVyO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGl0ZW1bMV0gPSBcIkBsYXllclwiLmNvbmNhdChpdGVtWzVdLmxlbmd0aCA+IDAgPyBcIiBcIi5jb25jYXQoaXRlbVs1XSkgOiBcIlwiLCBcIiB7XCIpLmNvbmNhdChpdGVtWzFdLCBcIn1cIik7XG4gICAgICAgICAgaXRlbVs1XSA9IGxheWVyO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAobWVkaWEpIHtcbiAgICAgICAgaWYgKCFpdGVtWzJdKSB7XG4gICAgICAgICAgaXRlbVsyXSA9IG1lZGlhO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGl0ZW1bMV0gPSBcIkBtZWRpYSBcIi5jb25jYXQoaXRlbVsyXSwgXCIge1wiKS5jb25jYXQoaXRlbVsxXSwgXCJ9XCIpO1xuICAgICAgICAgIGl0ZW1bMl0gPSBtZWRpYTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHN1cHBvcnRzKSB7XG4gICAgICAgIGlmICghaXRlbVs0XSkge1xuICAgICAgICAgIGl0ZW1bNF0gPSBcIlwiLmNvbmNhdChzdXBwb3J0cyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaXRlbVsxXSA9IFwiQHN1cHBvcnRzIChcIi5jb25jYXQoaXRlbVs0XSwgXCIpIHtcIikuY29uY2F0KGl0ZW1bMV0sIFwifVwiKTtcbiAgICAgICAgICBpdGVtWzRdID0gc3VwcG9ydHM7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGxpc3QucHVzaChpdGVtKTtcbiAgICB9XG4gIH07XG4gIHJldHVybiBsaXN0O1xufTsiLCJcInVzZSBzdHJpY3RcIjtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXRlbSkge1xuICB2YXIgY29udGVudCA9IGl0ZW1bMV07XG4gIHZhciBjc3NNYXBwaW5nID0gaXRlbVszXTtcbiAgaWYgKCFjc3NNYXBwaW5nKSB7XG4gICAgcmV0dXJuIGNvbnRlbnQ7XG4gIH1cbiAgaWYgKHR5cGVvZiBidG9hID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICB2YXIgYmFzZTY0ID0gYnRvYSh1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoSlNPTi5zdHJpbmdpZnkoY3NzTWFwcGluZykpKSk7XG4gICAgdmFyIGRhdGEgPSBcInNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LFwiLmNvbmNhdChiYXNlNjQpO1xuICAgIHZhciBzb3VyY2VNYXBwaW5nID0gXCIvKiMgXCIuY29uY2F0KGRhdGEsIFwiICovXCIpO1xuICAgIHJldHVybiBbY29udGVudF0uY29uY2F0KFtzb3VyY2VNYXBwaW5nXSkuam9pbihcIlxcblwiKTtcbiAgfVxuICByZXR1cm4gW2NvbnRlbnRdLmpvaW4oXCJcXG5cIik7XG59OyIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgc3R5bGVzSW5ET00gPSBbXTtcbmZ1bmN0aW9uIGdldEluZGV4QnlJZGVudGlmaWVyKGlkZW50aWZpZXIpIHtcbiAgdmFyIHJlc3VsdCA9IC0xO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHN0eWxlc0luRE9NLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKHN0eWxlc0luRE9NW2ldLmlkZW50aWZpZXIgPT09IGlkZW50aWZpZXIpIHtcbiAgICAgIHJlc3VsdCA9IGk7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cbmZ1bmN0aW9uIG1vZHVsZXNUb0RvbShsaXN0LCBvcHRpb25zKSB7XG4gIHZhciBpZENvdW50TWFwID0ge307XG4gIHZhciBpZGVudGlmaWVycyA9IFtdO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgaXRlbSA9IGxpc3RbaV07XG4gICAgdmFyIGlkID0gb3B0aW9ucy5iYXNlID8gaXRlbVswXSArIG9wdGlvbnMuYmFzZSA6IGl0ZW1bMF07XG4gICAgdmFyIGNvdW50ID0gaWRDb3VudE1hcFtpZF0gfHwgMDtcbiAgICB2YXIgaWRlbnRpZmllciA9IFwiXCIuY29uY2F0KGlkLCBcIiBcIikuY29uY2F0KGNvdW50KTtcbiAgICBpZENvdW50TWFwW2lkXSA9IGNvdW50ICsgMTtcbiAgICB2YXIgaW5kZXhCeUlkZW50aWZpZXIgPSBnZXRJbmRleEJ5SWRlbnRpZmllcihpZGVudGlmaWVyKTtcbiAgICB2YXIgb2JqID0ge1xuICAgICAgY3NzOiBpdGVtWzFdLFxuICAgICAgbWVkaWE6IGl0ZW1bMl0sXG4gICAgICBzb3VyY2VNYXA6IGl0ZW1bM10sXG4gICAgICBzdXBwb3J0czogaXRlbVs0XSxcbiAgICAgIGxheWVyOiBpdGVtWzVdXG4gICAgfTtcbiAgICBpZiAoaW5kZXhCeUlkZW50aWZpZXIgIT09IC0xKSB7XG4gICAgICBzdHlsZXNJbkRPTVtpbmRleEJ5SWRlbnRpZmllcl0ucmVmZXJlbmNlcysrO1xuICAgICAgc3R5bGVzSW5ET01baW5kZXhCeUlkZW50aWZpZXJdLnVwZGF0ZXIob2JqKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIHVwZGF0ZXIgPSBhZGRFbGVtZW50U3R5bGUob2JqLCBvcHRpb25zKTtcbiAgICAgIG9wdGlvbnMuYnlJbmRleCA9IGk7XG4gICAgICBzdHlsZXNJbkRPTS5zcGxpY2UoaSwgMCwge1xuICAgICAgICBpZGVudGlmaWVyOiBpZGVudGlmaWVyLFxuICAgICAgICB1cGRhdGVyOiB1cGRhdGVyLFxuICAgICAgICByZWZlcmVuY2VzOiAxXG4gICAgICB9KTtcbiAgICB9XG4gICAgaWRlbnRpZmllcnMucHVzaChpZGVudGlmaWVyKTtcbiAgfVxuICByZXR1cm4gaWRlbnRpZmllcnM7XG59XG5mdW5jdGlvbiBhZGRFbGVtZW50U3R5bGUob2JqLCBvcHRpb25zKSB7XG4gIHZhciBhcGkgPSBvcHRpb25zLmRvbUFQSShvcHRpb25zKTtcbiAgYXBpLnVwZGF0ZShvYmopO1xuICB2YXIgdXBkYXRlciA9IGZ1bmN0aW9uIHVwZGF0ZXIobmV3T2JqKSB7XG4gICAgaWYgKG5ld09iaikge1xuICAgICAgaWYgKG5ld09iai5jc3MgPT09IG9iai5jc3MgJiYgbmV3T2JqLm1lZGlhID09PSBvYmoubWVkaWEgJiYgbmV3T2JqLnNvdXJjZU1hcCA9PT0gb2JqLnNvdXJjZU1hcCAmJiBuZXdPYmouc3VwcG9ydHMgPT09IG9iai5zdXBwb3J0cyAmJiBuZXdPYmoubGF5ZXIgPT09IG9iai5sYXllcikge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBhcGkudXBkYXRlKG9iaiA9IG5ld09iaik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFwaS5yZW1vdmUoKTtcbiAgICB9XG4gIH07XG4gIHJldHVybiB1cGRhdGVyO1xufVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAobGlzdCwgb3B0aW9ucykge1xuICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAgbGlzdCA9IGxpc3QgfHwgW107XG4gIHZhciBsYXN0SWRlbnRpZmllcnMgPSBtb2R1bGVzVG9Eb20obGlzdCwgb3B0aW9ucyk7XG4gIHJldHVybiBmdW5jdGlvbiB1cGRhdGUobmV3TGlzdCkge1xuICAgIG5ld0xpc3QgPSBuZXdMaXN0IHx8IFtdO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGFzdElkZW50aWZpZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgaWRlbnRpZmllciA9IGxhc3RJZGVudGlmaWVyc1tpXTtcbiAgICAgIHZhciBpbmRleCA9IGdldEluZGV4QnlJZGVudGlmaWVyKGlkZW50aWZpZXIpO1xuICAgICAgc3R5bGVzSW5ET01baW5kZXhdLnJlZmVyZW5jZXMtLTtcbiAgICB9XG4gICAgdmFyIG5ld0xhc3RJZGVudGlmaWVycyA9IG1vZHVsZXNUb0RvbShuZXdMaXN0LCBvcHRpb25zKTtcbiAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgbGFzdElkZW50aWZpZXJzLmxlbmd0aDsgX2krKykge1xuICAgICAgdmFyIF9pZGVudGlmaWVyID0gbGFzdElkZW50aWZpZXJzW19pXTtcbiAgICAgIHZhciBfaW5kZXggPSBnZXRJbmRleEJ5SWRlbnRpZmllcihfaWRlbnRpZmllcik7XG4gICAgICBpZiAoc3R5bGVzSW5ET01bX2luZGV4XS5yZWZlcmVuY2VzID09PSAwKSB7XG4gICAgICAgIHN0eWxlc0luRE9NW19pbmRleF0udXBkYXRlcigpO1xuICAgICAgICBzdHlsZXNJbkRPTS5zcGxpY2UoX2luZGV4LCAxKTtcbiAgICAgIH1cbiAgICB9XG4gICAgbGFzdElkZW50aWZpZXJzID0gbmV3TGFzdElkZW50aWZpZXJzO1xuICB9O1xufTsiLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIG1lbW8gPSB7fTtcblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgICovXG5mdW5jdGlvbiBnZXRUYXJnZXQodGFyZ2V0KSB7XG4gIGlmICh0eXBlb2YgbWVtb1t0YXJnZXRdID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgdmFyIHN0eWxlVGFyZ2V0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcih0YXJnZXQpO1xuXG4gICAgLy8gU3BlY2lhbCBjYXNlIHRvIHJldHVybiBoZWFkIG9mIGlmcmFtZSBpbnN0ZWFkIG9mIGlmcmFtZSBpdHNlbGZcbiAgICBpZiAod2luZG93LkhUTUxJRnJhbWVFbGVtZW50ICYmIHN0eWxlVGFyZ2V0IGluc3RhbmNlb2Ygd2luZG93LkhUTUxJRnJhbWVFbGVtZW50KSB7XG4gICAgICB0cnkge1xuICAgICAgICAvLyBUaGlzIHdpbGwgdGhyb3cgYW4gZXhjZXB0aW9uIGlmIGFjY2VzcyB0byBpZnJhbWUgaXMgYmxvY2tlZFxuICAgICAgICAvLyBkdWUgdG8gY3Jvc3Mtb3JpZ2luIHJlc3RyaWN0aW9uc1xuICAgICAgICBzdHlsZVRhcmdldCA9IHN0eWxlVGFyZ2V0LmNvbnRlbnREb2N1bWVudC5oZWFkO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAvLyBpc3RhbmJ1bCBpZ25vcmUgbmV4dFxuICAgICAgICBzdHlsZVRhcmdldCA9IG51bGw7XG4gICAgICB9XG4gICAgfVxuICAgIG1lbW9bdGFyZ2V0XSA9IHN0eWxlVGFyZ2V0O1xuICB9XG4gIHJldHVybiBtZW1vW3RhcmdldF07XG59XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICAqL1xuZnVuY3Rpb24gaW5zZXJ0QnlTZWxlY3RvcihpbnNlcnQsIHN0eWxlKSB7XG4gIHZhciB0YXJnZXQgPSBnZXRUYXJnZXQoaW5zZXJ0KTtcbiAgaWYgKCF0YXJnZXQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJDb3VsZG4ndCBmaW5kIGEgc3R5bGUgdGFyZ2V0LiBUaGlzIHByb2JhYmx5IG1lYW5zIHRoYXQgdGhlIHZhbHVlIGZvciB0aGUgJ2luc2VydCcgcGFyYW1ldGVyIGlzIGludmFsaWQuXCIpO1xuICB9XG4gIHRhcmdldC5hcHBlbmRDaGlsZChzdHlsZSk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGluc2VydEJ5U2VsZWN0b3I7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICAqL1xuZnVuY3Rpb24gaW5zZXJ0U3R5bGVFbGVtZW50KG9wdGlvbnMpIHtcbiAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3R5bGVcIik7XG4gIG9wdGlvbnMuc2V0QXR0cmlidXRlcyhlbGVtZW50LCBvcHRpb25zLmF0dHJpYnV0ZXMpO1xuICBvcHRpb25zLmluc2VydChlbGVtZW50LCBvcHRpb25zLm9wdGlvbnMpO1xuICByZXR1cm4gZWxlbWVudDtcbn1cbm1vZHVsZS5leHBvcnRzID0gaW5zZXJ0U3R5bGVFbGVtZW50OyIsIlwidXNlIHN0cmljdFwiO1xuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAgKi9cbmZ1bmN0aW9uIHNldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcyhzdHlsZUVsZW1lbnQpIHtcbiAgdmFyIG5vbmNlID0gdHlwZW9mIF9fd2VicGFja19ub25jZV9fICE9PSBcInVuZGVmaW5lZFwiID8gX193ZWJwYWNrX25vbmNlX18gOiBudWxsO1xuICBpZiAobm9uY2UpIHtcbiAgICBzdHlsZUVsZW1lbnQuc2V0QXR0cmlidXRlKFwibm9uY2VcIiwgbm9uY2UpO1xuICB9XG59XG5tb2R1bGUuZXhwb3J0cyA9IHNldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlczsiLCJcInVzZSBzdHJpY3RcIjtcblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgICovXG5mdW5jdGlvbiBhcHBseShzdHlsZUVsZW1lbnQsIG9wdGlvbnMsIG9iaikge1xuICB2YXIgY3NzID0gXCJcIjtcbiAgaWYgKG9iai5zdXBwb3J0cykge1xuICAgIGNzcyArPSBcIkBzdXBwb3J0cyAoXCIuY29uY2F0KG9iai5zdXBwb3J0cywgXCIpIHtcIik7XG4gIH1cbiAgaWYgKG9iai5tZWRpYSkge1xuICAgIGNzcyArPSBcIkBtZWRpYSBcIi5jb25jYXQob2JqLm1lZGlhLCBcIiB7XCIpO1xuICB9XG4gIHZhciBuZWVkTGF5ZXIgPSB0eXBlb2Ygb2JqLmxheWVyICE9PSBcInVuZGVmaW5lZFwiO1xuICBpZiAobmVlZExheWVyKSB7XG4gICAgY3NzICs9IFwiQGxheWVyXCIuY29uY2F0KG9iai5sYXllci5sZW5ndGggPiAwID8gXCIgXCIuY29uY2F0KG9iai5sYXllcikgOiBcIlwiLCBcIiB7XCIpO1xuICB9XG4gIGNzcyArPSBvYmouY3NzO1xuICBpZiAobmVlZExheWVyKSB7XG4gICAgY3NzICs9IFwifVwiO1xuICB9XG4gIGlmIChvYmoubWVkaWEpIHtcbiAgICBjc3MgKz0gXCJ9XCI7XG4gIH1cbiAgaWYgKG9iai5zdXBwb3J0cykge1xuICAgIGNzcyArPSBcIn1cIjtcbiAgfVxuICB2YXIgc291cmNlTWFwID0gb2JqLnNvdXJjZU1hcDtcbiAgaWYgKHNvdXJjZU1hcCAmJiB0eXBlb2YgYnRvYSAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgIGNzcyArPSBcIlxcbi8qIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsXCIuY29uY2F0KGJ0b2EodW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KEpTT04uc3RyaW5naWZ5KHNvdXJjZU1hcCkpKSksIFwiICovXCIpO1xuICB9XG5cbiAgLy8gRm9yIG9sZCBJRVxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgICovXG4gIG9wdGlvbnMuc3R5bGVUYWdUcmFuc2Zvcm0oY3NzLCBzdHlsZUVsZW1lbnQsIG9wdGlvbnMub3B0aW9ucyk7XG59XG5mdW5jdGlvbiByZW1vdmVTdHlsZUVsZW1lbnQoc3R5bGVFbGVtZW50KSB7XG4gIC8vIGlzdGFuYnVsIGlnbm9yZSBpZlxuICBpZiAoc3R5bGVFbGVtZW50LnBhcmVudE5vZGUgPT09IG51bGwpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgc3R5bGVFbGVtZW50LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoc3R5bGVFbGVtZW50KTtcbn1cblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgICovXG5mdW5jdGlvbiBkb21BUEkob3B0aW9ucykge1xuICBpZiAodHlwZW9mIGRvY3VtZW50ID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHVwZGF0ZTogZnVuY3Rpb24gdXBkYXRlKCkge30sXG4gICAgICByZW1vdmU6IGZ1bmN0aW9uIHJlbW92ZSgpIHt9XG4gICAgfTtcbiAgfVxuICB2YXIgc3R5bGVFbGVtZW50ID0gb3B0aW9ucy5pbnNlcnRTdHlsZUVsZW1lbnQob3B0aW9ucyk7XG4gIHJldHVybiB7XG4gICAgdXBkYXRlOiBmdW5jdGlvbiB1cGRhdGUob2JqKSB7XG4gICAgICBhcHBseShzdHlsZUVsZW1lbnQsIG9wdGlvbnMsIG9iaik7XG4gICAgfSxcbiAgICByZW1vdmU6IGZ1bmN0aW9uIHJlbW92ZSgpIHtcbiAgICAgIHJlbW92ZVN0eWxlRWxlbWVudChzdHlsZUVsZW1lbnQpO1xuICAgIH1cbiAgfTtcbn1cbm1vZHVsZS5leHBvcnRzID0gZG9tQVBJOyIsIlwidXNlIHN0cmljdFwiO1xuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAgKi9cbmZ1bmN0aW9uIHN0eWxlVGFnVHJhbnNmb3JtKGNzcywgc3R5bGVFbGVtZW50KSB7XG4gIGlmIChzdHlsZUVsZW1lbnQuc3R5bGVTaGVldCkge1xuICAgIHN0eWxlRWxlbWVudC5zdHlsZVNoZWV0LmNzc1RleHQgPSBjc3M7XG4gIH0gZWxzZSB7XG4gICAgd2hpbGUgKHN0eWxlRWxlbWVudC5maXJzdENoaWxkKSB7XG4gICAgICBzdHlsZUVsZW1lbnQucmVtb3ZlQ2hpbGQoc3R5bGVFbGVtZW50LmZpcnN0Q2hpbGQpO1xuICAgIH1cbiAgICBzdHlsZUVsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoY3NzKSk7XG4gIH1cbn1cbm1vZHVsZS5leHBvcnRzID0gc3R5bGVUYWdUcmFuc2Zvcm07IiwiLy8gVGhlIG1vZHVsZSBjYWNoZVxudmFyIF9fd2VicGFja19tb2R1bGVfY2FjaGVfXyA9IHt9O1xuXG4vLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcblx0dmFyIGNhY2hlZE1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF07XG5cdGlmIChjYWNoZWRNb2R1bGUgIT09IHVuZGVmaW5lZCkge1xuXHRcdHJldHVybiBjYWNoZWRNb2R1bGUuZXhwb3J0cztcblx0fVxuXHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuXHR2YXIgbW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXSA9IHtcblx0XHRpZDogbW9kdWxlSWQsXG5cdFx0Ly8gbm8gbW9kdWxlLmxvYWRlZCBuZWVkZWRcblx0XHRleHBvcnRzOiB7fVxuXHR9O1xuXG5cdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuXHRfX3dlYnBhY2tfbW9kdWxlc19fW21vZHVsZUlkXShtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuXHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuXHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG59XG5cbiIsIi8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSAobW9kdWxlKSA9PiB7XG5cdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuXHRcdCgpID0+IChtb2R1bGVbJ2RlZmF1bHQnXSkgOlxuXHRcdCgpID0+IChtb2R1bGUpO1xuXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCB7IGE6IGdldHRlciB9KTtcblx0cmV0dXJuIGdldHRlcjtcbn07IiwiLy8gZGVmaW5lIGdldHRlciBmdW5jdGlvbnMgZm9yIGhhcm1vbnkgZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5kID0gKGV4cG9ydHMsIGRlZmluaXRpb24pID0+IHtcblx0Zm9yKHZhciBrZXkgaW4gZGVmaW5pdGlvbikge1xuXHRcdGlmKF9fd2VicGFja19yZXF1aXJlX18ubyhkZWZpbml0aW9uLCBrZXkpICYmICFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywga2V5KSkge1xuXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIGtleSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGRlZmluaXRpb25ba2V5XSB9KTtcblx0XHR9XG5cdH1cbn07IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5vID0gKG9iaiwgcHJvcCkgPT4gKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIHByb3ApKSIsIl9fd2VicGFja19yZXF1aXJlX18ubmMgPSB1bmRlZmluZWQ7IiwiZXhwb3J0IGNvbnN0IFRSSVBGVVNJT05fQkFTRV9VUkwgPVxuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSBcInByb2R1Y3Rpb25cIiA/IFwiaHR0cHM6Ly9kZXZlbG9wLmJvb2tpbmdzLnZhY2F5b3UuY29tL1wiIDogXCJodHRwOi8vbG9jYWxob3N0OjMwMDAvXCI7XG5leHBvcnQgY29uc3QgU0RLX1NDUklQVF9JRCA9IFwidHJpcGZ1c2lvbi1zZGtcIjtcbmV4cG9ydCBjb25zdCBXSURHRVRfSUQgPSBcInRyaXBmdXNpb24td2lkZ2V0XCI7XG5leHBvcnQgY29uc3QgV0lER0VUX0lOTkVSX1dSQVBQRVJfSUQgPSBcInRyaXBmdXNpb24td2lkZ2V0LWlubmVyLXdyYXBwZXJcIjtcbmV4cG9ydCBjb25zdCBXSURHRVRfSEVBREVSX0lEID0gXCJ0cmlwZnVzaW9uLXdpZGdldC1oZWFkZXJcIjtcbmV4cG9ydCBjb25zdCBXSURHRVRfQ0xPU0VfQlVUVE9OX0lEID0gXCJ0cmlwZnVzaW9uLXdpZGdldC1jbG9zZS1idXR0b25cIjtcbmV4cG9ydCBjb25zdCBXSURHRVRfSEVBREVSX1RJVExFX0lEID0gXCJ0cmlwZnVzaW9uLXdpZGdldC1oZWFkZXItdGl0bGVcIjtcbmV4cG9ydCBjb25zdCBXSURHRVRfV1JBUFBFUl9JRCA9IFwidHJpcGZ1c2lvbi13aWRnZXQtd3JhcHBlclwiO1xuZXhwb3J0IGNvbnN0IFdJREdFVF9JRlJBTUVfSUQgPSBcInRyaXBmdXNpb24td2lkZ2V0LWlmcmFtZVwiO1xuZXhwb3J0IGNvbnN0IFJFU1VNRV9CVVRUT05fSUQgPSBcInRyaXBmdXNpb24tcmVzdW1lLWJ1dHRvblwiO1xuZXhwb3J0IGNvbnN0IExPQURFUl9JRCA9IFwidHJpcGZ1c2lvbi1sb2FkZXJcIjtcbmV4cG9ydCBjb25zdCBCT09LSU5HX01PREUgPSB7XG4gICAgbm9ybWFsOiBcIm5vcm1hbFwiLFxuICAgIGFwcGVuZDogXCJhcHBlbmRcIixcbn0gYXMgY29uc3Q7XG4iLCIvKiBlc2xpbnQtZGlzYWJsZSBuby1jb25zb2xlICovXG5pbXBvcnQgeyBUUklQRlVTSU9OX0JBU0VfVVJMIH0gZnJvbSBcIi4vY29uc3RcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldFBhcmFtc0Zyb21VcmwodXJsU2VhcmNoUGFyYW1zOiBVUkxTZWFyY2hQYXJhbXMpOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHtcbiAgICBjb25zdCBhdmFpbGFibGVTZWFyY2hQYXJhbXNNYXA6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgICAgIHRyaXBmdXNpb246IFwidHJpcGZ1c2lvblwiLFxuICAgICAgICBjbGllbnQ6IFwiY2xpZW50XCIsXG4gICAgICAgIHByb3BlcnR5aWQ6IFwicHJvcGVydHlJZFwiLFxuICAgICAgICBtb2RlOiBcIm1vZGVcIixcbiAgICAgICAgb2ZmZXJpZDogXCJvZmZlcklkXCIsXG4gICAgICAgIGJvb2tpbmdpZDogXCJib29raW5nSWRcIixcbiAgICAgICAgY2hlY2tpbjogXCJjaGVja0luXCIsXG4gICAgICAgIGNoZWNrb3V0OiBcImNoZWNrT3V0XCIsXG4gICAgICAgIGFkdWx0czogXCJhZHVsdHNcIixcbiAgICAgICAgY2hpbGRyZW46IFwiY2hpbGRyZW5cIixcbiAgICB9O1xuICAgIHJldHVybiBBcnJheS5mcm9tKHVybFNlYXJjaFBhcmFtcy5lbnRyaWVzKCkpLnJlZHVjZShcbiAgICAgICAgKHByZXYsIFtzZWFyY2hQYXJhbUtleSwgc2VhcmNoUGFyYW1WYWx1ZV0pID0+ICh7XG4gICAgICAgICAgICAuLi5wcmV2LFxuICAgICAgICAgICAgW2F2YWlsYWJsZVNlYXJjaFBhcmFtc01hcFtzZWFyY2hQYXJhbUtleS50b0xvd2VyQ2FzZSgpXV06IHNlYXJjaFBhcmFtVmFsdWUsXG4gICAgICAgIH0pLFxuICAgICAgICB7fVxuICAgICk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsb2dnZXIobWVzc2FnZTogc3RyaW5nLCB0eXBlOiBcImVycm9yXCIgfCBcImxvZ1wiID0gXCJlcnJvclwiKSB7XG4gICAgY29uc3QgdXJsID0gYCR7VFJJUEZVU0lPTl9CQVNFX1VSTH1hcGkvdmFjYXlvdS9sb2dgO1xuICAgIGNvbnN0IHBheWxvYWQgPSB7XG4gICAgICAgIG1lc3NhZ2UsXG4gICAgICAgIHBhZ2U6IHdpbmRvdy5sb2NhdGlvbi5ocmVmLFxuICAgIH07XG4gICAgY29uc3QgaGVhZGVycyA9IHtcbiAgICAgICAgXCJjb250ZW50LXR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIsXG4gICAgfTtcbiAgICByZXR1cm4gZmV0Y2godXJsLCB7XG4gICAgICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgIHR5cGUsXG4gICAgICAgICAgICBwYXlsb2FkLFxuICAgICAgICB9KSxcbiAgICAgICAgaGVhZGVycyxcbiAgICB9KVxuICAgICAgICAudGhlbigocmVzcG9uc2UpID0+IHJlc3BvbnNlLmpzb24oKSlcbiAgICAgICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBUcmlwZnVzaW9uOiBmYWlsZWQgdG8gbG9nIG1lc3NhZ2U6ICR7ZXJyb3J9YCk7XG4gICAgICAgIH0pO1xufVxuIiwiLyogZXNsaW50LWRpc2FibGUgbm8tY29uc29sZSAqL1xuaW1wb3J0IHR5cGUgeyBXaWRnZXRQcm9wcyB9IGZyb20gXCIuL2luZGV4LnR5cGVzXCI7XG5pbXBvcnQge1xuICAgIEJPT0tJTkdfTU9ERSxcbiAgICBMT0FERVJfSUQsXG4gICAgUkVTVU1FX0JVVFRPTl9JRCxcbiAgICBUUklQRlVTSU9OX0JBU0VfVVJMLFxuICAgIFdJREdFVF9DTE9TRV9CVVRUT05fSUQsXG4gICAgV0lER0VUX0hFQURFUl9JRCxcbiAgICBXSURHRVRfSEVBREVSX1RJVExFX0lELFxuICAgIFdJREdFVF9JRCxcbiAgICBXSURHRVRfSUZSQU1FX0lELFxuICAgIFdJREdFVF9JTk5FUl9XUkFQUEVSX0lELFxuICAgIFdJREdFVF9XUkFQUEVSX0lELFxufSBmcm9tIFwiLi9jb25zdFwiO1xuaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSBcIi4vdXRpbHNcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGRpc3BsYXlMb2FkaW5nT3ZlcmxheSgpIHtcbiAgICBjb25zdCB3aWRnZXRXcmFwcGVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoV0lER0VUX1dSQVBQRVJfSUQpO1xuXG4gICAgaWYgKHdpZGdldFdyYXBwZXIpIHtcbiAgICAgICAgY29uc3QgbG9hZGluZ0RpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG4gICAgICAgIGxvYWRpbmdEaXYuaWQgPSBMT0FERVJfSUQ7XG4gICAgICAgIGxvYWRpbmdEaXYuaW5uZXJIVE1MID0gXCJMb2FkaW5nIDxzcGFuPlRyaXBGdXNpb248L3NwYW4+XCI7XG4gICAgICAgIHdpZGdldFdyYXBwZXIuYXBwZW5kQ2hpbGQobG9hZGluZ0Rpdik7XG5cbiAgICAgICAgd2lkZ2V0V3JhcHBlci5zdHlsZS56SW5kZXggPSBgJHsxZTExfWA7XG4gICAgICAgIHdpZGdldFdyYXBwZXIuc3R5bGUuaGVpZ2h0ID0gXCIxMDAlXCI7XG4gICAgICAgIHdpZGdldFdyYXBwZXIuc3R5bGUuYmFja2dyb3VuZCA9IFwicmdiYSgwLCAwLCAwLCAuNzQpXCI7XG4gICAgICAgIGxvY2tQYWdlU2Nyb2xsKCk7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0UmVzdW1lQnV0dG9uKCkge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHdpZGdldCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiksXG4gICAgICAgICAgICB3aWRnZXRXcmFwcGVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKSxcbiAgICAgICAgICAgIHdpZGdldElubmVyV3JhcHBlciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiksXG4gICAgICAgICAgICB3aWRnZXRIZWFkZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpLFxuICAgICAgICAgICAgd2lkZ2V0SGVhZGVyVGl0bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3BhblwiKSxcbiAgICAgICAgICAgIHdpZGdldENsb3NlQnV0dG9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImJ1dHRvblwiKSxcbiAgICAgICAgICAgIHJlc3VtZUJ1dHRvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJidXR0b25cIiksXG4gICAgICAgICAgICByZXN1bWVCdXR0b25UZXh0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInNwYW5cIik7XG5cbiAgICAgICAgLy8gQ29uZmlndXJlIHJlc3VtZSBidXR0b25cbiAgICAgICAgcmVzdW1lQnV0dG9uLmlkID0gUkVTVU1FX0JVVFRPTl9JRDtcblxuICAgICAgICAvLyBDb25maWd1cmUgYnV0dG9uIHRleHRcbiAgICAgICAgcmVzdW1lQnV0dG9uVGV4dC5pbm5lckhUTUwgPSBcIkNvbXBsZXRlIHlvdXIgYm9va2luZ1wiO1xuICAgICAgICByZXN1bWVCdXR0b24uYXBwZW5kQ2hpbGQocmVzdW1lQnV0dG9uVGV4dCk7XG5cbiAgICAgICAgLy8gQ29uZmlndXJlIHdpZGdldCBhbmQgd3JhcHBlclxuICAgICAgICB3aWRnZXQuaWQgPSBXSURHRVRfSUQ7XG4gICAgICAgIHdpZGdldC5zdHlsZS5kaXNwbGF5ID0gXCJub25lXCI7XG4gICAgICAgIHdpZGdldFdyYXBwZXIuaWQgPSBXSURHRVRfV1JBUFBFUl9JRDtcblxuICAgICAgICAvLyBDb25maWd1cmUgd2lkZ2V0IGlubmVyIHdyYXBwZXJcbiAgICAgICAgd2lkZ2V0SW5uZXJXcmFwcGVyLmlkID0gV0lER0VUX0lOTkVSX1dSQVBQRVJfSUQ7XG4gICAgICAgIHdpZGdldEhlYWRlci5pZCA9IFdJREdFVF9IRUFERVJfSUQ7XG4gICAgICAgIHdpZGdldENsb3NlQnV0dG9uLmlkID0gV0lER0VUX0NMT1NFX0JVVFRPTl9JRDtcbiAgICAgICAgd2lkZ2V0Q2xvc2VCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGNsb3NlV2lkZ2V0KTtcbiAgICAgICAgd2lkZ2V0SGVhZGVyVGl0bGUuaWQgPSBXSURHRVRfSEVBREVSX1RJVExFX0lEO1xuICAgICAgICB3aWRnZXRIZWFkZXJUaXRsZS5pbm5lckhUTUwgPSBcIkJvb2tpbmdcIjtcblxuICAgICAgICAvLyBBcHBlbmQgd2lkZ2V0IHRvIHdyYXBwZXIgYW5kIHdyYXBwZXIgdG8gZG9jdW1lbnQgYm9keVxuICAgICAgICB3aWRnZXRXcmFwcGVyLmFwcGVuZENoaWxkKHdpZGdldCk7XG4gICAgICAgIHdpZGdldC5hcHBlbmRDaGlsZCh3aWRnZXRJbm5lcldyYXBwZXIpO1xuICAgICAgICB3aWRnZXRJbm5lcldyYXBwZXIuYXBwZW5kQ2hpbGQod2lkZ2V0SGVhZGVyKTtcbiAgICAgICAgd2lkZ2V0SGVhZGVyLmFwcGVuZENoaWxkKHdpZGdldEhlYWRlclRpdGxlKTtcbiAgICAgICAgd2lkZ2V0SGVhZGVyLmFwcGVuZENoaWxkKHdpZGdldENsb3NlQnV0dG9uKTtcbiAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh3aWRnZXRXcmFwcGVyKTtcbiAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChyZXN1bWVCdXR0b24pO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGxvZ2dlcihgV2lkZ2V0OiBFcnJvciBpbmplY3RpbmcgcmVzdW1lIGJ1dHRvbjogJHtlcnJvcn1gKTtcbiAgICAgICAgY29uc29sZS5lcnJvcihcIlRyaXBmdXNpb246IEVycm9yIGluamVjdGluZyByZXN1bWUgYnV0dG9uOiBcIiwgZXJyb3IpO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNsb3NlV2lkZ2V0KCkge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHdpZGdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFdJREdFVF9JRCksXG4gICAgICAgICAgICB3aWRnZXRXcmFwcGVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoV0lER0VUX1dSQVBQRVJfSUQpLFxuICAgICAgICAgICAgcmVzdW1lQnV0dG9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoUkVTVU1FX0JVVFRPTl9JRCk7XG5cbiAgICAgICAgaWYgKHdpZGdldCAmJiB3aWRnZXRXcmFwcGVyICYmIHJlc3VtZUJ1dHRvbikge1xuICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdyA9IFwiaW5pdGlhbFwiO1xuICAgICAgICAgICAgd2lkZ2V0LnNldEF0dHJpYnV0ZShcImNsYXNzXCIsIFwic2xpZGUtb3V0XCIpO1xuICAgICAgICAgICAgd2lkZ2V0V3JhcHBlci5zdHlsZS5iYWNrZ3JvdW5kID0gXCJyZ2JhKDAsIDAsIDAsIDApXCI7XG4gICAgICAgICAgICB3aWRnZXQuc3R5bGUuZGlzcGxheSA9IFwibm9uZVwiO1xuICAgICAgICAgICAgd2lkZ2V0V3JhcHBlci5zdHlsZS56SW5kZXggPSBgJHstMWUxMX1gO1xuICAgICAgICAgICAgcmVzdW1lQnV0dG9uLnNldEF0dHJpYnV0ZShcImNsYXNzXCIsIFwiZGlzbWlzcy1idG4tc2xpZGUtaW5cIik7XG4gICAgICAgICAgICByZXN1bWVCdXR0b24uZm9jdXMoKTtcbiAgICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGxvZ2dlcihgV2lkZ2V0OiBFcnJvciBjbG9zaW5nIHdpZGdldDogJHtlcnJvcn1gKTtcbiAgICAgICAgY29uc29sZS5lcnJvcihcIlRyaXBmdXNpb246IEVycm9yIGNsb3Npbmcgd2lkZ2V0OiBcIiwgZXJyb3IpO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdElmcmFtZSh7IGNvbmZpZywgYm9va2luZ0RhdGEgfTogV2lkZ2V0UHJvcHMpIHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCBpbm5lcldyYXBwZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChXSURHRVRfSU5ORVJfV1JBUFBFUl9JRCk7XG4gICAgICAgIGlmIChpbm5lcldyYXBwZXIpIHtcbiAgICAgICAgICAgIGNvbnN0IHdpZGdldElmcmFtZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJpZnJhbWVcIik7XG4gICAgICAgICAgICBsZXQgdXJsID0gYCR7VFJJUEZVU0lPTl9CQVNFX1VSTH0ke2NvbmZpZy5jbGllbnR9LyR7Y29uZmlnLnByb3BlcnR5SWR9YDtcbiAgICAgICAgICAgIGlmIChjb25maWcubW9kZSA9PT0gQk9PS0lOR19NT0RFLmFwcGVuZCAmJiBjb25maWcuYm9va2luZ0lkKSB7XG4gICAgICAgICAgICAgICAgdXJsICs9IGAvYm9va2luZy8ke2NvbmZpZy5ib29raW5nSWR9L2FwcGVuZGA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChib29raW5nRGF0YSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFkZGl0aW9uYWxQYXJhbXMgPSBPYmplY3QuZW50cmllcyhib29raW5nRGF0YSlcbiAgICAgICAgICAgICAgICAgICAgLmZpbHRlcigoW18sIHZhbHVlXSkgPT4gISF2YWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgLm1hcCgoW2tleSwgdmFsdWVdKSA9PiBgJHtrZXl9PSR7dmFsdWV9YC50b0xvd2VyQ2FzZSgpKVxuICAgICAgICAgICAgICAgICAgICAuam9pbihcIiZcIik7XG4gICAgICAgICAgICAgICAgaWYgKGFkZGl0aW9uYWxQYXJhbXMpIHtcbiAgICAgICAgICAgICAgICAgICAgdXJsICs9IGA/JHthZGRpdGlvbmFsUGFyYW1zfWA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB3aWRnZXRJZnJhbWUuc2V0QXR0cmlidXRlKFwic3JjXCIsIHVybCk7XG4gICAgICAgICAgICB3aWRnZXRJZnJhbWUuaWQgPSBXSURHRVRfSUZSQU1FX0lEO1xuICAgICAgICAgICAgaW5uZXJXcmFwcGVyLmFwcGVuZENoaWxkKHdpZGdldElmcmFtZSk7XG4gICAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBsb2dnZXIoYFdpZGdldDogRXJyb3IgaW5qZWN0aW5nIGlmcmFtZTogJHtlcnJvcn1gKTtcbiAgICAgICAgY29uc29sZS5lcnJvcihcIlRyaXBmdXNpb246IEVycm9yIGluamVjdGluZyBpZnJhbWU6IFwiLCBlcnJvcik7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbG9ja1BhZ2VTY3JvbGwoKSB7XG4gICAgZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdyA9IFwiaGlkZGVuXCI7XG59XG4iLCJcbiAgICAgIGltcG9ydCBBUEkgZnJvbSBcIiEuLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgIGltcG9ydCBkb21BUEkgZnJvbSBcIiEuLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZURvbUFQSS5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydEZuIGZyb20gXCIhLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0QnlTZWxlY3Rvci5qc1wiO1xuICAgICAgaW1wb3J0IHNldEF0dHJpYnV0ZXMgZnJvbSBcIiEuLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zZXRBdHRyaWJ1dGVzV2l0aG91dEF0dHJpYnV0ZXMuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRTdHlsZUVsZW1lbnQgZnJvbSBcIiEuLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRTdHlsZUVsZW1lbnQuanNcIjtcbiAgICAgIGltcG9ydCBzdHlsZVRhZ1RyYW5zZm9ybUZuIGZyb20gXCIhLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVUYWdUcmFuc2Zvcm0uanNcIjtcbiAgICAgIGltcG9ydCBjb250ZW50LCAqIGFzIG5hbWVkRXhwb3J0IGZyb20gXCIhIS4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vc3R5bGVzLmNzc1wiO1xuICAgICAgXG4gICAgICBcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5zdHlsZVRhZ1RyYW5zZm9ybSA9IHN0eWxlVGFnVHJhbnNmb3JtRm47XG5vcHRpb25zLnNldEF0dHJpYnV0ZXMgPSBzZXRBdHRyaWJ1dGVzO1xub3B0aW9ucy5pbnNlcnQgPSBpbnNlcnRGbi5iaW5kKG51bGwsIFwiaGVhZFwiKTtcbm9wdGlvbnMuZG9tQVBJID0gZG9tQVBJO1xub3B0aW9ucy5pbnNlcnRTdHlsZUVsZW1lbnQgPSBpbnNlcnRTdHlsZUVsZW1lbnQ7XG5cbnZhciB1cGRhdGUgPSBBUEkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgKiBmcm9tIFwiISEuLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL3N0eWxlcy5jc3NcIjtcbiAgICAgICBleHBvcnQgZGVmYXVsdCBjb250ZW50ICYmIGNvbnRlbnQubG9jYWxzID8gY29udGVudC5sb2NhbHMgOiB1bmRlZmluZWQ7XG4iLCIvKiBlc2xpbnQtZGlzYWJsZSBuby1jb25zb2xlICovXG5pbXBvcnQgdHlwZSB7IFdpZGdldFByb3BzIH0gZnJvbSBcIi4vaW5kZXgudHlwZXNcIjtcbmltcG9ydCB7XG4gICAgQk9PS0lOR19NT0RFLFxuICAgIExPQURFUl9JRCxcbiAgICBSRVNVTUVfQlVUVE9OX0lELFxuICAgIFNES19TQ1JJUFRfSUQsXG4gICAgV0lER0VUX0lELFxuICAgIFdJREdFVF9JRlJBTUVfSUQsXG4gICAgV0lER0VUX1dSQVBQRVJfSUQsXG59IGZyb20gXCIuL2NvbnN0XCI7XG5pbXBvcnQgeyBjbG9zZVdpZGdldCwgZGlzcGxheUxvYWRpbmdPdmVybGF5LCBpbmplY3RJZnJhbWUsIGluamVjdFJlc3VtZUJ1dHRvbiwgbG9ja1BhZ2VTY3JvbGwgfSBmcm9tIFwiLi9kb21cIjtcbmltcG9ydCBcIi4vc3R5bGVzLmNzc1wiO1xuaW1wb3J0IHsgZ2V0UGFyYW1zRnJvbVVybCwgbG9nZ2VyIH0gZnJvbSBcIi4vdXRpbHNcIjtcblxubGV0IGNsaWVudDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5sZXQgcHJvcGVydHlJZDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG5sZXQgYm9va2luZ0NvbnRleHQ6IFdpZGdldFByb3BzIHwgbnVsbCA9IG51bGw7XG5sZXQgaXNJZnJhbWVSZWFkeSA9IGZhbHNlO1xuXG5mdW5jdGlvbiBhZGRMaW5rRXZlbnRMaXN0ZW5lcnMoKSB7XG4gICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcImFcIikuZm9yRWFjaCgobGlua0VsZW1lbnQpID0+IHtcbiAgICAgICAgbGlua0VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGhhbmRsZUxpbmtDbGljayk7XG4gICAgfSk7XG59XG5cbmZ1bmN0aW9uIGhhbmRsZUxpbmtDbGljayhldmVudDogYW55KSB7XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0O1xuXG4gICAgICAgIC8vIEVuc3VyZSB0aGUgZXZlbnQgdGFyZ2V0IGhhcyBhIHZhbGlkIGhyZWZcbiAgICAgICAgaWYgKHRhcmdldC50YWdOYW1lICE9PSBcIkFcIiAmJiB0YXJnZXQucGFyZW50Tm9kZT8udGFnTmFtZSA9PT0gXCJBXCIpIHtcbiAgICAgICAgICAgIHRhcmdldC5ocmVmID0gdGFyZ2V0LnBhcmVudE5vZGUuaHJlZjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGxpbmtIcmVmID0gdGFyZ2V0LmhyZWYgfHwgXCJcIjtcbiAgICAgICAgaWYgKCFsaW5rSHJlZi5pbmNsdWRlcyhcIj9cIikpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHVybFBhcmFtcyA9IGdldFBhcmFtc0Zyb21VcmwobmV3IFVSTFNlYXJjaFBhcmFtcyhsaW5rSHJlZi5zdWJzdHJpbmcobGlua0hyZWYuaW5kZXhPZihcIj9cIikpKSk7XG5cbiAgICAgICAgaWYgKHVybFBhcmFtcy50cmlwZnVzaW9uID09PSBcInRydWVcIikge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGJvb2soe1xuICAgICAgICAgICAgICAgIGNvbmZpZzoge1xuICAgICAgICAgICAgICAgICAgICBjbGllbnQ6IHVybFBhcmFtcy5jbGllbnQgPz8gY2xpZW50LFxuICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eUlkOiB1cmxQYXJhbXMucHJvcGVydHlJZCA/ICt1cmxQYXJhbXMucHJvcGVydHlJZCA6IChwcm9wZXJ0eUlkIGFzIG51bWJlciksXG4gICAgICAgICAgICAgICAgICAgIG1vZGU6IHVybFBhcmFtcy5tb2RlID09PSBCT09LSU5HX01PREUuYXBwZW5kID8gQk9PS0lOR19NT0RFLmFwcGVuZCA6IEJPT0tJTkdfTU9ERS5ub3JtYWwsXG4gICAgICAgICAgICAgICAgICAgIGJvb2tpbmdJZDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybFBhcmFtcz8uYm9va2luZ0lkICYmIHVybFBhcmFtcz8ubW9kZSA9PT0gQk9PS0lOR19NT0RFLmFwcGVuZCA/ICt1cmxQYXJhbXMuYm9va2luZ0lkIDogbnVsbCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGJvb2tpbmdEYXRhOiB7XG4gICAgICAgICAgICAgICAgICAgIG9mZmVySWQ6IHVybFBhcmFtcy5vZmZlcklkID8gK3VybFBhcmFtcy5vZmZlcklkIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICBjaGVja0luOiB1cmxQYXJhbXMuY2hlY2tJbixcbiAgICAgICAgICAgICAgICAgICAgY2hlY2tPdXQ6IHVybFBhcmFtcy5jaGVja091dCxcbiAgICAgICAgICAgICAgICAgICAgYWR1bHRzOiB1cmxQYXJhbXMuYWR1bHRzID8gK3VybFBhcmFtcy5hZHVsdHMgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuOiB1cmxQYXJhbXMuY2hpbGRyZW4gPyB1cmxQYXJhbXMuY2hpbGRyZW4uc3BsaXQoXCIsXCIpLm1hcCgoYWdlKSA9PiArYWdlKSA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBsb2dnZXIoYFdpZGdldDogRXJyb3IgaW4gbGluayBjbGljayBoYW5kbGVyOiAke2Vycm9yfWApO1xuICAgICAgICBjb25zb2xlLmVycm9yKFwiVHJpcGZ1c2lvbjogRXJyb3IgaW4gbGluayBjbGljayBoYW5kbGVyOiBcIiwgZXJyb3IpO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gYWRkUGFnZUxvYWRMaXN0ZW5lcigpIHtcbiAgICBpZiAoZG9jdW1lbnQucmVhZHlTdGF0ZSA9PT0gXCJjb21wbGV0ZVwiKSB7XG4gICAgICAgIG9uTG9hZEhhbmRsZXIoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcImxvYWRcIiwgb25Mb2FkSGFuZGxlcik7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBvbkxvYWRIYW5kbGVyKCkge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBjb25zdCB1cmxQYXJhbXMgPSBnZXRQYXJhbXNGcm9tVXJsKG5ldyBVUkxTZWFyY2hQYXJhbXMod2luZG93LmxvY2F0aW9uLnNlYXJjaCkpO1xuICAgICAgICBpZiAodXJsUGFyYW1zLnRyaXBmdXNpb24gPT09IFwidHJ1ZVwiICYmIChjbGllbnQgfHwgdXJsUGFyYW1zLmNsaWVudCkgJiYgKHByb3BlcnR5SWQgfHwgdXJsUGFyYW1zLnByb3BlcnR5SWQpKSB7XG4gICAgICAgICAgICBib29rKHtcbiAgICAgICAgICAgICAgICBjb25maWc6IHtcbiAgICAgICAgICAgICAgICAgICAgY2xpZW50OiB1cmxQYXJhbXMuY2xpZW50ID8/IGNsaWVudCxcbiAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlJZDogdXJsUGFyYW1zLnByb3BlcnR5SWQgPyArdXJsUGFyYW1zLnByb3BlcnR5SWQgOiAocHJvcGVydHlJZCBhcyBudW1iZXIpLFxuICAgICAgICAgICAgICAgICAgICBtb2RlOiB1cmxQYXJhbXMubW9kZSA9PT0gQk9PS0lOR19NT0RFLmFwcGVuZCA/IEJPT0tJTkdfTU9ERS5hcHBlbmQgOiBCT09LSU5HX01PREUubm9ybWFsLFxuICAgICAgICAgICAgICAgICAgICBib29raW5nSWQ6XG4gICAgICAgICAgICAgICAgICAgICAgICB1cmxQYXJhbXM/LmJvb2tpbmdJZCAmJiB1cmxQYXJhbXM/Lm1vZGUgPT09IEJPT0tJTkdfTU9ERS5hcHBlbmQgPyArdXJsUGFyYW1zLmJvb2tpbmdJZCA6IG51bGwsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBib29raW5nRGF0YToge1xuICAgICAgICAgICAgICAgICAgICBvZmZlcklkOiB1cmxQYXJhbXMub2ZmZXJJZCA/ICt1cmxQYXJhbXMub2ZmZXJJZCA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgY2hlY2tJbjogdXJsUGFyYW1zLmNoZWNrSW4sXG4gICAgICAgICAgICAgICAgICAgIGNoZWNrT3V0OiB1cmxQYXJhbXMuY2hlY2tPdXQsXG4gICAgICAgICAgICAgICAgICAgIGFkdWx0czogdXJsUGFyYW1zLmFkdWx0cyA/ICt1cmxQYXJhbXMuYWR1bHRzIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbjogdXJsUGFyYW1zLmNoaWxkcmVuID8gdXJsUGFyYW1zLmNoaWxkcmVuLnNwbGl0KFwiLFwiKS5tYXAoKGFnZSkgPT4gK2FnZSkgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfSwgNTAwKTtcbn1cblxuZnVuY3Rpb24gaW5pdFJlc3VtZVdpZGdldCgpIHtcbiAgICBjb25zdCBjaGVja0lmRG9jdW1lbnRMb2FkZWRJbnRlcnZhbCA9IHNldEludGVydmFsKCgpID0+IHtcbiAgICAgICAgaWYgKGRvY3VtZW50LnJlYWR5U3RhdGUgPT09IFwiY29tcGxldGVcIikge1xuICAgICAgICAgICAgaW5qZWN0UmVzdW1lQnV0dG9uKCk7XG4gICAgICAgICAgICBhZGRMaW5rRXZlbnRMaXN0ZW5lcnMoKTtcblxuICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja0lmRG9jdW1lbnRMb2FkZWRJbnRlcnZhbCk7XG4gICAgICAgIH1cbiAgICB9LCAxMDApO1xuICAgIGFkZFBhZ2VMb2FkTGlzdGVuZXIoKTtcbn1cblxuZnVuY3Rpb24gYm9vayhwcm9wcz86IFBhcnRpYWw8V2lkZ2V0UHJvcHM+KSB7XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3Qgd2lkZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoV0lER0VUX0lEKSBhcyBIVE1MRWxlbWVudCxcbiAgICAgICAgICAgIHdpZGdldFdyYXBwZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChXSURHRVRfV1JBUFBFUl9JRCkgYXMgSFRNTEVsZW1lbnQsXG4gICAgICAgICAgICByZXN1bWVXaWRnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChSRVNVTUVfQlVUVE9OX0lEKSBhcyBIVE1MRWxlbWVudCxcbiAgICAgICAgICAgIHJlc3VtZVdpZGdldENsYXNzID0gcmVzdW1lV2lkZ2V0ID8gcmVzdW1lV2lkZ2V0LmdldEF0dHJpYnV0ZShcImNsYXNzXCIpIDogbnVsbDtcblxuICAgICAgICBpZiAocmVzdW1lV2lkZ2V0Q2xhc3M/LmluY2x1ZGVzKFwiZGlzbWlzcy1idG5cIikpIHtcbiAgICAgICAgICAgIHJlc3VtZVdpZGdldC5zZXRBdHRyaWJ1dGUoXCJjbGFzc1wiLCBcImRpc21pc3MtYnRuLXNsaWRlLW91dFwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGlmcmFtZUNvbmZpZyA9IHtcbiAgICAgICAgICAgIC4uLnByb3BzLFxuICAgICAgICAgICAgY29uZmlnOiB7XG4gICAgICAgICAgICAgICAgLi4ucHJvcHM/LmNvbmZpZyxcbiAgICAgICAgICAgICAgICBjbGllbnQ6IHByb3BzPy5jb25maWc/LmNsaWVudCA/PyAoY2xpZW50IGFzIHN0cmluZyksXG4gICAgICAgICAgICAgICAgcHJvcGVydHlJZDogcHJvcHM/LmNvbmZpZz8ucHJvcGVydHlJZCA/PyAocHJvcGVydHlJZCBhcyBudW1iZXIpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfTtcblxuICAgICAgICBpZiAoSlNPTi5zdHJpbmdpZnkoYm9va2luZ0NvbnRleHQpICE9PSBKU09OLnN0cmluZ2lmeShpZnJhbWVDb25maWcpKSB7XG4gICAgICAgICAgICBpc0lmcmFtZVJlYWR5ID0gZmFsc2U7XG5cbiAgICAgICAgICAgIGRpc3BsYXlMb2FkaW5nT3ZlcmxheSgpO1xuXG4gICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChXSURHRVRfSUZSQU1FX0lEKT8ucmVtb3ZlKCk7XG4gICAgICAgICAgICBpbmplY3RJZnJhbWUoaWZyYW1lQ29uZmlnKTtcbiAgICAgICAgICAgIGJvb2tpbmdDb250ZXh0ID0gaWZyYW1lQ29uZmlnO1xuXG4gICAgICAgICAgICBjb25zdCByZXN1bWVCdXR0b24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChSRVNVTUVfQlVUVE9OX0lEKTtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VtZUJ1dHRvblRleHQgPSByZXN1bWVCdXR0b24/LnF1ZXJ5U2VsZWN0b3IoXCJzcGFuXCIpO1xuICAgICAgICAgICAgaWYgKHJlc3VtZUJ1dHRvblRleHQpIHtcbiAgICAgICAgICAgICAgICByZXN1bWVCdXR0b25UZXh0LmlubmVySFRNTCA9IFwiQ29tcGxldGUgeW91ciBib29raW5nXCI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gQ2hlY2sgaWYgSWZyYW1lIGlzIGxvYWRlZFxuICAgICAgICBjb25zdCBpbnRlcnZhbElkID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKCFpc0lmcmFtZVJlYWR5KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChMT0FERVJfSUQpPy5yZW1vdmUoKTtcbiAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoaW50ZXJ2YWxJZCk7XG5cbiAgICAgICAgICAgIC8vIERpc3BsYXkgd2lkZ2V0IGFuZCB1cGRhdGUgc3R5bGVzXG4gICAgICAgICAgICBpZiAod2lkZ2V0LnN0eWxlLmRpc3BsYXkgPT09IFwibm9uZVwiKSB7XG4gICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbih3aWRnZXRXcmFwcGVyLnN0eWxlLCB7XG4gICAgICAgICAgICAgICAgICAgIHpJbmRleDogMTAwMDAwMDAwMDAxMSxcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBcIjEwMCVcIixcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZDogXCJyZ2JhKDAsIDAsIDAsIC40KVwiLFxuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgbG9ja1BhZ2VTY3JvbGwoKTtcblxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB3aWRnZXQuc3R5bGUuZGlzcGxheSA9IFwiYmxvY2tcIjtcbiAgICAgICAgICAgICAgICAgICAgd2lkZ2V0LnNldEF0dHJpYnV0ZShcImNsYXNzXCIsIFwic2xpZGUtaW5cIik7XG4gICAgICAgICAgICAgICAgfSwgMjApO1xuXG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHdpZGdldElmcmFtZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFdJREdFVF9JRlJBTUVfSUQpO1xuICAgICAgICAgICAgICAgICAgICB3aWRnZXRJZnJhbWU/LmZvY3VzKCk7XG4gICAgICAgICAgICAgICAgfSwgMjUwKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gUmVzdW1lIGJ1dHRvbiBjbGljayBoYW5kbGVyXG4gICAgICAgICAgICBjb25zdCByZXN1bWVCdXR0b24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChSRVNVTUVfQlVUVE9OX0lEKTtcbiAgICAgICAgICAgIHJlc3VtZUJ1dHRvbj8uYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsICgpID0+IHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByZXN1bWVCdXR0b25DbGFzcyA9IHJlc3VtZUJ1dHRvbi5nZXRBdHRyaWJ1dGUoXCJjbGFzc1wiKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzdW1lQnV0dG9uQ2xhc3M/LmluY2x1ZGVzKFwiZGlzbWlzcy1idG5cIikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VtZUJ1dHRvbi5zZXRBdHRyaWJ1dGUoXCJjbGFzc1wiLCBcImRpc21pc3MtYnRuLXNsaWRlLW91dFwiKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24od2lkZ2V0V3JhcHBlci5zdHlsZSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgekluZGV4OiAxMDAwMDAwMDAwMDExLFxuICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBcIjEwMCVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IFwicmdiYSgwLCAwLCAwLCAuNSlcIixcbiAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdyA9IFwiaGlkZGVuXCI7XG4gICAgICAgICAgICAgICAgICAgIHdpZGdldC5zdHlsZS5kaXNwbGF5ID0gXCJibG9ja1wiO1xuICAgICAgICAgICAgICAgICAgICB3aWRnZXQuc2V0QXR0cmlidXRlKFwiY2xhc3NcIiwgXCJzbGlkZS1pblwiKTtcblxuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHdpZGdldElmcmFtZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFdJREdFVF9JRlJBTUVfSUQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgd2lkZ2V0SWZyYW1lPy5mb2N1cygpO1xuICAgICAgICAgICAgICAgICAgICB9LCA1MDApO1xuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgIGxvZ2dlcihgV2lkZ2V0OiByZXN1bWUgYnV0dG9uIGVycm9yOiAke2Vycm9yfWApO1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiVHJpcGZ1c2lvbjogcmVzdW1lIGJ1dHRvbiBlcnJvclwiLCBlcnJvcik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sIDEwMCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgbG9nZ2VyKGBXaWRnZXQ6IGZhaWxlZCB0byBib29rOiAke2Vycm9yfWApO1xuICAgICAgICBjb25zb2xlLmVycm9yKGBUcmlwZnVzaW9uOiBmYWlsZWQgdG8gYm9vazogJHtlcnJvcn1gKTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGluaXRUcmlwZnVzaW9uU2RrKCkge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGpzU2RrID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoU0RLX1NDUklQVF9JRCkgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IGpzU2RrU3JjID0ganNTZGsuZ2V0QXR0cmlidXRlKFwic3JjXCIpIGFzIHN0cmluZztcbiAgICAgICAgY29uc3QgdXJsUGFyYW1zID0gZ2V0UGFyYW1zRnJvbVVybChuZXcgVVJMU2VhcmNoUGFyYW1zKGpzU2RrU3JjLnN1YnN0cmluZyhqc1Nka1NyYy5pbmRleE9mKFwiP1wiKSkpKTtcblxuICAgICAgICBjbGllbnQgPSB1cmxQYXJhbXNbXCJjbGllbnRcIl0gPz8gbnVsbDtcbiAgICAgICAgcHJvcGVydHlJZCA9IHVybFBhcmFtc1tcInByb3BlcnR5SWRcIl0gPyArdXJsUGFyYW1zW1wicHJvcGVydHlJZFwiXSA6IG51bGw7XG5cbiAgICAgICAgaWYgKCFjbGllbnQgfHwgIXByb3BlcnR5SWQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIighKSBUcmlwZnVzaW9uOiBjbGllbnQgYW5kIHByb3BlcnR5SWQgYXJlIHJlcXVpcmVkLlwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGluaXRSZXN1bWVXaWRnZXQoKTtcbiAgICAgICAgT2JqZWN0LmFzc2lnbih3aW5kb3csIHsgYm9vaywgY2xvc2VXaWRnZXQgfSk7XG4gICAgICAgIHdpbmRvdy5vbm1lc3NhZ2UgPSBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgc3dpdGNoIChlLmRhdGEpIHtcbiAgICAgICAgICAgICAgICBjYXNlIFwidHJpcGZ1c2lvbi13aWRnZXQtcmVhZHlcIjoge1xuICAgICAgICAgICAgICAgICAgICBpc0lmcmFtZVJlYWR5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhc2UgXCJ0cmlwZnVzaW9uLWJvb2tpbmctY29tcGxldGVkXCI6IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzdW1lQnV0dG9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoUkVTVU1FX0JVVFRPTl9JRCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VtZUJ1dHRvblRleHQgPSByZXN1bWVCdXR0b24/LnF1ZXJ5U2VsZWN0b3IoXCJzcGFuXCIpO1xuICAgICAgICAgICAgICAgICAgICBpZiAocmVzdW1lQnV0dG9uVGV4dCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdW1lQnV0dG9uVGV4dC5pbm5lckhUTUwgPSBcIkJvb2tpbmcgY29tcGxldGVkIVwiO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBsb2dnZXIoYFdpZGdldDogZmFpbGVkIHRvIGluaXQgVHJpcGZ1c2lvbiBKUyBTREs6ICR7ZXJyb3J9YCk7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoYFRyaXBmdXNpb246IGZhaWxlZCB0byBpbml0IFNESzogJHtlcnJvcn1gKTtcbiAgICB9XG59XG5cbmluaXRUcmlwZnVzaW9uU2RrKCk7XG4iXSwibmFtZXMiOlsiX19fQ1NTX0xPQURFUl9FWFBPUlRfX18iLCJwdXNoIiwibW9kdWxlIiwiaWQiLCJleHBvcnRzIiwiY3NzV2l0aE1hcHBpbmdUb1N0cmluZyIsImxpc3QiLCJ0b1N0cmluZyIsInRoaXMiLCJtYXAiLCJpdGVtIiwiY29udGVudCIsIm5lZWRMYXllciIsImNvbmNhdCIsImxlbmd0aCIsImpvaW4iLCJpIiwibW9kdWxlcyIsIm1lZGlhIiwiZGVkdXBlIiwic3VwcG9ydHMiLCJsYXllciIsInVuZGVmaW5lZCIsImFscmVhZHlJbXBvcnRlZE1vZHVsZXMiLCJrIiwiX2siLCJjc3NNYXBwaW5nIiwiYnRvYSIsImJhc2U2NCIsInVuZXNjYXBlIiwiZW5jb2RlVVJJQ29tcG9uZW50IiwiSlNPTiIsInN0cmluZ2lmeSIsImRhdGEiLCJzb3VyY2VNYXBwaW5nIiwic3R5bGVzSW5ET00iLCJnZXRJbmRleEJ5SWRlbnRpZmllciIsImlkZW50aWZpZXIiLCJyZXN1bHQiLCJtb2R1bGVzVG9Eb20iLCJvcHRpb25zIiwiaWRDb3VudE1hcCIsImlkZW50aWZpZXJzIiwiYmFzZSIsImNvdW50IiwiaW5kZXhCeUlkZW50aWZpZXIiLCJvYmoiLCJjc3MiLCJzb3VyY2VNYXAiLCJyZWZlcmVuY2VzIiwidXBkYXRlciIsImFkZEVsZW1lbnRTdHlsZSIsImJ5SW5kZXgiLCJzcGxpY2UiLCJhcGkiLCJkb21BUEkiLCJ1cGRhdGUiLCJuZXdPYmoiLCJyZW1vdmUiLCJsYXN0SWRlbnRpZmllcnMiLCJuZXdMaXN0IiwiaW5kZXgiLCJuZXdMYXN0SWRlbnRpZmllcnMiLCJfaSIsIl9pbmRleCIsIm1lbW8iLCJpbnNlcnQiLCJzdHlsZSIsInRhcmdldCIsInN0eWxlVGFyZ2V0IiwiZG9jdW1lbnQiLCJxdWVyeVNlbGVjdG9yIiwid2luZG93IiwiSFRNTElGcmFtZUVsZW1lbnQiLCJjb250ZW50RG9jdW1lbnQiLCJoZWFkIiwiZSIsImdldFRhcmdldCIsIkVycm9yIiwiYXBwZW5kQ2hpbGQiLCJlbGVtZW50IiwiY3JlYXRlRWxlbWVudCIsInNldEF0dHJpYnV0ZXMiLCJhdHRyaWJ1dGVzIiwic3R5bGVFbGVtZW50Iiwibm9uY2UiLCJzZXRBdHRyaWJ1dGUiLCJpbnNlcnRTdHlsZUVsZW1lbnQiLCJzdHlsZVRhZ1RyYW5zZm9ybSIsImFwcGx5IiwicGFyZW50Tm9kZSIsInJlbW92ZUNoaWxkIiwicmVtb3ZlU3R5bGVFbGVtZW50Iiwic3R5bGVTaGVldCIsImNzc1RleHQiLCJmaXJzdENoaWxkIiwiY3JlYXRlVGV4dE5vZGUiLCJfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18iLCJfX3dlYnBhY2tfcmVxdWlyZV9fIiwibW9kdWxlSWQiLCJjYWNoZWRNb2R1bGUiLCJfX3dlYnBhY2tfbW9kdWxlc19fIiwibiIsImdldHRlciIsIl9fZXNNb2R1bGUiLCJkIiwiYSIsImRlZmluaXRpb24iLCJrZXkiLCJvIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJlbnVtZXJhYmxlIiwiZ2V0IiwicHJvcCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIm5jIiwiVFJJUEZVU0lPTl9CQVNFX1VSTCIsIldJREdFVF9JRCIsIldJREdFVF9JTk5FUl9XUkFQUEVSX0lEIiwiV0lER0VUX1dSQVBQRVJfSUQiLCJXSURHRVRfSUZSQU1FX0lEIiwiUkVTVU1FX0JVVFRPTl9JRCIsIkxPQURFUl9JRCIsIkJPT0tJTkdfTU9ERSIsImdldFBhcmFtc0Zyb21VcmwiLCJ1cmxTZWFyY2hQYXJhbXMiLCJhdmFpbGFibGVTZWFyY2hQYXJhbXNNYXAiLCJ0cmlwZnVzaW9uIiwiY2xpZW50IiwicHJvcGVydHlpZCIsIm1vZGUiLCJvZmZlcmlkIiwiYm9va2luZ2lkIiwiY2hlY2tpbiIsImNoZWNrb3V0IiwiYWR1bHRzIiwiY2hpbGRyZW4iLCJBcnJheSIsImZyb20iLCJlbnRyaWVzIiwicmVkdWNlIiwicHJldiIsInNlYXJjaFBhcmFtS2V5Iiwic2VhcmNoUGFyYW1WYWx1ZSIsInRvTG93ZXJDYXNlIiwibG9nZ2VyIiwibWVzc2FnZSIsInR5cGUiLCJ1cmwiLCJwYXlsb2FkIiwicGFnZSIsImxvY2F0aW9uIiwiaHJlZiIsImhlYWRlcnMiLCJmZXRjaCIsIm1ldGhvZCIsImJvZHkiLCJ0aGVuIiwicmVzcG9uc2UiLCJqc29uIiwiY2F0Y2giLCJlcnJvciIsImNvbnNvbGUiLCJsb2ciLCJjbG9zZVdpZGdldCIsIndpZGdldCIsImdldEVsZW1lbnRCeUlkIiwid2lkZ2V0V3JhcHBlciIsInJlc3VtZUJ1dHRvbiIsIm92ZXJmbG93IiwiYmFja2dyb3VuZCIsImRpc3BsYXkiLCJ6SW5kZXgiLCJmb2N1cyIsImxvY2tQYWdlU2Nyb2xsIiwibG9jYWxzIiwicHJvcGVydHlJZCIsImJvb2tpbmdDb250ZXh0IiwiaXNJZnJhbWVSZWFkeSIsImhhbmRsZUxpbmtDbGljayIsImV2ZW50IiwidGFnTmFtZSIsImxpbmtIcmVmIiwiaW5jbHVkZXMiLCJ1cmxQYXJhbXMiLCJVUkxTZWFyY2hQYXJhbXMiLCJzdWJzdHJpbmciLCJpbmRleE9mIiwicHJldmVudERlZmF1bHQiLCJib29rIiwiY29uZmlnIiwiYm9va2luZ0lkIiwiYm9va2luZ0RhdGEiLCJvZmZlcklkIiwiY2hlY2tJbiIsImNoZWNrT3V0Iiwic3BsaXQiLCJhZ2UiLCJvbkxvYWRIYW5kbGVyIiwic2V0VGltZW91dCIsInNlYXJjaCIsInByb3BzIiwicmVzdW1lV2lkZ2V0IiwicmVzdW1lV2lkZ2V0Q2xhc3MiLCJnZXRBdHRyaWJ1dGUiLCJpZnJhbWVDb25maWciLCJsb2FkaW5nRGl2IiwiaW5uZXJIVE1MIiwiaGVpZ2h0IiwiZGlzcGxheUxvYWRpbmdPdmVybGF5IiwiaW5uZXJXcmFwcGVyIiwid2lkZ2V0SWZyYW1lIiwiYWRkaXRpb25hbFBhcmFtcyIsImZpbHRlciIsInZhbHVlIiwiaW5qZWN0SWZyYW1lIiwicmVzdW1lQnV0dG9uVGV4dCIsInNldEludGVydmFsIiwiY2xlYXJJbnRlcnZhbCIsImFzc2lnbiIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZXN1bWVCdXR0b25DbGFzcyIsImNoZWNrSWZEb2N1bWVudExvYWRlZEludGVydmFsIiwianNTZGtTcmMiLCJyZWFkeVN0YXRlIiwid2lkZ2V0SW5uZXJXcmFwcGVyIiwid2lkZ2V0SGVhZGVyIiwid2lkZ2V0SGVhZGVyVGl0bGUiLCJ3aWRnZXRDbG9zZUJ1dHRvbiIsImluamVjdFJlc3VtZUJ1dHRvbiIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJmb3JFYWNoIiwibGlua0VsZW1lbnQiLCJvbm1lc3NhZ2UiLCJpbml0VHJpcGZ1c2lvblNkayJdLCJzb3VyY2VSb290IjoiIn0=
|
|
1
|
+
/******/ (() => { // webpackBootstrap
|
|
2
|
+
/******/ "use strict";
|
|
3
|
+
/******/ var __webpack_modules__ = ({
|
|
4
|
+
|
|
5
|
+
/***/ "./node_modules/css-loader/dist/cjs.js!./src/styles.css":
|
|
6
|
+
/*!**************************************************************!*\
|
|
7
|
+
!*** ./node_modules/css-loader/dist/cjs.js!./src/styles.css ***!
|
|
8
|
+
\**************************************************************/
|
|
9
|
+
/***/ ((module, __webpack_exports__, __webpack_require__) => {
|
|
10
|
+
|
|
11
|
+
__webpack_require__.r(__webpack_exports__);
|
|
12
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
13
|
+
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
14
|
+
/* harmony export */ });
|
|
15
|
+
/* harmony import */ var _node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");
|
|
16
|
+
/* harmony import */ var _node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);
|
|
17
|
+
/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");
|
|
18
|
+
/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);
|
|
19
|
+
// Imports
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));
|
|
23
|
+
___CSS_LOADER_EXPORT___.push([module.id, "@import url(https://use.typekit.net/sag8ceb.css);"]);
|
|
24
|
+
// Module
|
|
25
|
+
___CSS_LOADER_EXPORT___.push([module.id, `#tripfusion-loader {
|
|
26
|
+
color: white;
|
|
27
|
+
margin-right: -50%;
|
|
28
|
+
position: absolute;
|
|
29
|
+
top: 50%;
|
|
30
|
+
left: 50%;
|
|
31
|
+
font-family: futura-lt-w01-book, futura-lt-w05-book, Arial, Helvetica, sans-serif;
|
|
32
|
+
transform: translate(-50%, -50%);
|
|
33
|
+
}
|
|
34
|
+
#tripfusion-loader span {
|
|
35
|
+
font-weight: bold;
|
|
36
|
+
font-size: 1.3rem;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
#tripfusion-resume-button {
|
|
40
|
+
position: fixed;
|
|
41
|
+
overflow: hidden;
|
|
42
|
+
cursor: pointer;
|
|
43
|
+
display: flex;
|
|
44
|
+
justify-content: space-evenly;
|
|
45
|
+
align-items: center;
|
|
46
|
+
padding: 12px 32px;
|
|
47
|
+
box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.25), 0px 4px 4px rgba(0, 0, 0, 0.1);
|
|
48
|
+
right: 30px;
|
|
49
|
+
z-index: 100000000000;
|
|
50
|
+
bottom: 40px;
|
|
51
|
+
border: none;
|
|
52
|
+
transform: translateX(400px);
|
|
53
|
+
background-color: #092b43;
|
|
54
|
+
border-radius: 23px;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
#tripfusion-resume-button span {
|
|
58
|
+
display: block !important;
|
|
59
|
+
font-family: sweet-sans-pro, sans-serif;
|
|
60
|
+
font-size: 1rem;
|
|
61
|
+
font-weight: 700;
|
|
62
|
+
line-height: 1.2;
|
|
63
|
+
letter-spacing: 1.5px;
|
|
64
|
+
text-transform: uppercase !important;
|
|
65
|
+
color: white !important;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
#tripfusion-widget-wrapper {
|
|
69
|
+
background: rgba(0, 0, 0, 0);
|
|
70
|
+
position: fixed;
|
|
71
|
+
top: 0;
|
|
72
|
+
right: 0;
|
|
73
|
+
width: 100%;
|
|
74
|
+
transition: background 0.5s ease-out;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
#tripfusion-widget {
|
|
78
|
+
position: absolute;
|
|
79
|
+
width: 100%;
|
|
80
|
+
height: 100%;
|
|
81
|
+
top: 0px;
|
|
82
|
+
right: 0px;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
#tripfusion-widget-inner-wrapper {
|
|
86
|
+
position: fixed;
|
|
87
|
+
display: flex;
|
|
88
|
+
flex-direction: column;
|
|
89
|
+
min-width: 320px;
|
|
90
|
+
width: 100%;
|
|
91
|
+
height: 100%;
|
|
92
|
+
right: 0px;
|
|
93
|
+
bottom: 0px;
|
|
94
|
+
background: white;
|
|
95
|
+
border-radius: 8px;
|
|
96
|
+
box-shadow: 0 2px 10px 0 rgba(0, 0, 0, 0.2);
|
|
97
|
+
font-family: "Roboto", "Helvetica", "Arial", sans-serif;
|
|
98
|
+
font-weight: 400;
|
|
99
|
+
font-size: 1rem;
|
|
100
|
+
line-height: 1.5;
|
|
101
|
+
letter-spacing: 0.00938em;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
@media (min-width: 768px) {
|
|
105
|
+
#tripfusion-widget-inner-wrapper {
|
|
106
|
+
height: calc(100% - 40px);
|
|
107
|
+
right: 20px;
|
|
108
|
+
bottom: 20px;
|
|
109
|
+
width: 500px;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
#tripfusion-widget-header {
|
|
114
|
+
height: 60px;
|
|
115
|
+
background-color: #092b43;
|
|
116
|
+
border-bottom: 1px solid #f1f1f1;
|
|
117
|
+
padding: 0 16px 0 16px;
|
|
118
|
+
display: flex;
|
|
119
|
+
justify-content: space-between;
|
|
120
|
+
align-items: center;
|
|
121
|
+
color: white;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
#tripfusion-widget-iframe {
|
|
125
|
+
height: 100%;
|
|
126
|
+
border: none;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
#tripfusion-widget-header-title {
|
|
130
|
+
font-family: sweet-sans-pro, sans-serif;
|
|
131
|
+
line-height: 1.2;
|
|
132
|
+
font-weight: 700;
|
|
133
|
+
font-size: 1rem;
|
|
134
|
+
letter-spacing: 1.5px;
|
|
135
|
+
text-transform: uppercase;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
#tripfusion-widget-close-button {
|
|
139
|
+
overflow: hidden;
|
|
140
|
+
position: relative;
|
|
141
|
+
border: none;
|
|
142
|
+
padding: 0;
|
|
143
|
+
width: 2em;
|
|
144
|
+
height: 2em;
|
|
145
|
+
border-radius: 50%;
|
|
146
|
+
background: transparent;
|
|
147
|
+
font: inherit;
|
|
148
|
+
text-indent: 100%;
|
|
149
|
+
cursor: pointer;
|
|
150
|
+
|
|
151
|
+
&:focus {
|
|
152
|
+
outline: solid 0 transparent;
|
|
153
|
+
background-color: rgba(0, 0, 0, 0.04);
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
&:hover {
|
|
157
|
+
background-color: rgba(0, 0, 0, 0.04);
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
&:before,
|
|
161
|
+
&:after {
|
|
162
|
+
position: absolute;
|
|
163
|
+
top: 25%;
|
|
164
|
+
left: calc(50% - 0.0625em);
|
|
165
|
+
width: 0.125em;
|
|
166
|
+
height: 50%;
|
|
167
|
+
border-radius: 0.125em;
|
|
168
|
+
transform: rotate(45deg);
|
|
169
|
+
background: currentcolor;
|
|
170
|
+
color: white;
|
|
171
|
+
content: "";
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
&:after {
|
|
175
|
+
transform: rotate(-45deg);
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
.dismiss-btn-slide-in {
|
|
180
|
+
-webkit-transition: 500ms;
|
|
181
|
+
-moz-transition: 500ms;
|
|
182
|
+
transition: 500ms;
|
|
183
|
+
transform: translateX(0) !important;
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
.dismiss-btn-slide-out {
|
|
187
|
+
-webkit-transition: 500ms;
|
|
188
|
+
-moz-transition: 500ms;
|
|
189
|
+
transition: 500ms;
|
|
190
|
+
transform: translateX(400px) !important;
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
.dismiss-btn-slide-out span {
|
|
194
|
+
display: none;
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
.dismiss-btn-resize-in {
|
|
198
|
+
width: 46px !important;
|
|
199
|
+
height: 46px !important;
|
|
200
|
+
transition: 500ms;
|
|
201
|
+
right: 30px !important;
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
.dismiss-btn-resize-in span {
|
|
205
|
+
display: none;
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
.dismiss-btn-resize-in:hover {
|
|
209
|
+
width: 217px !important;
|
|
210
|
+
height: 46px !important;
|
|
211
|
+
transition: all 300ms linear;
|
|
212
|
+
cursor: pointer;
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
.dismiss-btn-resize-in:hover span {
|
|
216
|
+
display: inline;
|
|
217
|
+
height: 20px !important;
|
|
218
|
+
overflow: hidden;
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
.dismiss-btn-resize-out {
|
|
222
|
+
width: 46px !important;
|
|
223
|
+
height: 46px !important;
|
|
224
|
+
transition: 500ms;
|
|
225
|
+
right: -100px !important;
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
.slide-in {
|
|
229
|
+
transform: translateX(100%);
|
|
230
|
+
-webkit-transform: translateX(100%);
|
|
231
|
+
animation: slide-in 0.8s forwards !important;
|
|
232
|
+
-webkit-animation: slide-in 0.8s forwards !important;
|
|
233
|
+
z-index: 1000000000000;
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
.slide-out {
|
|
237
|
+
transform: translateX(100%);
|
|
238
|
+
-webkit-transform: translateX(100%);
|
|
239
|
+
animation: slide-out 1s forwards !important;
|
|
240
|
+
-webkit-animation: slide-out 1s forwards !important;
|
|
241
|
+
z-index: -1000000000000;
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
@media screen and (max-width: 495px) {
|
|
245
|
+
.slide-in {
|
|
246
|
+
transform: translateY(100%);
|
|
247
|
+
-webkit-transform: translateY(100%);
|
|
248
|
+
animation: slide-up 0.8s forwards !important;
|
|
249
|
+
-webkit-animation: slide-up 0.8s forwards !important;
|
|
250
|
+
z-index: 1000000000000;
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
.slide-out {
|
|
254
|
+
transform: translateY(100%);
|
|
255
|
+
-webkit-transform: translateY(100%);
|
|
256
|
+
animation: slide-down 0.5s forwards !important;
|
|
257
|
+
-webkit-animation: slide-down 1s forwards !important;
|
|
258
|
+
z-index: -1000000000000;
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
@keyframes slide-in {
|
|
263
|
+
100% {
|
|
264
|
+
transform: translateX(0%);
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
@-webkit-keyframes slide-in {
|
|
269
|
+
100% {
|
|
270
|
+
-webkit-transform: translateX(0%);
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
@keyframes slide-up {
|
|
275
|
+
100% {
|
|
276
|
+
transform: translateY(0%);
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
@-webkit-keyframes slide-up {
|
|
281
|
+
100% {
|
|
282
|
+
-webkit-transform: translateY(0%);
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
@keyframes slide-out {
|
|
287
|
+
0% {
|
|
288
|
+
transform: translateX(0%);
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
100% {
|
|
292
|
+
transform: translateX(100%);
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
@-webkit-keyframes slide-out {
|
|
297
|
+
0% {
|
|
298
|
+
-webkit-transform: translateX(0%);
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
100% {
|
|
302
|
+
-webkit-transform: translateX(100%);
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
@keyframes slide-down {
|
|
307
|
+
0% {
|
|
308
|
+
transform: translateY(0%);
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
100% {
|
|
312
|
+
transform: translateY(100%);
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
@-webkit-keyframes slide-down {
|
|
317
|
+
0% {
|
|
318
|
+
-webkit-transform: translateY(0%);
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
100% {
|
|
322
|
+
-webkit-transform: translateY(100%);
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
`, "",{"version":3,"sources":["webpack://./src/styles.css"],"names":[],"mappings":"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","sourcesContent":["@import url(\"https://use.typekit.net/sag8ceb.css\");\n\n#tripfusion-loader {\n color: white;\n margin-right: -50%;\n position: absolute;\n top: 50%;\n left: 50%;\n font-family: futura-lt-w01-book, futura-lt-w05-book, Arial, Helvetica, sans-serif;\n transform: translate(-50%, -50%);\n}\n#tripfusion-loader span {\n font-weight: bold;\n font-size: 1.3rem;\n}\n\n#tripfusion-resume-button {\n position: fixed;\n overflow: hidden;\n cursor: pointer;\n display: flex;\n justify-content: space-evenly;\n align-items: center;\n padding: 12px 32px;\n box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.25), 0px 4px 4px rgba(0, 0, 0, 0.1);\n right: 30px;\n z-index: 100000000000;\n bottom: 40px;\n border: none;\n transform: translateX(400px);\n background-color: #092b43;\n border-radius: 23px;\n}\n\n#tripfusion-resume-button span {\n display: block !important;\n font-family: sweet-sans-pro, sans-serif;\n font-size: 1rem;\n font-weight: 700;\n line-height: 1.2;\n letter-spacing: 1.5px;\n text-transform: uppercase !important;\n color: white !important;\n}\n\n#tripfusion-widget-wrapper {\n background: rgba(0, 0, 0, 0);\n position: fixed;\n top: 0;\n right: 0;\n width: 100%;\n transition: background 0.5s ease-out;\n}\n\n#tripfusion-widget {\n position: absolute;\n width: 100%;\n height: 100%;\n top: 0px;\n right: 0px;\n}\n\n#tripfusion-widget-inner-wrapper {\n position: fixed;\n display: flex;\n flex-direction: column;\n min-width: 320px;\n width: 100%;\n height: 100%;\n right: 0px;\n bottom: 0px;\n background: white;\n border-radius: 8px;\n box-shadow: 0 2px 10px 0 rgba(0, 0, 0, 0.2);\n font-family: \"Roboto\", \"Helvetica\", \"Arial\", sans-serif;\n font-weight: 400;\n font-size: 1rem;\n line-height: 1.5;\n letter-spacing: 0.00938em;\n}\n\n@media (min-width: 768px) {\n #tripfusion-widget-inner-wrapper {\n height: calc(100% - 40px);\n right: 20px;\n bottom: 20px;\n width: 500px;\n }\n}\n\n#tripfusion-widget-header {\n height: 60px;\n background-color: #092b43;\n border-bottom: 1px solid #f1f1f1;\n padding: 0 16px 0 16px;\n display: flex;\n justify-content: space-between;\n align-items: center;\n color: white;\n}\n\n#tripfusion-widget-iframe {\n height: 100%;\n border: none;\n}\n\n#tripfusion-widget-header-title {\n font-family: sweet-sans-pro, sans-serif;\n line-height: 1.2;\n font-weight: 700;\n font-size: 1rem;\n letter-spacing: 1.5px;\n text-transform: uppercase;\n}\n\n#tripfusion-widget-close-button {\n overflow: hidden;\n position: relative;\n border: none;\n padding: 0;\n width: 2em;\n height: 2em;\n border-radius: 50%;\n background: transparent;\n font: inherit;\n text-indent: 100%;\n cursor: pointer;\n\n &:focus {\n outline: solid 0 transparent;\n background-color: rgba(0, 0, 0, 0.04);\n }\n\n &:hover {\n background-color: rgba(0, 0, 0, 0.04);\n }\n\n &:before,\n &:after {\n position: absolute;\n top: 25%;\n left: calc(50% - 0.0625em);\n width: 0.125em;\n height: 50%;\n border-radius: 0.125em;\n transform: rotate(45deg);\n background: currentcolor;\n color: white;\n content: \"\";\n }\n\n &:after {\n transform: rotate(-45deg);\n }\n}\n\n.dismiss-btn-slide-in {\n -webkit-transition: 500ms;\n -moz-transition: 500ms;\n transition: 500ms;\n transform: translateX(0) !important;\n}\n\n.dismiss-btn-slide-out {\n -webkit-transition: 500ms;\n -moz-transition: 500ms;\n transition: 500ms;\n transform: translateX(400px) !important;\n}\n\n.dismiss-btn-slide-out span {\n display: none;\n}\n\n.dismiss-btn-resize-in {\n width: 46px !important;\n height: 46px !important;\n transition: 500ms;\n right: 30px !important;\n}\n\n.dismiss-btn-resize-in span {\n display: none;\n}\n\n.dismiss-btn-resize-in:hover {\n width: 217px !important;\n height: 46px !important;\n transition: all 300ms linear;\n cursor: pointer;\n}\n\n.dismiss-btn-resize-in:hover span {\n display: inline;\n height: 20px !important;\n overflow: hidden;\n}\n\n.dismiss-btn-resize-out {\n width: 46px !important;\n height: 46px !important;\n transition: 500ms;\n right: -100px !important;\n}\n\n.slide-in {\n transform: translateX(100%);\n -webkit-transform: translateX(100%);\n animation: slide-in 0.8s forwards !important;\n -webkit-animation: slide-in 0.8s forwards !important;\n z-index: 1000000000000;\n}\n\n.slide-out {\n transform: translateX(100%);\n -webkit-transform: translateX(100%);\n animation: slide-out 1s forwards !important;\n -webkit-animation: slide-out 1s forwards !important;\n z-index: -1000000000000;\n}\n\n@media screen and (max-width: 495px) {\n .slide-in {\n transform: translateY(100%);\n -webkit-transform: translateY(100%);\n animation: slide-up 0.8s forwards !important;\n -webkit-animation: slide-up 0.8s forwards !important;\n z-index: 1000000000000;\n }\n\n .slide-out {\n transform: translateY(100%);\n -webkit-transform: translateY(100%);\n animation: slide-down 0.5s forwards !important;\n -webkit-animation: slide-down 1s forwards !important;\n z-index: -1000000000000;\n }\n}\n\n@keyframes slide-in {\n 100% {\n transform: translateX(0%);\n }\n}\n\n@-webkit-keyframes slide-in {\n 100% {\n -webkit-transform: translateX(0%);\n }\n}\n\n@keyframes slide-up {\n 100% {\n transform: translateY(0%);\n }\n}\n\n@-webkit-keyframes slide-up {\n 100% {\n -webkit-transform: translateY(0%);\n }\n}\n\n@keyframes slide-out {\n 0% {\n transform: translateX(0%);\n }\n\n 100% {\n transform: translateX(100%);\n }\n}\n\n@-webkit-keyframes slide-out {\n 0% {\n -webkit-transform: translateX(0%);\n }\n\n 100% {\n -webkit-transform: translateX(100%);\n }\n}\n\n@keyframes slide-down {\n 0% {\n transform: translateY(0%);\n }\n\n 100% {\n transform: translateY(100%);\n }\n}\n\n@-webkit-keyframes slide-down {\n 0% {\n -webkit-transform: translateY(0%);\n }\n\n 100% {\n -webkit-transform: translateY(100%);\n }\n}\n"],"sourceRoot":""}]);
|
|
326
|
+
// Exports
|
|
327
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);
|
|
328
|
+
|
|
329
|
+
|
|
330
|
+
/***/ }),
|
|
331
|
+
|
|
332
|
+
/***/ "./node_modules/css-loader/dist/runtime/api.js":
|
|
333
|
+
/*!*****************************************************!*\
|
|
334
|
+
!*** ./node_modules/css-loader/dist/runtime/api.js ***!
|
|
335
|
+
\*****************************************************/
|
|
336
|
+
/***/ ((module) => {
|
|
337
|
+
|
|
338
|
+
|
|
339
|
+
|
|
340
|
+
/*
|
|
341
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
|
342
|
+
Author Tobias Koppers @sokra
|
|
343
|
+
*/
|
|
344
|
+
module.exports = function (cssWithMappingToString) {
|
|
345
|
+
var list = [];
|
|
346
|
+
|
|
347
|
+
// return the list of modules as css string
|
|
348
|
+
list.toString = function toString() {
|
|
349
|
+
return this.map(function (item) {
|
|
350
|
+
var content = "";
|
|
351
|
+
var needLayer = typeof item[5] !== "undefined";
|
|
352
|
+
if (item[4]) {
|
|
353
|
+
content += "@supports (".concat(item[4], ") {");
|
|
354
|
+
}
|
|
355
|
+
if (item[2]) {
|
|
356
|
+
content += "@media ".concat(item[2], " {");
|
|
357
|
+
}
|
|
358
|
+
if (needLayer) {
|
|
359
|
+
content += "@layer".concat(item[5].length > 0 ? " ".concat(item[5]) : "", " {");
|
|
360
|
+
}
|
|
361
|
+
content += cssWithMappingToString(item);
|
|
362
|
+
if (needLayer) {
|
|
363
|
+
content += "}";
|
|
364
|
+
}
|
|
365
|
+
if (item[2]) {
|
|
366
|
+
content += "}";
|
|
367
|
+
}
|
|
368
|
+
if (item[4]) {
|
|
369
|
+
content += "}";
|
|
370
|
+
}
|
|
371
|
+
return content;
|
|
372
|
+
}).join("");
|
|
373
|
+
};
|
|
374
|
+
|
|
375
|
+
// import a list of modules into the list
|
|
376
|
+
list.i = function i(modules, media, dedupe, supports, layer) {
|
|
377
|
+
if (typeof modules === "string") {
|
|
378
|
+
modules = [[null, modules, undefined]];
|
|
379
|
+
}
|
|
380
|
+
var alreadyImportedModules = {};
|
|
381
|
+
if (dedupe) {
|
|
382
|
+
for (var k = 0; k < this.length; k++) {
|
|
383
|
+
var id = this[k][0];
|
|
384
|
+
if (id != null) {
|
|
385
|
+
alreadyImportedModules[id] = true;
|
|
386
|
+
}
|
|
387
|
+
}
|
|
388
|
+
}
|
|
389
|
+
for (var _k = 0; _k < modules.length; _k++) {
|
|
390
|
+
var item = [].concat(modules[_k]);
|
|
391
|
+
if (dedupe && alreadyImportedModules[item[0]]) {
|
|
392
|
+
continue;
|
|
393
|
+
}
|
|
394
|
+
if (typeof layer !== "undefined") {
|
|
395
|
+
if (typeof item[5] === "undefined") {
|
|
396
|
+
item[5] = layer;
|
|
397
|
+
} else {
|
|
398
|
+
item[1] = "@layer".concat(item[5].length > 0 ? " ".concat(item[5]) : "", " {").concat(item[1], "}");
|
|
399
|
+
item[5] = layer;
|
|
400
|
+
}
|
|
401
|
+
}
|
|
402
|
+
if (media) {
|
|
403
|
+
if (!item[2]) {
|
|
404
|
+
item[2] = media;
|
|
405
|
+
} else {
|
|
406
|
+
item[1] = "@media ".concat(item[2], " {").concat(item[1], "}");
|
|
407
|
+
item[2] = media;
|
|
408
|
+
}
|
|
409
|
+
}
|
|
410
|
+
if (supports) {
|
|
411
|
+
if (!item[4]) {
|
|
412
|
+
item[4] = "".concat(supports);
|
|
413
|
+
} else {
|
|
414
|
+
item[1] = "@supports (".concat(item[4], ") {").concat(item[1], "}");
|
|
415
|
+
item[4] = supports;
|
|
416
|
+
}
|
|
417
|
+
}
|
|
418
|
+
list.push(item);
|
|
419
|
+
}
|
|
420
|
+
};
|
|
421
|
+
return list;
|
|
422
|
+
};
|
|
423
|
+
|
|
424
|
+
/***/ }),
|
|
425
|
+
|
|
426
|
+
/***/ "./node_modules/css-loader/dist/runtime/sourceMaps.js":
|
|
427
|
+
/*!************************************************************!*\
|
|
428
|
+
!*** ./node_modules/css-loader/dist/runtime/sourceMaps.js ***!
|
|
429
|
+
\************************************************************/
|
|
430
|
+
/***/ ((module) => {
|
|
431
|
+
|
|
432
|
+
|
|
433
|
+
|
|
434
|
+
module.exports = function (item) {
|
|
435
|
+
var content = item[1];
|
|
436
|
+
var cssMapping = item[3];
|
|
437
|
+
if (!cssMapping) {
|
|
438
|
+
return content;
|
|
439
|
+
}
|
|
440
|
+
if (typeof btoa === "function") {
|
|
441
|
+
var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(cssMapping))));
|
|
442
|
+
var data = "sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(base64);
|
|
443
|
+
var sourceMapping = "/*# ".concat(data, " */");
|
|
444
|
+
return [content].concat([sourceMapping]).join("\n");
|
|
445
|
+
}
|
|
446
|
+
return [content].join("\n");
|
|
447
|
+
};
|
|
448
|
+
|
|
449
|
+
/***/ }),
|
|
450
|
+
|
|
451
|
+
/***/ "./src/styles.css":
|
|
452
|
+
/*!************************!*\
|
|
453
|
+
!*** ./src/styles.css ***!
|
|
454
|
+
\************************/
|
|
455
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
456
|
+
|
|
457
|
+
__webpack_require__.r(__webpack_exports__);
|
|
458
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
459
|
+
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
460
|
+
/* harmony export */ });
|
|
461
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");
|
|
462
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);
|
|
463
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");
|
|
464
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);
|
|
465
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");
|
|
466
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);
|
|
467
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");
|
|
468
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);
|
|
469
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");
|
|
470
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);
|
|
471
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");
|
|
472
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);
|
|
473
|
+
/* harmony import */ var _node_modules_css_loader_dist_cjs_js_styles_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../node_modules/css-loader/dist/cjs.js!./styles.css */ "./node_modules/css-loader/dist/cjs.js!./src/styles.css");
|
|
474
|
+
|
|
475
|
+
|
|
476
|
+
|
|
477
|
+
|
|
478
|
+
|
|
479
|
+
|
|
480
|
+
|
|
481
|
+
|
|
482
|
+
|
|
483
|
+
|
|
484
|
+
|
|
485
|
+
var options = {};
|
|
486
|
+
|
|
487
|
+
options.styleTagTransform = (_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());
|
|
488
|
+
options.setAttributes = (_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());
|
|
489
|
+
options.insert = _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");
|
|
490
|
+
options.domAPI = (_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());
|
|
491
|
+
options.insertStyleElement = (_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());
|
|
492
|
+
|
|
493
|
+
var update = _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_node_modules_css_loader_dist_cjs_js_styles_css__WEBPACK_IMPORTED_MODULE_6__["default"], options);
|
|
494
|
+
|
|
495
|
+
|
|
496
|
+
|
|
497
|
+
|
|
498
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_css_loader_dist_cjs_js_styles_css__WEBPACK_IMPORTED_MODULE_6__["default"] && _node_modules_css_loader_dist_cjs_js_styles_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _node_modules_css_loader_dist_cjs_js_styles_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);
|
|
499
|
+
|
|
500
|
+
|
|
501
|
+
/***/ }),
|
|
502
|
+
|
|
503
|
+
/***/ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js":
|
|
504
|
+
/*!****************************************************************************!*\
|
|
505
|
+
!*** ./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js ***!
|
|
506
|
+
\****************************************************************************/
|
|
507
|
+
/***/ ((module) => {
|
|
508
|
+
|
|
509
|
+
|
|
510
|
+
|
|
511
|
+
var stylesInDOM = [];
|
|
512
|
+
function getIndexByIdentifier(identifier) {
|
|
513
|
+
var result = -1;
|
|
514
|
+
for (var i = 0; i < stylesInDOM.length; i++) {
|
|
515
|
+
if (stylesInDOM[i].identifier === identifier) {
|
|
516
|
+
result = i;
|
|
517
|
+
break;
|
|
518
|
+
}
|
|
519
|
+
}
|
|
520
|
+
return result;
|
|
521
|
+
}
|
|
522
|
+
function modulesToDom(list, options) {
|
|
523
|
+
var idCountMap = {};
|
|
524
|
+
var identifiers = [];
|
|
525
|
+
for (var i = 0; i < list.length; i++) {
|
|
526
|
+
var item = list[i];
|
|
527
|
+
var id = options.base ? item[0] + options.base : item[0];
|
|
528
|
+
var count = idCountMap[id] || 0;
|
|
529
|
+
var identifier = "".concat(id, " ").concat(count);
|
|
530
|
+
idCountMap[id] = count + 1;
|
|
531
|
+
var indexByIdentifier = getIndexByIdentifier(identifier);
|
|
532
|
+
var obj = {
|
|
533
|
+
css: item[1],
|
|
534
|
+
media: item[2],
|
|
535
|
+
sourceMap: item[3],
|
|
536
|
+
supports: item[4],
|
|
537
|
+
layer: item[5]
|
|
538
|
+
};
|
|
539
|
+
if (indexByIdentifier !== -1) {
|
|
540
|
+
stylesInDOM[indexByIdentifier].references++;
|
|
541
|
+
stylesInDOM[indexByIdentifier].updater(obj);
|
|
542
|
+
} else {
|
|
543
|
+
var updater = addElementStyle(obj, options);
|
|
544
|
+
options.byIndex = i;
|
|
545
|
+
stylesInDOM.splice(i, 0, {
|
|
546
|
+
identifier: identifier,
|
|
547
|
+
updater: updater,
|
|
548
|
+
references: 1
|
|
549
|
+
});
|
|
550
|
+
}
|
|
551
|
+
identifiers.push(identifier);
|
|
552
|
+
}
|
|
553
|
+
return identifiers;
|
|
554
|
+
}
|
|
555
|
+
function addElementStyle(obj, options) {
|
|
556
|
+
var api = options.domAPI(options);
|
|
557
|
+
api.update(obj);
|
|
558
|
+
var updater = function updater(newObj) {
|
|
559
|
+
if (newObj) {
|
|
560
|
+
if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap && newObj.supports === obj.supports && newObj.layer === obj.layer) {
|
|
561
|
+
return;
|
|
562
|
+
}
|
|
563
|
+
api.update(obj = newObj);
|
|
564
|
+
} else {
|
|
565
|
+
api.remove();
|
|
566
|
+
}
|
|
567
|
+
};
|
|
568
|
+
return updater;
|
|
569
|
+
}
|
|
570
|
+
module.exports = function (list, options) {
|
|
571
|
+
options = options || {};
|
|
572
|
+
list = list || [];
|
|
573
|
+
var lastIdentifiers = modulesToDom(list, options);
|
|
574
|
+
return function update(newList) {
|
|
575
|
+
newList = newList || [];
|
|
576
|
+
for (var i = 0; i < lastIdentifiers.length; i++) {
|
|
577
|
+
var identifier = lastIdentifiers[i];
|
|
578
|
+
var index = getIndexByIdentifier(identifier);
|
|
579
|
+
stylesInDOM[index].references--;
|
|
580
|
+
}
|
|
581
|
+
var newLastIdentifiers = modulesToDom(newList, options);
|
|
582
|
+
for (var _i = 0; _i < lastIdentifiers.length; _i++) {
|
|
583
|
+
var _identifier = lastIdentifiers[_i];
|
|
584
|
+
var _index = getIndexByIdentifier(_identifier);
|
|
585
|
+
if (stylesInDOM[_index].references === 0) {
|
|
586
|
+
stylesInDOM[_index].updater();
|
|
587
|
+
stylesInDOM.splice(_index, 1);
|
|
588
|
+
}
|
|
589
|
+
}
|
|
590
|
+
lastIdentifiers = newLastIdentifiers;
|
|
591
|
+
};
|
|
592
|
+
};
|
|
593
|
+
|
|
594
|
+
/***/ }),
|
|
595
|
+
|
|
596
|
+
/***/ "./node_modules/style-loader/dist/runtime/insertBySelector.js":
|
|
597
|
+
/*!********************************************************************!*\
|
|
598
|
+
!*** ./node_modules/style-loader/dist/runtime/insertBySelector.js ***!
|
|
599
|
+
\********************************************************************/
|
|
600
|
+
/***/ ((module) => {
|
|
601
|
+
|
|
602
|
+
|
|
603
|
+
|
|
604
|
+
var memo = {};
|
|
605
|
+
|
|
606
|
+
/* istanbul ignore next */
|
|
607
|
+
function getTarget(target) {
|
|
608
|
+
if (typeof memo[target] === "undefined") {
|
|
609
|
+
var styleTarget = document.querySelector(target);
|
|
610
|
+
|
|
611
|
+
// Special case to return head of iframe instead of iframe itself
|
|
612
|
+
if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {
|
|
613
|
+
try {
|
|
614
|
+
// This will throw an exception if access to iframe is blocked
|
|
615
|
+
// due to cross-origin restrictions
|
|
616
|
+
styleTarget = styleTarget.contentDocument.head;
|
|
617
|
+
} catch (e) {
|
|
618
|
+
// istanbul ignore next
|
|
619
|
+
styleTarget = null;
|
|
620
|
+
}
|
|
621
|
+
}
|
|
622
|
+
memo[target] = styleTarget;
|
|
623
|
+
}
|
|
624
|
+
return memo[target];
|
|
625
|
+
}
|
|
626
|
+
|
|
627
|
+
/* istanbul ignore next */
|
|
628
|
+
function insertBySelector(insert, style) {
|
|
629
|
+
var target = getTarget(insert);
|
|
630
|
+
if (!target) {
|
|
631
|
+
throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");
|
|
632
|
+
}
|
|
633
|
+
target.appendChild(style);
|
|
634
|
+
}
|
|
635
|
+
module.exports = insertBySelector;
|
|
636
|
+
|
|
637
|
+
/***/ }),
|
|
638
|
+
|
|
639
|
+
/***/ "./node_modules/style-loader/dist/runtime/insertStyleElement.js":
|
|
640
|
+
/*!**********************************************************************!*\
|
|
641
|
+
!*** ./node_modules/style-loader/dist/runtime/insertStyleElement.js ***!
|
|
642
|
+
\**********************************************************************/
|
|
643
|
+
/***/ ((module) => {
|
|
644
|
+
|
|
645
|
+
|
|
646
|
+
|
|
647
|
+
/* istanbul ignore next */
|
|
648
|
+
function insertStyleElement(options) {
|
|
649
|
+
var element = document.createElement("style");
|
|
650
|
+
options.setAttributes(element, options.attributes);
|
|
651
|
+
options.insert(element, options.options);
|
|
652
|
+
return element;
|
|
653
|
+
}
|
|
654
|
+
module.exports = insertStyleElement;
|
|
655
|
+
|
|
656
|
+
/***/ }),
|
|
657
|
+
|
|
658
|
+
/***/ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js":
|
|
659
|
+
/*!**********************************************************************************!*\
|
|
660
|
+
!*** ./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js ***!
|
|
661
|
+
\**********************************************************************************/
|
|
662
|
+
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
663
|
+
|
|
664
|
+
|
|
665
|
+
|
|
666
|
+
/* istanbul ignore next */
|
|
667
|
+
function setAttributesWithoutAttributes(styleElement) {
|
|
668
|
+
var nonce = true ? __webpack_require__.nc : 0;
|
|
669
|
+
if (nonce) {
|
|
670
|
+
styleElement.setAttribute("nonce", nonce);
|
|
671
|
+
}
|
|
672
|
+
}
|
|
673
|
+
module.exports = setAttributesWithoutAttributes;
|
|
674
|
+
|
|
675
|
+
/***/ }),
|
|
676
|
+
|
|
677
|
+
/***/ "./node_modules/style-loader/dist/runtime/styleDomAPI.js":
|
|
678
|
+
/*!***************************************************************!*\
|
|
679
|
+
!*** ./node_modules/style-loader/dist/runtime/styleDomAPI.js ***!
|
|
680
|
+
\***************************************************************/
|
|
681
|
+
/***/ ((module) => {
|
|
682
|
+
|
|
683
|
+
|
|
684
|
+
|
|
685
|
+
/* istanbul ignore next */
|
|
686
|
+
function apply(styleElement, options, obj) {
|
|
687
|
+
var css = "";
|
|
688
|
+
if (obj.supports) {
|
|
689
|
+
css += "@supports (".concat(obj.supports, ") {");
|
|
690
|
+
}
|
|
691
|
+
if (obj.media) {
|
|
692
|
+
css += "@media ".concat(obj.media, " {");
|
|
693
|
+
}
|
|
694
|
+
var needLayer = typeof obj.layer !== "undefined";
|
|
695
|
+
if (needLayer) {
|
|
696
|
+
css += "@layer".concat(obj.layer.length > 0 ? " ".concat(obj.layer) : "", " {");
|
|
697
|
+
}
|
|
698
|
+
css += obj.css;
|
|
699
|
+
if (needLayer) {
|
|
700
|
+
css += "}";
|
|
701
|
+
}
|
|
702
|
+
if (obj.media) {
|
|
703
|
+
css += "}";
|
|
704
|
+
}
|
|
705
|
+
if (obj.supports) {
|
|
706
|
+
css += "}";
|
|
707
|
+
}
|
|
708
|
+
var sourceMap = obj.sourceMap;
|
|
709
|
+
if (sourceMap && typeof btoa !== "undefined") {
|
|
710
|
+
css += "\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), " */");
|
|
711
|
+
}
|
|
712
|
+
|
|
713
|
+
// For old IE
|
|
714
|
+
/* istanbul ignore if */
|
|
715
|
+
options.styleTagTransform(css, styleElement, options.options);
|
|
716
|
+
}
|
|
717
|
+
function removeStyleElement(styleElement) {
|
|
718
|
+
// istanbul ignore if
|
|
719
|
+
if (styleElement.parentNode === null) {
|
|
720
|
+
return false;
|
|
721
|
+
}
|
|
722
|
+
styleElement.parentNode.removeChild(styleElement);
|
|
723
|
+
}
|
|
724
|
+
|
|
725
|
+
/* istanbul ignore next */
|
|
726
|
+
function domAPI(options) {
|
|
727
|
+
if (typeof document === "undefined") {
|
|
728
|
+
return {
|
|
729
|
+
update: function update() {},
|
|
730
|
+
remove: function remove() {}
|
|
731
|
+
};
|
|
732
|
+
}
|
|
733
|
+
var styleElement = options.insertStyleElement(options);
|
|
734
|
+
return {
|
|
735
|
+
update: function update(obj) {
|
|
736
|
+
apply(styleElement, options, obj);
|
|
737
|
+
},
|
|
738
|
+
remove: function remove() {
|
|
739
|
+
removeStyleElement(styleElement);
|
|
740
|
+
}
|
|
741
|
+
};
|
|
742
|
+
}
|
|
743
|
+
module.exports = domAPI;
|
|
744
|
+
|
|
745
|
+
/***/ }),
|
|
746
|
+
|
|
747
|
+
/***/ "./node_modules/style-loader/dist/runtime/styleTagTransform.js":
|
|
748
|
+
/*!*********************************************************************!*\
|
|
749
|
+
!*** ./node_modules/style-loader/dist/runtime/styleTagTransform.js ***!
|
|
750
|
+
\*********************************************************************/
|
|
751
|
+
/***/ ((module) => {
|
|
752
|
+
|
|
753
|
+
|
|
754
|
+
|
|
755
|
+
/* istanbul ignore next */
|
|
756
|
+
function styleTagTransform(css, styleElement) {
|
|
757
|
+
if (styleElement.styleSheet) {
|
|
758
|
+
styleElement.styleSheet.cssText = css;
|
|
759
|
+
} else {
|
|
760
|
+
while (styleElement.firstChild) {
|
|
761
|
+
styleElement.removeChild(styleElement.firstChild);
|
|
762
|
+
}
|
|
763
|
+
styleElement.appendChild(document.createTextNode(css));
|
|
764
|
+
}
|
|
765
|
+
}
|
|
766
|
+
module.exports = styleTagTransform;
|
|
767
|
+
|
|
768
|
+
/***/ }),
|
|
769
|
+
|
|
770
|
+
/***/ "./src/const.ts":
|
|
771
|
+
/*!**********************!*\
|
|
772
|
+
!*** ./src/const.ts ***!
|
|
773
|
+
\**********************/
|
|
774
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
775
|
+
|
|
776
|
+
__webpack_require__.r(__webpack_exports__);
|
|
777
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
778
|
+
/* harmony export */ BOOKING_MODE: () => (/* binding */ BOOKING_MODE),
|
|
779
|
+
/* harmony export */ LOADER_ID: () => (/* binding */ LOADER_ID),
|
|
780
|
+
/* harmony export */ RESUME_BUTTON_ID: () => (/* binding */ RESUME_BUTTON_ID),
|
|
781
|
+
/* harmony export */ SDK_SCRIPT_ID: () => (/* binding */ SDK_SCRIPT_ID),
|
|
782
|
+
/* harmony export */ TRIPFUSION_BASE_URL: () => (/* binding */ TRIPFUSION_BASE_URL),
|
|
783
|
+
/* harmony export */ WIDGET_CLOSE_BUTTON_ID: () => (/* binding */ WIDGET_CLOSE_BUTTON_ID),
|
|
784
|
+
/* harmony export */ WIDGET_HEADER_ID: () => (/* binding */ WIDGET_HEADER_ID),
|
|
785
|
+
/* harmony export */ WIDGET_HEADER_TITLE_ID: () => (/* binding */ WIDGET_HEADER_TITLE_ID),
|
|
786
|
+
/* harmony export */ WIDGET_ID: () => (/* binding */ WIDGET_ID),
|
|
787
|
+
/* harmony export */ WIDGET_IFRAME_ID: () => (/* binding */ WIDGET_IFRAME_ID),
|
|
788
|
+
/* harmony export */ WIDGET_INNER_WRAPPER_ID: () => (/* binding */ WIDGET_INNER_WRAPPER_ID),
|
|
789
|
+
/* harmony export */ WIDGET_WRAPPER_ID: () => (/* binding */ WIDGET_WRAPPER_ID)
|
|
790
|
+
/* harmony export */ });
|
|
791
|
+
var TRIPFUSION_BASE_URL = false ? 0 : "http://localhost:3000/";
|
|
792
|
+
var SDK_SCRIPT_ID = "tripfusion-sdk";
|
|
793
|
+
var WIDGET_ID = "tripfusion-widget";
|
|
794
|
+
var WIDGET_INNER_WRAPPER_ID = "tripfusion-widget-inner-wrapper";
|
|
795
|
+
var WIDGET_HEADER_ID = "tripfusion-widget-header";
|
|
796
|
+
var WIDGET_CLOSE_BUTTON_ID = "tripfusion-widget-close-button";
|
|
797
|
+
var WIDGET_HEADER_TITLE_ID = "tripfusion-widget-header-title";
|
|
798
|
+
var WIDGET_WRAPPER_ID = "tripfusion-widget-wrapper";
|
|
799
|
+
var WIDGET_IFRAME_ID = "tripfusion-widget-iframe";
|
|
800
|
+
var RESUME_BUTTON_ID = "tripfusion-resume-button";
|
|
801
|
+
var LOADER_ID = "tripfusion-loader";
|
|
802
|
+
var BOOKING_MODE = {
|
|
803
|
+
normal: "normal",
|
|
804
|
+
append: "append",
|
|
805
|
+
};
|
|
806
|
+
|
|
807
|
+
|
|
808
|
+
/***/ }),
|
|
809
|
+
|
|
810
|
+
/***/ "./src/dom.ts":
|
|
811
|
+
/*!********************!*\
|
|
812
|
+
!*** ./src/dom.ts ***!
|
|
813
|
+
\********************/
|
|
814
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
815
|
+
|
|
816
|
+
__webpack_require__.r(__webpack_exports__);
|
|
817
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
818
|
+
/* harmony export */ closeWidget: () => (/* binding */ closeWidget),
|
|
819
|
+
/* harmony export */ displayLoadingOverlay: () => (/* binding */ displayLoadingOverlay),
|
|
820
|
+
/* harmony export */ injectIframe: () => (/* binding */ injectIframe),
|
|
821
|
+
/* harmony export */ injectResumeButton: () => (/* binding */ injectResumeButton),
|
|
822
|
+
/* harmony export */ lockPageScroll: () => (/* binding */ lockPageScroll)
|
|
823
|
+
/* harmony export */ });
|
|
824
|
+
/* harmony import */ var _const__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./const */ "./src/const.ts");
|
|
825
|
+
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./utils */ "./src/utils.ts");
|
|
826
|
+
|
|
827
|
+
|
|
828
|
+
function displayLoadingOverlay() {
|
|
829
|
+
var widgetWrapper = document.getElementById(_const__WEBPACK_IMPORTED_MODULE_0__.WIDGET_WRAPPER_ID);
|
|
830
|
+
if (widgetWrapper) {
|
|
831
|
+
var loadingDiv = document.createElement("div");
|
|
832
|
+
loadingDiv.id = _const__WEBPACK_IMPORTED_MODULE_0__.LOADER_ID;
|
|
833
|
+
loadingDiv.innerHTML = "Loading <span>TripFusion</span>";
|
|
834
|
+
widgetWrapper.appendChild(loadingDiv);
|
|
835
|
+
widgetWrapper.style.zIndex = "".concat(1e11);
|
|
836
|
+
widgetWrapper.style.height = "100%";
|
|
837
|
+
widgetWrapper.style.background = "rgba(0, 0, 0, .74)";
|
|
838
|
+
lockPageScroll();
|
|
839
|
+
}
|
|
840
|
+
}
|
|
841
|
+
function injectResumeButton() {
|
|
842
|
+
try {
|
|
843
|
+
var widget = document.createElement("div"), widgetWrapper = document.createElement("div"), widgetInnerWrapper = document.createElement("div"), widgetHeader = document.createElement("div"), widgetHeaderTitle = document.createElement("span"), widgetCloseButton = document.createElement("button"), resumeButton = document.createElement("button"), resumeButtonText = document.createElement("span");
|
|
844
|
+
resumeButton.id = _const__WEBPACK_IMPORTED_MODULE_0__.RESUME_BUTTON_ID;
|
|
845
|
+
resumeButtonText.innerHTML = "Complete your booking";
|
|
846
|
+
resumeButton.appendChild(resumeButtonText);
|
|
847
|
+
widget.id = _const__WEBPACK_IMPORTED_MODULE_0__.WIDGET_ID;
|
|
848
|
+
widget.style.display = "none";
|
|
849
|
+
widgetWrapper.id = _const__WEBPACK_IMPORTED_MODULE_0__.WIDGET_WRAPPER_ID;
|
|
850
|
+
widgetInnerWrapper.id = _const__WEBPACK_IMPORTED_MODULE_0__.WIDGET_INNER_WRAPPER_ID;
|
|
851
|
+
widgetHeader.id = _const__WEBPACK_IMPORTED_MODULE_0__.WIDGET_HEADER_ID;
|
|
852
|
+
widgetCloseButton.id = _const__WEBPACK_IMPORTED_MODULE_0__.WIDGET_CLOSE_BUTTON_ID;
|
|
853
|
+
widgetCloseButton.addEventListener("click", closeWidget);
|
|
854
|
+
widgetHeaderTitle.id = _const__WEBPACK_IMPORTED_MODULE_0__.WIDGET_HEADER_TITLE_ID;
|
|
855
|
+
widgetHeaderTitle.innerHTML = "Booking";
|
|
856
|
+
widgetWrapper.appendChild(widget);
|
|
857
|
+
widget.appendChild(widgetInnerWrapper);
|
|
858
|
+
widgetInnerWrapper.appendChild(widgetHeader);
|
|
859
|
+
widgetHeader.appendChild(widgetHeaderTitle);
|
|
860
|
+
widgetHeader.appendChild(widgetCloseButton);
|
|
861
|
+
document.body.appendChild(widgetWrapper);
|
|
862
|
+
document.body.appendChild(resumeButton);
|
|
863
|
+
}
|
|
864
|
+
catch (error) {
|
|
865
|
+
(0,_utils__WEBPACK_IMPORTED_MODULE_1__.logger)("Widget: Error injecting resume button: ".concat(error));
|
|
866
|
+
console.error("Tripfusion: Error injecting resume button: ", error);
|
|
867
|
+
}
|
|
868
|
+
}
|
|
869
|
+
function closeWidget() {
|
|
870
|
+
try {
|
|
871
|
+
var widget = document.getElementById(_const__WEBPACK_IMPORTED_MODULE_0__.WIDGET_ID), widgetWrapper = document.getElementById(_const__WEBPACK_IMPORTED_MODULE_0__.WIDGET_WRAPPER_ID), resumeButton = document.getElementById(_const__WEBPACK_IMPORTED_MODULE_0__.RESUME_BUTTON_ID);
|
|
872
|
+
if (widget && widgetWrapper && resumeButton) {
|
|
873
|
+
document.body.style.overflow = "initial";
|
|
874
|
+
widget.setAttribute("class", "slide-out");
|
|
875
|
+
widgetWrapper.style.background = "rgba(0, 0, 0, 0)";
|
|
876
|
+
widget.style.display = "none";
|
|
877
|
+
widgetWrapper.style.zIndex = "".concat(-1e11);
|
|
878
|
+
resumeButton.setAttribute("class", "dismiss-btn-slide-in");
|
|
879
|
+
resumeButton.focus();
|
|
880
|
+
}
|
|
881
|
+
}
|
|
882
|
+
catch (error) {
|
|
883
|
+
(0,_utils__WEBPACK_IMPORTED_MODULE_1__.logger)("Widget: Error closing widget: ".concat(error));
|
|
884
|
+
console.error("Tripfusion: Error closing widget: ", error);
|
|
885
|
+
}
|
|
886
|
+
}
|
|
887
|
+
function injectIframe(_a) {
|
|
888
|
+
var config = _a.config, bookingData = _a.bookingData;
|
|
889
|
+
try {
|
|
890
|
+
var innerWrapper = document.getElementById(_const__WEBPACK_IMPORTED_MODULE_0__.WIDGET_INNER_WRAPPER_ID);
|
|
891
|
+
if (innerWrapper) {
|
|
892
|
+
var widgetIframe = document.createElement("iframe");
|
|
893
|
+
var url = "".concat(_const__WEBPACK_IMPORTED_MODULE_0__.TRIPFUSION_BASE_URL).concat(config.client, "/").concat(config.propertyId);
|
|
894
|
+
if (config.mode === _const__WEBPACK_IMPORTED_MODULE_0__.BOOKING_MODE.append && config.bookingId) {
|
|
895
|
+
url += "/booking/".concat(config.bookingId, "/append");
|
|
896
|
+
}
|
|
897
|
+
if (bookingData) {
|
|
898
|
+
var additionalParams = Object.entries(bookingData)
|
|
899
|
+
.filter(function (_a) {
|
|
900
|
+
var _ = _a[0], value = _a[1];
|
|
901
|
+
return !!value;
|
|
902
|
+
})
|
|
903
|
+
.map(function (_a) {
|
|
904
|
+
var key = _a[0], value = _a[1];
|
|
905
|
+
return "".concat(key, "=").concat(value).toLowerCase();
|
|
906
|
+
})
|
|
907
|
+
.join("&");
|
|
908
|
+
if (additionalParams) {
|
|
909
|
+
url += "?".concat(additionalParams);
|
|
910
|
+
}
|
|
911
|
+
}
|
|
912
|
+
widgetIframe.setAttribute("src", url);
|
|
913
|
+
widgetIframe.id = _const__WEBPACK_IMPORTED_MODULE_0__.WIDGET_IFRAME_ID;
|
|
914
|
+
innerWrapper.appendChild(widgetIframe);
|
|
915
|
+
}
|
|
916
|
+
}
|
|
917
|
+
catch (error) {
|
|
918
|
+
(0,_utils__WEBPACK_IMPORTED_MODULE_1__.logger)("Widget: Error injecting iframe: ".concat(error));
|
|
919
|
+
console.error("Tripfusion: Error injecting iframe: ", error);
|
|
920
|
+
}
|
|
921
|
+
}
|
|
922
|
+
function lockPageScroll() {
|
|
923
|
+
document.body.style.overflow = "hidden";
|
|
924
|
+
}
|
|
925
|
+
|
|
926
|
+
|
|
927
|
+
/***/ }),
|
|
928
|
+
|
|
929
|
+
/***/ "./src/utils.ts":
|
|
930
|
+
/*!**********************!*\
|
|
931
|
+
!*** ./src/utils.ts ***!
|
|
932
|
+
\**********************/
|
|
933
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
934
|
+
|
|
935
|
+
__webpack_require__.r(__webpack_exports__);
|
|
936
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
937
|
+
/* harmony export */ getParamsFromUrl: () => (/* binding */ getParamsFromUrl),
|
|
938
|
+
/* harmony export */ logger: () => (/* binding */ logger)
|
|
939
|
+
/* harmony export */ });
|
|
940
|
+
/* harmony import */ var _const__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./const */ "./src/const.ts");
|
|
941
|
+
var __assign = (undefined && undefined.__assign) || function () {
|
|
942
|
+
__assign = Object.assign || function(t) {
|
|
943
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
944
|
+
s = arguments[i];
|
|
945
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
946
|
+
t[p] = s[p];
|
|
947
|
+
}
|
|
948
|
+
return t;
|
|
949
|
+
};
|
|
950
|
+
return __assign.apply(this, arguments);
|
|
951
|
+
};
|
|
952
|
+
var __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
953
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
954
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
955
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
956
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
957
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
958
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
959
|
+
});
|
|
960
|
+
};
|
|
961
|
+
var __generator = (undefined && undefined.__generator) || function (thisArg, body) {
|
|
962
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
|
|
963
|
+
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
964
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
965
|
+
function step(op) {
|
|
966
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
967
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
968
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
969
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
970
|
+
switch (op[0]) {
|
|
971
|
+
case 0: case 1: t = op; break;
|
|
972
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
973
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
974
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
975
|
+
default:
|
|
976
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
977
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
978
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
979
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
980
|
+
if (t[2]) _.ops.pop();
|
|
981
|
+
_.trys.pop(); continue;
|
|
982
|
+
}
|
|
983
|
+
op = body.call(thisArg, _);
|
|
984
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
985
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
986
|
+
}
|
|
987
|
+
};
|
|
988
|
+
|
|
989
|
+
function getParamsFromUrl(urlSearchParams) {
|
|
990
|
+
var availableSearchParamsMap = {
|
|
991
|
+
tripfusion: "tripfusion",
|
|
992
|
+
client: "client",
|
|
993
|
+
propertyid: "propertyId",
|
|
994
|
+
mode: "mode",
|
|
995
|
+
offerid: "offerId",
|
|
996
|
+
bookingid: "bookingId",
|
|
997
|
+
checkin: "checkIn",
|
|
998
|
+
checkout: "checkOut",
|
|
999
|
+
adults: "adults",
|
|
1000
|
+
children: "children",
|
|
1001
|
+
};
|
|
1002
|
+
return Array.from(urlSearchParams.entries()).reduce(function (prev, _a) {
|
|
1003
|
+
var _b;
|
|
1004
|
+
var searchParamKey = _a[0], searchParamValue = _a[1];
|
|
1005
|
+
return (__assign(__assign({}, prev), (_b = {}, _b[availableSearchParamsMap[searchParamKey.toLowerCase()]] = searchParamValue, _b)));
|
|
1006
|
+
}, {});
|
|
1007
|
+
}
|
|
1008
|
+
function logger(message_1) {
|
|
1009
|
+
return __awaiter(this, arguments, void 0, function (message, type) {
|
|
1010
|
+
var url, payload, headers;
|
|
1011
|
+
if (type === void 0) { type = "error"; }
|
|
1012
|
+
return __generator(this, function (_a) {
|
|
1013
|
+
url = "".concat(_const__WEBPACK_IMPORTED_MODULE_0__.TRIPFUSION_BASE_URL, "api/vacayou/log");
|
|
1014
|
+
payload = {
|
|
1015
|
+
message: message,
|
|
1016
|
+
page: window.location.href,
|
|
1017
|
+
};
|
|
1018
|
+
headers = {
|
|
1019
|
+
"content-type": "application/json",
|
|
1020
|
+
};
|
|
1021
|
+
return [2, fetch(url, {
|
|
1022
|
+
method: "POST",
|
|
1023
|
+
body: JSON.stringify({
|
|
1024
|
+
type: type,
|
|
1025
|
+
payload: payload,
|
|
1026
|
+
}),
|
|
1027
|
+
headers: headers,
|
|
1028
|
+
})
|
|
1029
|
+
.then(function (response) { return response.json(); })
|
|
1030
|
+
.catch(function (error) {
|
|
1031
|
+
console.log("Tripfusion: failed to log message: ".concat(error));
|
|
1032
|
+
})];
|
|
1033
|
+
});
|
|
1034
|
+
});
|
|
1035
|
+
}
|
|
1036
|
+
|
|
1037
|
+
|
|
1038
|
+
/***/ })
|
|
1039
|
+
|
|
1040
|
+
/******/ });
|
|
1041
|
+
/************************************************************************/
|
|
1042
|
+
/******/ // The module cache
|
|
1043
|
+
/******/ var __webpack_module_cache__ = {};
|
|
1044
|
+
/******/
|
|
1045
|
+
/******/ // The require function
|
|
1046
|
+
/******/ function __webpack_require__(moduleId) {
|
|
1047
|
+
/******/ // Check if module is in cache
|
|
1048
|
+
/******/ var cachedModule = __webpack_module_cache__[moduleId];
|
|
1049
|
+
/******/ if (cachedModule !== undefined) {
|
|
1050
|
+
/******/ return cachedModule.exports;
|
|
1051
|
+
/******/ }
|
|
1052
|
+
/******/ // Create a new module (and put it into the cache)
|
|
1053
|
+
/******/ var module = __webpack_module_cache__[moduleId] = {
|
|
1054
|
+
/******/ id: moduleId,
|
|
1055
|
+
/******/ // no module.loaded needed
|
|
1056
|
+
/******/ exports: {}
|
|
1057
|
+
/******/ };
|
|
1058
|
+
/******/
|
|
1059
|
+
/******/ // Execute the module function
|
|
1060
|
+
/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
|
|
1061
|
+
/******/
|
|
1062
|
+
/******/ // Return the exports of the module
|
|
1063
|
+
/******/ return module.exports;
|
|
1064
|
+
/******/ }
|
|
1065
|
+
/******/
|
|
1066
|
+
/************************************************************************/
|
|
1067
|
+
/******/ /* webpack/runtime/compat get default export */
|
|
1068
|
+
/******/ (() => {
|
|
1069
|
+
/******/ // getDefaultExport function for compatibility with non-harmony modules
|
|
1070
|
+
/******/ __webpack_require__.n = (module) => {
|
|
1071
|
+
/******/ var getter = module && module.__esModule ?
|
|
1072
|
+
/******/ () => (module['default']) :
|
|
1073
|
+
/******/ () => (module);
|
|
1074
|
+
/******/ __webpack_require__.d(getter, { a: getter });
|
|
1075
|
+
/******/ return getter;
|
|
1076
|
+
/******/ };
|
|
1077
|
+
/******/ })();
|
|
1078
|
+
/******/
|
|
1079
|
+
/******/ /* webpack/runtime/define property getters */
|
|
1080
|
+
/******/ (() => {
|
|
1081
|
+
/******/ // define getter functions for harmony exports
|
|
1082
|
+
/******/ __webpack_require__.d = (exports, definition) => {
|
|
1083
|
+
/******/ for(var key in definition) {
|
|
1084
|
+
/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
|
|
1085
|
+
/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
|
|
1086
|
+
/******/ }
|
|
1087
|
+
/******/ }
|
|
1088
|
+
/******/ };
|
|
1089
|
+
/******/ })();
|
|
1090
|
+
/******/
|
|
1091
|
+
/******/ /* webpack/runtime/hasOwnProperty shorthand */
|
|
1092
|
+
/******/ (() => {
|
|
1093
|
+
/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
|
|
1094
|
+
/******/ })();
|
|
1095
|
+
/******/
|
|
1096
|
+
/******/ /* webpack/runtime/make namespace object */
|
|
1097
|
+
/******/ (() => {
|
|
1098
|
+
/******/ // define __esModule on exports
|
|
1099
|
+
/******/ __webpack_require__.r = (exports) => {
|
|
1100
|
+
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
|
|
1101
|
+
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
1102
|
+
/******/ }
|
|
1103
|
+
/******/ Object.defineProperty(exports, '__esModule', { value: true });
|
|
1104
|
+
/******/ };
|
|
1105
|
+
/******/ })();
|
|
1106
|
+
/******/
|
|
1107
|
+
/******/ /* webpack/runtime/nonce */
|
|
1108
|
+
/******/ (() => {
|
|
1109
|
+
/******/ __webpack_require__.nc = undefined;
|
|
1110
|
+
/******/ })();
|
|
1111
|
+
/******/
|
|
1112
|
+
/************************************************************************/
|
|
1113
|
+
var __webpack_exports__ = {};
|
|
1114
|
+
/*!**********************!*\
|
|
1115
|
+
!*** ./src/index.ts ***!
|
|
1116
|
+
\**********************/
|
|
1117
|
+
__webpack_require__.r(__webpack_exports__);
|
|
1118
|
+
/* harmony import */ var _const__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./const */ "./src/const.ts");
|
|
1119
|
+
/* harmony import */ var _dom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./dom */ "./src/dom.ts");
|
|
1120
|
+
/* harmony import */ var _styles_css__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./styles.css */ "./src/styles.css");
|
|
1121
|
+
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./utils */ "./src/utils.ts");
|
|
1122
|
+
var __assign = (undefined && undefined.__assign) || function () {
|
|
1123
|
+
__assign = Object.assign || function(t) {
|
|
1124
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
1125
|
+
s = arguments[i];
|
|
1126
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
1127
|
+
t[p] = s[p];
|
|
1128
|
+
}
|
|
1129
|
+
return t;
|
|
1130
|
+
};
|
|
1131
|
+
return __assign.apply(this, arguments);
|
|
1132
|
+
};
|
|
1133
|
+
|
|
1134
|
+
|
|
1135
|
+
|
|
1136
|
+
|
|
1137
|
+
var client = null;
|
|
1138
|
+
var propertyId = null;
|
|
1139
|
+
var bookingContext = null;
|
|
1140
|
+
var isIframeReady = false;
|
|
1141
|
+
function addLinkEventListeners() {
|
|
1142
|
+
document.querySelectorAll("a").forEach(function (linkElement) {
|
|
1143
|
+
linkElement.addEventListener("click", handleLinkClick);
|
|
1144
|
+
});
|
|
1145
|
+
}
|
|
1146
|
+
function handleLinkClick(event) {
|
|
1147
|
+
var _a, _b;
|
|
1148
|
+
try {
|
|
1149
|
+
var target = event.target;
|
|
1150
|
+
if (target.tagName !== "A" && ((_a = target.parentNode) === null || _a === void 0 ? void 0 : _a.tagName) === "A") {
|
|
1151
|
+
target.href = target.parentNode.href;
|
|
1152
|
+
}
|
|
1153
|
+
var linkHref = target.href || "";
|
|
1154
|
+
if (!linkHref.includes("?")) {
|
|
1155
|
+
return;
|
|
1156
|
+
}
|
|
1157
|
+
var urlParams = (0,_utils__WEBPACK_IMPORTED_MODULE_3__.getParamsFromUrl)(new URLSearchParams(linkHref.substring(linkHref.indexOf("?"))));
|
|
1158
|
+
if (urlParams.tripfusion === "true") {
|
|
1159
|
+
event.preventDefault();
|
|
1160
|
+
book({
|
|
1161
|
+
config: {
|
|
1162
|
+
client: (_b = urlParams.client) !== null && _b !== void 0 ? _b : client,
|
|
1163
|
+
propertyId: urlParams.propertyId ? +urlParams.propertyId : propertyId,
|
|
1164
|
+
mode: urlParams.mode === _const__WEBPACK_IMPORTED_MODULE_0__.BOOKING_MODE.append ? _const__WEBPACK_IMPORTED_MODULE_0__.BOOKING_MODE.append : _const__WEBPACK_IMPORTED_MODULE_0__.BOOKING_MODE.normal,
|
|
1165
|
+
bookingId: (urlParams === null || urlParams === void 0 ? void 0 : urlParams.bookingId) && (urlParams === null || urlParams === void 0 ? void 0 : urlParams.mode) === _const__WEBPACK_IMPORTED_MODULE_0__.BOOKING_MODE.append ? +urlParams.bookingId : null,
|
|
1166
|
+
},
|
|
1167
|
+
bookingData: {
|
|
1168
|
+
offerId: urlParams.offerId ? +urlParams.offerId : undefined,
|
|
1169
|
+
checkIn: urlParams.checkIn,
|
|
1170
|
+
checkOut: urlParams.checkOut,
|
|
1171
|
+
adults: urlParams.adults ? +urlParams.adults : undefined,
|
|
1172
|
+
children: urlParams.children ? urlParams.children.split(",").map(function (age) { return +age; }) : undefined,
|
|
1173
|
+
},
|
|
1174
|
+
});
|
|
1175
|
+
}
|
|
1176
|
+
}
|
|
1177
|
+
catch (error) {
|
|
1178
|
+
(0,_utils__WEBPACK_IMPORTED_MODULE_3__.logger)("Widget: Error in link click handler: ".concat(error));
|
|
1179
|
+
console.error("Tripfusion: Error in link click handler: ", error);
|
|
1180
|
+
}
|
|
1181
|
+
}
|
|
1182
|
+
function addPageLoadListener() {
|
|
1183
|
+
if (document.readyState === "complete") {
|
|
1184
|
+
onLoadHandler();
|
|
1185
|
+
}
|
|
1186
|
+
else {
|
|
1187
|
+
window.addEventListener("load", onLoadHandler);
|
|
1188
|
+
}
|
|
1189
|
+
}
|
|
1190
|
+
function onLoadHandler() {
|
|
1191
|
+
setTimeout(function () {
|
|
1192
|
+
var _a;
|
|
1193
|
+
var urlParams = (0,_utils__WEBPACK_IMPORTED_MODULE_3__.getParamsFromUrl)(new URLSearchParams(window.location.search));
|
|
1194
|
+
if (urlParams.tripfusion === "true" && (client || urlParams.client) && (propertyId || urlParams.propertyId)) {
|
|
1195
|
+
book({
|
|
1196
|
+
config: {
|
|
1197
|
+
client: (_a = urlParams.client) !== null && _a !== void 0 ? _a : client,
|
|
1198
|
+
propertyId: urlParams.propertyId ? +urlParams.propertyId : propertyId,
|
|
1199
|
+
mode: urlParams.mode === _const__WEBPACK_IMPORTED_MODULE_0__.BOOKING_MODE.append ? _const__WEBPACK_IMPORTED_MODULE_0__.BOOKING_MODE.append : _const__WEBPACK_IMPORTED_MODULE_0__.BOOKING_MODE.normal,
|
|
1200
|
+
bookingId: (urlParams === null || urlParams === void 0 ? void 0 : urlParams.bookingId) && (urlParams === null || urlParams === void 0 ? void 0 : urlParams.mode) === _const__WEBPACK_IMPORTED_MODULE_0__.BOOKING_MODE.append ? +urlParams.bookingId : null,
|
|
1201
|
+
},
|
|
1202
|
+
bookingData: {
|
|
1203
|
+
offerId: urlParams.offerId ? +urlParams.offerId : undefined,
|
|
1204
|
+
checkIn: urlParams.checkIn,
|
|
1205
|
+
checkOut: urlParams.checkOut,
|
|
1206
|
+
adults: urlParams.adults ? +urlParams.adults : undefined,
|
|
1207
|
+
children: urlParams.children ? urlParams.children.split(",").map(function (age) { return +age; }) : undefined,
|
|
1208
|
+
},
|
|
1209
|
+
});
|
|
1210
|
+
}
|
|
1211
|
+
}, 500);
|
|
1212
|
+
}
|
|
1213
|
+
function initResumeWidget() {
|
|
1214
|
+
var checkIfDocumentLoadedInterval = setInterval(function () {
|
|
1215
|
+
if (document.readyState === "complete") {
|
|
1216
|
+
(0,_dom__WEBPACK_IMPORTED_MODULE_1__.injectResumeButton)();
|
|
1217
|
+
addLinkEventListeners();
|
|
1218
|
+
clearInterval(checkIfDocumentLoadedInterval);
|
|
1219
|
+
}
|
|
1220
|
+
}, 100);
|
|
1221
|
+
addPageLoadListener();
|
|
1222
|
+
}
|
|
1223
|
+
function book(props) {
|
|
1224
|
+
var _a, _b, _c, _d, _e;
|
|
1225
|
+
try {
|
|
1226
|
+
var widget_1 = document.getElementById(_const__WEBPACK_IMPORTED_MODULE_0__.WIDGET_ID), widgetWrapper_1 = document.getElementById(_const__WEBPACK_IMPORTED_MODULE_0__.WIDGET_WRAPPER_ID), resumeWidget = document.getElementById(_const__WEBPACK_IMPORTED_MODULE_0__.RESUME_BUTTON_ID), resumeWidgetClass = resumeWidget ? resumeWidget.getAttribute("class") : null;
|
|
1227
|
+
if (resumeWidgetClass === null || resumeWidgetClass === void 0 ? void 0 : resumeWidgetClass.includes("dismiss-btn")) {
|
|
1228
|
+
resumeWidget.setAttribute("class", "dismiss-btn-slide-out");
|
|
1229
|
+
}
|
|
1230
|
+
var iframeConfig = __assign(__assign({}, props), { config: __assign(__assign({}, props === null || props === void 0 ? void 0 : props.config), { client: (_b = (_a = props === null || props === void 0 ? void 0 : props.config) === null || _a === void 0 ? void 0 : _a.client) !== null && _b !== void 0 ? _b : client, propertyId: (_d = (_c = props === null || props === void 0 ? void 0 : props.config) === null || _c === void 0 ? void 0 : _c.propertyId) !== null && _d !== void 0 ? _d : propertyId }) });
|
|
1231
|
+
if (JSON.stringify(bookingContext) !== JSON.stringify(iframeConfig)) {
|
|
1232
|
+
isIframeReady = false;
|
|
1233
|
+
(0,_dom__WEBPACK_IMPORTED_MODULE_1__.displayLoadingOverlay)();
|
|
1234
|
+
(_e = document.getElementById(_const__WEBPACK_IMPORTED_MODULE_0__.WIDGET_IFRAME_ID)) === null || _e === void 0 ? void 0 : _e.remove();
|
|
1235
|
+
(0,_dom__WEBPACK_IMPORTED_MODULE_1__.injectIframe)(iframeConfig);
|
|
1236
|
+
bookingContext = iframeConfig;
|
|
1237
|
+
var resumeButton = document.getElementById(_const__WEBPACK_IMPORTED_MODULE_0__.RESUME_BUTTON_ID);
|
|
1238
|
+
var resumeButtonText = resumeButton === null || resumeButton === void 0 ? void 0 : resumeButton.querySelector("span");
|
|
1239
|
+
if (resumeButtonText) {
|
|
1240
|
+
resumeButtonText.innerHTML = "Complete your booking";
|
|
1241
|
+
}
|
|
1242
|
+
}
|
|
1243
|
+
var intervalId_1 = setInterval(function () {
|
|
1244
|
+
var _a;
|
|
1245
|
+
if (!isIframeReady) {
|
|
1246
|
+
return;
|
|
1247
|
+
}
|
|
1248
|
+
(_a = document.getElementById(_const__WEBPACK_IMPORTED_MODULE_0__.LOADER_ID)) === null || _a === void 0 ? void 0 : _a.remove();
|
|
1249
|
+
clearInterval(intervalId_1);
|
|
1250
|
+
if (widget_1.style.display === "none") {
|
|
1251
|
+
Object.assign(widgetWrapper_1.style, {
|
|
1252
|
+
zIndex: 1000000000011,
|
|
1253
|
+
height: "100%",
|
|
1254
|
+
background: "rgba(0, 0, 0, .4)",
|
|
1255
|
+
});
|
|
1256
|
+
(0,_dom__WEBPACK_IMPORTED_MODULE_1__.lockPageScroll)();
|
|
1257
|
+
setTimeout(function () {
|
|
1258
|
+
widget_1.style.display = "block";
|
|
1259
|
+
widget_1.setAttribute("class", "slide-in");
|
|
1260
|
+
}, 20);
|
|
1261
|
+
setTimeout(function () {
|
|
1262
|
+
var widgetIframe = document.getElementById(_const__WEBPACK_IMPORTED_MODULE_0__.WIDGET_IFRAME_ID);
|
|
1263
|
+
widgetIframe === null || widgetIframe === void 0 ? void 0 : widgetIframe.focus();
|
|
1264
|
+
}, 250);
|
|
1265
|
+
}
|
|
1266
|
+
var resumeButton = document.getElementById(_const__WEBPACK_IMPORTED_MODULE_0__.RESUME_BUTTON_ID);
|
|
1267
|
+
resumeButton === null || resumeButton === void 0 ? void 0 : resumeButton.addEventListener("click", function () {
|
|
1268
|
+
try {
|
|
1269
|
+
var resumeButtonClass = resumeButton.getAttribute("class");
|
|
1270
|
+
if (resumeButtonClass === null || resumeButtonClass === void 0 ? void 0 : resumeButtonClass.includes("dismiss-btn")) {
|
|
1271
|
+
resumeButton.setAttribute("class", "dismiss-btn-slide-out");
|
|
1272
|
+
}
|
|
1273
|
+
Object.assign(widgetWrapper_1.style, {
|
|
1274
|
+
zIndex: 1000000000011,
|
|
1275
|
+
height: "100%",
|
|
1276
|
+
background: "rgba(0, 0, 0, .5)",
|
|
1277
|
+
});
|
|
1278
|
+
document.body.style.overflow = "hidden";
|
|
1279
|
+
widget_1.style.display = "block";
|
|
1280
|
+
widget_1.setAttribute("class", "slide-in");
|
|
1281
|
+
setTimeout(function () {
|
|
1282
|
+
var widgetIframe = document.getElementById(_const__WEBPACK_IMPORTED_MODULE_0__.WIDGET_IFRAME_ID);
|
|
1283
|
+
widgetIframe === null || widgetIframe === void 0 ? void 0 : widgetIframe.focus();
|
|
1284
|
+
}, 500);
|
|
1285
|
+
}
|
|
1286
|
+
catch (error) {
|
|
1287
|
+
(0,_utils__WEBPACK_IMPORTED_MODULE_3__.logger)("Widget: resume button error: ".concat(error));
|
|
1288
|
+
console.error("Tripfusion: resume button error", error);
|
|
1289
|
+
}
|
|
1290
|
+
});
|
|
1291
|
+
}, 100);
|
|
1292
|
+
}
|
|
1293
|
+
catch (error) {
|
|
1294
|
+
(0,_utils__WEBPACK_IMPORTED_MODULE_3__.logger)("Widget: failed to book: ".concat(error));
|
|
1295
|
+
console.error("Tripfusion: failed to book: ".concat(error));
|
|
1296
|
+
}
|
|
1297
|
+
}
|
|
1298
|
+
function initTripfusionSdk() {
|
|
1299
|
+
var _a;
|
|
1300
|
+
try {
|
|
1301
|
+
var jsSdk = document.getElementById(_const__WEBPACK_IMPORTED_MODULE_0__.SDK_SCRIPT_ID);
|
|
1302
|
+
var jsSdkSrc = jsSdk.getAttribute("src");
|
|
1303
|
+
var urlParams = (0,_utils__WEBPACK_IMPORTED_MODULE_3__.getParamsFromUrl)(new URLSearchParams(jsSdkSrc.substring(jsSdkSrc.indexOf("?"))));
|
|
1304
|
+
client = (_a = urlParams["client"]) !== null && _a !== void 0 ? _a : null;
|
|
1305
|
+
propertyId = urlParams["propertyId"] ? +urlParams["propertyId"] : null;
|
|
1306
|
+
if (!client || !propertyId) {
|
|
1307
|
+
throw new Error("(!) Tripfusion: client and propertyId are required.");
|
|
1308
|
+
}
|
|
1309
|
+
initResumeWidget();
|
|
1310
|
+
Object.assign(window, { book: book, closeWidget: _dom__WEBPACK_IMPORTED_MODULE_1__.closeWidget });
|
|
1311
|
+
window.onmessage = function (e) {
|
|
1312
|
+
var message = e.data;
|
|
1313
|
+
switch (message.type) {
|
|
1314
|
+
case "tripfusion-widget-ready": {
|
|
1315
|
+
isIframeReady = true;
|
|
1316
|
+
break;
|
|
1317
|
+
}
|
|
1318
|
+
case "tripfusion-booking-completed": {
|
|
1319
|
+
var resumeButton = document.getElementById(_const__WEBPACK_IMPORTED_MODULE_0__.RESUME_BUTTON_ID);
|
|
1320
|
+
var resumeButtonText = resumeButton === null || resumeButton === void 0 ? void 0 : resumeButton.querySelector("span");
|
|
1321
|
+
if (resumeButtonText) {
|
|
1322
|
+
resumeButtonText.innerHTML = "Booking completed!";
|
|
1323
|
+
}
|
|
1324
|
+
break;
|
|
1325
|
+
}
|
|
1326
|
+
case "tripfusion-set-client-theme": {
|
|
1327
|
+
var messageData = message.data;
|
|
1328
|
+
var clientTheme = messageData.primary;
|
|
1329
|
+
var resumeButton = document.getElementById(_const__WEBPACK_IMPORTED_MODULE_0__.RESUME_BUTTON_ID);
|
|
1330
|
+
var widgetHeader = document.getElementById(_const__WEBPACK_IMPORTED_MODULE_0__.WIDGET_HEADER_ID);
|
|
1331
|
+
if (clientTheme) {
|
|
1332
|
+
if (resumeButton) {
|
|
1333
|
+
resumeButton.style["backgroundColor"] = clientTheme;
|
|
1334
|
+
}
|
|
1335
|
+
if (widgetHeader) {
|
|
1336
|
+
widgetHeader.style["backgroundColor"] = clientTheme;
|
|
1337
|
+
}
|
|
1338
|
+
}
|
|
1339
|
+
else {
|
|
1340
|
+
resumeButton === null || resumeButton === void 0 ? void 0 : resumeButton.removeAttribute("style");
|
|
1341
|
+
widgetHeader === null || widgetHeader === void 0 ? void 0 : widgetHeader.removeAttribute("style");
|
|
1342
|
+
}
|
|
1343
|
+
break;
|
|
1344
|
+
}
|
|
1345
|
+
default:
|
|
1346
|
+
break;
|
|
1347
|
+
}
|
|
1348
|
+
};
|
|
1349
|
+
}
|
|
1350
|
+
catch (error) {
|
|
1351
|
+
(0,_utils__WEBPACK_IMPORTED_MODULE_3__.logger)("Widget: failed to init Tripfusion JS SDK: ".concat(error));
|
|
1352
|
+
console.error("Tripfusion: failed to init SDK: ".concat(error));
|
|
1353
|
+
}
|
|
1354
|
+
}
|
|
1355
|
+
initTripfusionSdk();
|
|
1356
|
+
|
|
1357
|
+
/******/ })()
|
|
1358
|
+
;
|
|
1359
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUMwRztBQUNqQjtBQUN6Riw4QkFBOEIsbUZBQTJCLENBQUMsNEZBQXFDO0FBQy9GLDJGQUEyRjtBQUMzRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPLGlGQUFpRixVQUFVLFlBQVksYUFBYSxXQUFXLFVBQVUsWUFBWSxhQUFhLE1BQU0sS0FBSyxZQUFZLGFBQWEsT0FBTyxLQUFLLFVBQVUsWUFBWSxXQUFXLFVBQVUsWUFBWSxhQUFhLGFBQWEsYUFBYSxXQUFXLFlBQVksV0FBVyxVQUFVLFlBQVksYUFBYSxhQUFhLE9BQU8sS0FBSyxZQUFZLGFBQWEsV0FBVyxZQUFZLGFBQWEsYUFBYSxhQUFhLGFBQWEsT0FBTyxLQUFLLFlBQVksV0FBVyxVQUFVLFVBQVUsVUFBVSxZQUFZLE9BQU8sS0FBSyxZQUFZLFdBQVcsVUFBVSxVQUFVLFVBQVUsTUFBTSxLQUFLLFVBQVUsVUFBVSxZQUFZLGFBQWEsV0FBVyxVQUFVLFVBQVUsVUFBVSxZQUFZLGFBQWEsYUFBYSxhQUFhLGFBQWEsV0FBVyxZQUFZLGFBQWEsT0FBTyxLQUFLLEtBQUssWUFBWSxXQUFXLFVBQVUsVUFBVSxNQUFNLE1BQU0sS0FBSyxVQUFVLFlBQVksYUFBYSxhQUFhLFdBQVcsWUFBWSxhQUFhLFdBQVcsT0FBTyxLQUFLLFVBQVUsVUFBVSxPQUFPLEtBQUssWUFBWSxhQUFhLGFBQWEsV0FBVyxZQUFZLGFBQWEsT0FBTyxLQUFLLFlBQVksYUFBYSxXQUFXLFVBQVUsVUFBVSxVQUFVLFlBQVksYUFBYSxXQUFXLFlBQVksWUFBWSxLQUFLLFlBQVksYUFBYSxPQUFPLEtBQUssWUFBWSxPQUFPLE1BQU0sWUFBWSxXQUFXLFlBQVksV0FBVyxVQUFVLFlBQVksYUFBYSxhQUFhLFdBQVcsVUFBVSxNQUFNLEtBQUssWUFBWSxNQUFNLE1BQU0sS0FBSyxZQUFZLGFBQWEsYUFBYSxhQUFhLE9BQU8sS0FBSyxZQUFZLGFBQWEsYUFBYSxhQUFhLE9BQU8sS0FBSyxVQUFVLE9BQU8sS0FBSyxZQUFZLGFBQWEsYUFBYSxhQUFhLE9BQU8sS0FBSyxVQUFVLE9BQU8sS0FBSyxZQUFZLGFBQWEsYUFBYSxXQUFXLE9BQU8sS0FBSyxVQUFVLFlBQVksYUFBYSxPQUFPLEtBQUssWUFBWSxhQUFhLGFBQWEsYUFBYSxPQUFPLEtBQUssWUFBWSxhQUFhLGFBQWEsYUFBYSxhQUFhLE9BQU8sS0FBSyxZQUFZLGFBQWEsYUFBYSxhQUFhLGFBQWEsT0FBTyxLQUFLLEtBQUssWUFBWSxhQUFhLGFBQWEsYUFBYSxhQUFhLE9BQU8sS0FBSyxZQUFZLGFBQWEsYUFBYSxhQUFhLGFBQWEsTUFBTSxNQUFNLEtBQUssS0FBSyxZQUFZLE1BQU0sTUFBTSxLQUFLLEtBQUssWUFBWSxNQUFNLE1BQU0sS0FBSyxLQUFLLFlBQVksTUFBTSxNQUFNLEtBQUssS0FBSyxZQUFZLE1BQU0sTUFBTSxLQUFLLEtBQUssWUFBWSxPQUFPLEtBQUssWUFBWSxNQUFNLE1BQU0sS0FBSyxLQUFLLFlBQVksT0FBTyxLQUFLLFlB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dUJBQVosWUFBWSxDQUFFLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQztvQkFDM0MsQ0FBQztvQkFDRCxNQUFNO2dCQUNWLENBQUM7Z0JBQ0Q7b0JBQ0ksTUFBTTtZQUNkLENBQUM7UUFDTCxDQUFDLENBQUM7SUFDTixDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNiLDhDQUFNLENBQUMsb0RBQTZDLEtBQUssQ0FBRSxDQUFDLENBQUM7UUFDN0QsT0FBTyxDQUFDLEtBQUssQ0FBQywwQ0FBbUMsS0FBSyxDQUFFLENBQUMsQ0FBQztJQUM5RCxDQUFDO0FBQ0wsQ0FBQztBQUVELGlCQUFpQixFQUFFLENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9AdmFjYXlvdS90cmlwZnVzaW9uLWpzLXNkay8uL3NyYy9zdHlsZXMuY3NzIiwid2VicGFjazovL0B2YWNheW91L3RyaXBmdXNpb24tanMtc2RrLy4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qcyIsIndlYnBhY2s6Ly9AdmFjYXlvdS90cmlwZnVzaW9uLWpzLXNkay8uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9zb3VyY2VNYXBzLmpzIiwid2VicGFjazovL0B2YWNheW91L3RyaXBmdXNpb24tanMtc2RrLy4vc3JjL3N0eWxlcy5jc3M/NDRiMiIsIndlYnBhY2s6Ly9AdmFjYXlvdS90cmlwZnVzaW9uLWpzLXNkay8uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qcyIsIndlYnBhY2s6Ly9AdmFjYXlvdS90cmlwZnVzaW9uLWpzLXNkay8uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydEJ5U2VsZWN0b3IuanMiLCJ3ZWJwYWNrOi8vQHZhY2F5b3UvdHJpcGZ1c2lvbi1qcy1zZGsvLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRTdHlsZUVsZW1lbnQuanMiLCJ3ZWJwYWNrOi8vQHZhY2F5b3UvdHJpcGZ1c2lvbi1qcy1zZGsvLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zZXRBdHRyaWJ1dGVzV2l0aG91dEF0dHJpYnV0ZXMuanMiLCJ3ZWJwYWNrOi8vQHZhY2F5b3UvdHJpcGZ1c2lvbi1qcy1zZGsvLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZURvbUFQSS5qcyIsIndlYnBhY2s6Ly9AdmFjYXlvdS90cmlwZnVzaW9uLWpzLXNkay8uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlVGFnVHJhbnNmb3JtLmpzIiwid2VicGFjazovL0B2YWNheW91L3RyaXBmdXNpb24tanMtc2RrLy4vc3JjL2NvbnN0LnRzIiwid2VicGFjazovL0B2YWNheW91L3RyaXBmdXNpb24tanMtc2RrLy4vc3JjL2RvbS50cyIsIndlYnBhY2s6Ly9AdmFjYXlvdS90cmlwZnVzaW9uLWpzLXNkay8uL3NyYy91dGlscy50cyIsIndlYnBhY2s6Ly9AdmFjYXlvdS90cmlwZnVzaW9uLWpzLXNkay93ZWJwYWNrL2Jvb3RzdHJhcCIsIndlYnBhY2s6Ly9AdmFjYXlvdS90cmlwZnVzaW9uLWpzLXNkay93ZWJwYWNrL3J1bnRpbWUvY29tcGF0IGdldCBkZWZhdWx0IGV4cG9ydCIsIndlYnBhY2s6Ly9AdmFjYXlvdS90cmlwZnVzaW9uLWpzLXNkay93ZWJwYWNrL3J1bnRpbWUvZGVmaW5lIHByb3BlcnR5IGdldHRlcnMiLCJ3ZWJwYWNrOi8vQHZhY2F5b3UvdHJpcGZ1c2lvbi1qcy1zZGsvd2VicGFjay9ydW50aW1lL2hhc093blByb3BlcnR5IHNob3J0aGFuZCIsIndlYnBhY2s6Ly9AdmFjYXlvdS90cmlwZnVzaW9uLWpzLXNkay93ZWJwYWNrL3J1bnRpbWUvbWFrZSBuYW1lc3BhY2Ugb2JqZWN0Iiwid2VicGFjazovL0B2YWNheW91L3RyaXBmdXNpb24tanMtc2RrL3dlYnBhY2svcnVudGltZS9ub25jZSIsIndlYnBhY2s6Ly9AdmFjYXlvdS90cmlwZnVzaW9uLWpzLXNkay8uL3NyYy9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL3NvdXJjZU1hcHMuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgXCJAaW1wb3J0IHVybChodHRwczovL3VzZS50eXBla2l0Lm5ldC9zYWc4Y2ViLmNzcyk7XCJdKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBgI3RyaXBmdXNpb24tbG9hZGVyIHtcbiAgICBjb2xvcjogd2hpdGU7XG4gICAgbWFyZ2luLXJpZ2h0OiAtNTAlO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDUwJTtcbiAgICBsZWZ0OiA1MCU7XG4gICAgZm9udC1mYW1pbHk6IGZ1dHVyYS1sdC13MDEtYm9vaywgZnV0dXJhLWx0LXcwNS1ib29rLCBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xufVxuI3RyaXBmdXNpb24tbG9hZGVyIHNwYW4ge1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIGZvbnQtc2l6ZTogMS4zcmVtO1xufVxuXG4jdHJpcGZ1c2lvbi1yZXN1bWUtYnV0dG9uIHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWV2ZW5seTtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIHBhZGRpbmc6IDEycHggMzJweDtcbiAgICBib3gtc2hhZG93OiAwcHggMHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMjUpLCAwcHggNHB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMSk7XG4gICAgcmlnaHQ6IDMwcHg7XG4gICAgei1pbmRleDogMTAwMDAwMDAwMDAwO1xuICAgIGJvdHRvbTogNDBweDtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDQwMHB4KTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDkyYjQzO1xuICAgIGJvcmRlci1yYWRpdXM6IDIzcHg7XG59XG5cbiN0cmlwZnVzaW9uLXJlc3VtZS1idXR0b24gc3BhbiB7XG4gICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDtcbiAgICBmb250LWZhbWlseTogc3dlZXQtc2Fucy1wcm8sIHNhbnMtc2VyaWY7XG4gICAgZm9udC1zaXplOiAxcmVtO1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgbGluZS1oZWlnaHQ6IDEuMjtcbiAgICBsZXR0ZXItc3BhY2luZzogMS41cHg7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZSAhaW1wb3J0YW50O1xuICAgIGNvbG9yOiB3aGl0ZSAhaW1wb3J0YW50O1xufVxuXG4jdHJpcGZ1c2lvbi13aWRnZXQtd3JhcHBlciB7XG4gICAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwKTtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgdG9wOiAwO1xuICAgIHJpZ2h0OiAwO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQgMC41cyBlYXNlLW91dDtcbn1cblxuI3RyaXBmdXNpb24td2lkZ2V0IHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHRvcDogMHB4O1xuICAgIHJpZ2h0OiAwcHg7XG59XG5cbiN0cmlwZnVzaW9uLXdpZGdldC1pbm5lci13cmFwcGVyIHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIG1pbi13aWR0aDogMzIwcHg7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHJpZ2h0OiAwcHg7XG4gICAgYm90dG9tOiAwcHg7XG4gICAgYmFja2dyb3VuZDogd2hpdGU7XG4gICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgIGJveC1zaGFkb3c6IDAgMnB4IDEwcHggMCByZ2JhKDAsIDAsIDAsIDAuMik7XG4gICAgZm9udC1mYW1pbHk6IFwiUm9ib3RvXCIsIFwiSGVsdmV0aWNhXCIsIFwiQXJpYWxcIiwgc2Fucy1zZXJpZjtcbiAgICBmb250LXdlaWdodDogNDAwO1xuICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICBsaW5lLWhlaWdodDogMS41O1xuICAgIGxldHRlci1zcGFjaW5nOiAwLjAwOTM4ZW07XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuICAgICN0cmlwZnVzaW9uLXdpZGdldC1pbm5lci13cmFwcGVyIHtcbiAgICAgICAgaGVpZ2h0OiBjYWxjKDEwMCUgLSA0MHB4KTtcbiAgICAgICAgcmlnaHQ6IDIwcHg7XG4gICAgICAgIGJvdHRvbTogMjBweDtcbiAgICAgICAgd2lkdGg6IDUwMHB4O1xuICAgIH1cbn1cblxuI3RyaXBmdXNpb24td2lkZ2V0LWhlYWRlciB7XG4gICAgaGVpZ2h0OiA2MHB4O1xuICAgIGJhY2tncm91bmQtY29sb3I6ICMwOTJiNDM7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNmMWYxZjE7XG4gICAgcGFkZGluZzogMCAxNnB4IDAgMTZweDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGNvbG9yOiB3aGl0ZTtcbn1cblxuI3RyaXBmdXNpb24td2lkZ2V0LWlmcmFtZSB7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIGJvcmRlcjogbm9uZTtcbn1cblxuI3RyaXBmdXNpb24td2lkZ2V0LWhlYWRlci10aXRsZSB7XG4gICAgZm9udC1mYW1pbHk6IHN3ZWV0LXNhbnMtcHJvLCBzYW5zLXNlcmlmO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjI7XG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICBmb250LXNpemU6IDFyZW07XG4gICAgbGV0dGVyLXNwYWNpbmc6IDEuNXB4O1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG59XG5cbiN0cmlwZnVzaW9uLXdpZGdldC1jbG9zZS1idXR0b24ge1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBwYWRkaW5nOiAwO1xuICAgIHdpZHRoOiAyZW07XG4gICAgaGVpZ2h0OiAyZW07XG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgIGZvbnQ6IGluaGVyaXQ7XG4gICAgdGV4dC1pbmRlbnQ6IDEwMCU7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuXG4gICAgJjpmb2N1cyB7XG4gICAgICAgIG91dGxpbmU6IHNvbGlkIDAgdHJhbnNwYXJlbnQ7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4wNCk7XG4gICAgfVxuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4wNCk7XG4gICAgfVxuXG4gICAgJjpiZWZvcmUsXG4gICAgJjphZnRlciB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiAyNSU7XG4gICAgICAgIGxlZnQ6IGNhbGMoNTAlIC0gMC4wNjI1ZW0pO1xuICAgICAgICB3aWR0aDogMC4xMjVlbTtcbiAgICAgICAgaGVpZ2h0OiA1MCU7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDAuMTI1ZW07XG4gICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDQ1ZGVnKTtcbiAgICAgICAgYmFja2dyb3VuZDogY3VycmVudGNvbG9yO1xuICAgICAgICBjb2xvcjogd2hpdGU7XG4gICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgfVxuXG4gICAgJjphZnRlciB7XG4gICAgICAgIHRyYW5zZm9ybTogcm90YXRlKC00NWRlZyk7XG4gICAgfVxufVxuXG4uZGlzbWlzcy1idG4tc2xpZGUtaW4ge1xuICAgIC13ZWJraXQtdHJhbnNpdGlvbjogNTAwbXM7XG4gICAgLW1vei10cmFuc2l0aW9uOiA1MDBtcztcbiAgICB0cmFuc2l0aW9uOiA1MDBtcztcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCkgIWltcG9ydGFudDtcbn1cblxuLmRpc21pc3MtYnRuLXNsaWRlLW91dCB7XG4gICAgLXdlYmtpdC10cmFuc2l0aW9uOiA1MDBtcztcbiAgICAtbW96LXRyYW5zaXRpb246IDUwMG1zO1xuICAgIHRyYW5zaXRpb246IDUwMG1zO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCg0MDBweCkgIWltcG9ydGFudDtcbn1cblxuLmRpc21pc3MtYnRuLXNsaWRlLW91dCBzcGFuIHtcbiAgICBkaXNwbGF5OiBub25lO1xufVxuXG4uZGlzbWlzcy1idG4tcmVzaXplLWluIHtcbiAgICB3aWR0aDogNDZweCAhaW1wb3J0YW50O1xuICAgIGhlaWdodDogNDZweCAhaW1wb3J0YW50O1xuICAgIHRyYW5zaXRpb246IDUwMG1zO1xuICAgIHJpZ2h0OiAzMHB4ICFpbXBvcnRhbnQ7XG59XG5cbi5kaXNtaXNzLWJ0bi1yZXNpemUtaW4gc3BhbiB7XG4gICAgZGlzcGxheTogbm9uZTtcbn1cblxuLmRpc21pc3MtYnRuLXJlc2l6ZS1pbjpob3ZlciB7XG4gICAgd2lkdGg6IDIxN3B4ICFpbXBvcnRhbnQ7XG4gICAgaGVpZ2h0OiA0NnB4ICFpbXBvcnRhbnQ7XG4gICAgdHJhbnNpdGlvbjogYWxsIDMwMG1zIGxpbmVhcjtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG59XG5cbi5kaXNtaXNzLWJ0bi1yZXNpemUtaW46aG92ZXIgc3BhbiB7XG4gICAgZGlzcGxheTogaW5saW5lO1xuICAgIGhlaWdodDogMjBweCAhaW1wb3J0YW50O1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi5kaXNtaXNzLWJ0bi1yZXNpemUtb3V0IHtcbiAgICB3aWR0aDogNDZweCAhaW1wb3J0YW50O1xuICAgIGhlaWdodDogNDZweCAhaW1wb3J0YW50O1xuICAgIHRyYW5zaXRpb246IDUwMG1zO1xuICAgIHJpZ2h0OiAtMTAwcHggIWltcG9ydGFudDtcbn1cblxuLnNsaWRlLWluIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7XG4gICAgYW5pbWF0aW9uOiBzbGlkZS1pbiAwLjhzIGZvcndhcmRzICFpbXBvcnRhbnQ7XG4gICAgLXdlYmtpdC1hbmltYXRpb246IHNsaWRlLWluIDAuOHMgZm9yd2FyZHMgIWltcG9ydGFudDtcbiAgICB6LWluZGV4OiAxMDAwMDAwMDAwMDAwO1xufVxuXG4uc2xpZGUtb3V0IHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7XG4gICAgYW5pbWF0aW9uOiBzbGlkZS1vdXQgMXMgZm9yd2FyZHMgIWltcG9ydGFudDtcbiAgICAtd2Via2l0LWFuaW1hdGlvbjogc2xpZGUtb3V0IDFzIGZvcndhcmRzICFpbXBvcnRhbnQ7XG4gICAgei1pbmRleDogLTEwMDAwMDAwMDAwMDA7XG59XG5cbkBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDQ5NXB4KSB7XG4gICAgLnNsaWRlLWluIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMCUpO1xuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMDAlKTtcbiAgICAgICAgYW5pbWF0aW9uOiBzbGlkZS11cCAwLjhzIGZvcndhcmRzICFpbXBvcnRhbnQ7XG4gICAgICAgIC13ZWJraXQtYW5pbWF0aW9uOiBzbGlkZS11cCAwLjhzIGZvcndhcmRzICFpbXBvcnRhbnQ7XG4gICAgICAgIHotaW5kZXg6IDEwMDAwMDAwMDAwMDA7XG4gICAgfVxuXG4gICAgLnNsaWRlLW91dCB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMDAlKTtcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTAwJSk7XG4gICAgICAgIGFuaW1hdGlvbjogc2xpZGUtZG93biAwLjVzIGZvcndhcmRzICFpbXBvcnRhbnQ7XG4gICAgICAgIC13ZWJraXQtYW5pbWF0aW9uOiBzbGlkZS1kb3duIDFzIGZvcndhcmRzICFpbXBvcnRhbnQ7XG4gICAgICAgIHotaW5kZXg6IC0xMDAwMDAwMDAwMDAwO1xuICAgIH1cbn1cblxuQGtleWZyYW1lcyBzbGlkZS1pbiB7XG4gICAgMTAwJSB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwJSk7XG4gICAgfVxufVxuXG5ALXdlYmtpdC1rZXlmcmFtZXMgc2xpZGUtaW4ge1xuICAgIDEwMCUge1xuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgwJSk7XG4gICAgfVxufVxuXG5Aa2V5ZnJhbWVzIHNsaWRlLXVwIHtcbiAgICAxMDAlIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDAlKTtcbiAgICB9XG59XG5cbkAtd2Via2l0LWtleWZyYW1lcyBzbGlkZS11cCB7XG4gICAgMTAwJSB7XG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDAlKTtcbiAgICB9XG59XG5cbkBrZXlmcmFtZXMgc2xpZGUtb3V0IHtcbiAgICAwJSB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwJSk7XG4gICAgfVxuXG4gICAgMTAwJSB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTtcbiAgICB9XG59XG5cbkAtd2Via2l0LWtleWZyYW1lcyBzbGlkZS1vdXQge1xuICAgIDAlIHtcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCUpO1xuICAgIH1cblxuICAgIDEwMCUge1xuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTtcbiAgICB9XG59XG5cbkBrZXlmcmFtZXMgc2xpZGUtZG93biB7XG4gICAgMCUge1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCUpO1xuICAgIH1cblxuICAgIDEwMCUge1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTAwJSk7XG4gICAgfVxufVxuXG5ALXdlYmtpdC1rZXlmcmFtZXMgc2xpZGUtZG93biB7XG4gICAgMCUge1xuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgwJSk7XG4gICAgfVxuXG4gICAgMTAwJSB7XG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMCUpO1xuICAgIH1cbn1cbmAsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vc3JjL3N0eWxlcy5jc3NcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIkFBRUE7SUFDSSxZQUFZO0lBQ1osa0JBQWtCO0lBQ2xCLGtCQUFrQjtJQUNsQixRQUFRO0lBQ1IsU0FBUztJQUNULGlGQUFpRjtJQUNqRixnQ0FBZ0M7QUFDcEM7QUFDQTtJQUNJLGlCQUFpQjtJQUNqQixpQkFB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bkMsMkNBQTJDO0lBQzNDLG1EQUFtRDtJQUNuRCx1QkFBdUI7QUFDM0I7O0FBRUE7SUFDSTtRQUNJLDJCQUEyQjtRQUMzQixtQ0FBbUM7UUFDbkMsNENBQTRDO1FBQzVDLG9EQUFvRDtRQUNwRCxzQkFBc0I7SUFDMUI7O0lBRUE7UUFDSSwyQkFBMkI7UUFDM0IsbUNBQW1DO1FBQ25DLDhDQUE4QztRQUM5QyxvREFBb0Q7UUFDcEQsdUJBQXVCO0lBQzNCO0FBQ0o7O0FBRUE7SUFDSTtRQUNJLHlCQUF5QjtJQUM3QjtBQUNKOztBQUVBO0lBQ0k7UUFDSSxpQ0FBaUM7SUFDckM7QUFDSjs7QUFFQTtJQUNJO1FBQ0kseUJBQXlCO0lBQzdCO0FBQ0o7O0FBRUE7SUFDSTtRQUNJLGlDQUFpQztJQUNyQztBQUNKOztBQUVBO0lBQ0k7UUFDSSx5QkFBeUI7SUFDN0I7O0lBRUE7UUFDSSwyQkFBMkI7SUFDL0I7QUFDSjs7QUFFQTtJQUNJO1FBQ0ksaUNBQWlDO0lBQ3JDOztJQUVBO1FBQ0ksbUNBQW1DO0lBQ3ZDO0FBQ0o7O0FBRUE7SUFDSTtRQUNJLHlCQUF5QjtJQUM3Qjs7SUFFQTtRQUNJLDJCQUEyQjtJQUMvQjtBQUNKOztBQUVBO0lBQ0k7UUFDSSxpQ0FBaUM7SUFDckM7O0lBRUE7UUFDSSxtQ0FBbUM7SUFDdkM7QUFDSlwiLFwic291cmNlc0NvbnRlbnRcIjpbXCJAaW1wb3J0IHVybChcXFwiaHR0cHM6Ly91c2UudHlwZWtpdC5uZXQvc2FnOGNlYi5jc3NcXFwiKTtcXG5cXG4jdHJpcGZ1c2lvbi1sb2FkZXIge1xcbiAgICBjb2xvcjogd2hpdGU7XFxuICAgIG1hcmdpbi1yaWdodDogLTUwJTtcXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgICB0b3A6IDUwJTtcXG4gICAgbGVmdDogNTAlO1xcbiAgICBmb250LWZhbWlseTogZnV0dXJhLWx0LXcwMS1ib29rLCBmdXR1cmEtbHQtdzA1LWJvb2ssIEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7XFxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xcbn1cXG4jdHJpcGZ1c2lvbi1sb2FkZXIgc3BhbiB7XFxuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xcbiAgICBmb250LXNpemU6IDEuM3JlbTtcXG59XFxuXFxuI3RyaXBmdXNpb24tcmVzdW1lLWJ1dHRvbiB7XFxuICAgIHBvc2l0aW9uOiBmaXhlZDtcXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gICAgY3Vyc29yOiBwb2ludGVyO1xcbiAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWV2ZW5seTtcXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gICAgcGFkZGluZzogMTJweCAzMnB4O1xcbiAgICBib3gtc2hhZG93OiAwcHggMHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMjUpLCAwcHggNHB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMSk7XFxuICAgIHJpZ2h0OiAzMHB4O1xcbiAgICB6LWluZGV4OiAxMDAwMDAwMDAwMDA7XFxuICAgIGJvdHRvbTogNDBweDtcXG4gICAgYm9yZGVyOiBub25lO1xcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoNDAwcHgpO1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDkyYjQzO1xcbiAgICBib3JkZXItcmFkaXVzOiAyM3B4O1xcbn1cXG5cXG4jdHJpcGZ1c2lvbi1yZXN1bWUtYnV0dG9uIHNwYW4ge1xcbiAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50O1xcbiAgICBmb250LWZhbWlseTogc3dlZXQtc2Fucy1wcm8sIHNhbnMtc2VyaWY7XFxuICAgIGZvbnQtc2l6ZTogMXJlbTtcXG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcXG4gICAgbGluZS1oZWlnaHQ6IDEuMjtcXG4gICAgbGV0dGVyLXNwYWNpbmc6IDEuNXB4O1xcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlICFpbXBvcnRhbnQ7XFxuICAgIGNvbG9yOiB3aGl0ZSAhaW1wb3J0YW50O1xcbn1cXG5cXG4jdHJpcGZ1c2lvbi13aWRnZXQtd3JhcHBlciB7XFxuICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMCk7XFxuICAgIHBvc2l0aW9uOiBmaXhlZDtcXG4gICAgdG9wOiAwO1xcbiAgICByaWdodDogMDtcXG4gICAgd2lkdGg6IDEwMCU7XFxuICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQgMC41cyBlYXNlLW91dDtcXG59XFxuXFxuI3RyaXBmdXNpb24td2lkZ2V0IHtcXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgICB3aWR0aDogMTAwJTtcXG4gICAgaGVpZ2h0OiAxMDAlO1xcbiAgICB0b3A6IDBweDtcXG4gICAgcmlnaHQ6IDBweDtcXG59XFxuXFxuI3RyaXBmdXNpb24td2lkZ2V0LWlubmVyLXdyYXBwZXIge1xcbiAgICBwb3NpdGlvbjogZml4ZWQ7XFxuICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxuICAgIG1pbi13aWR0aDogMzIwcHg7XFxuICAgIHdpZHRoOiAxMDAlO1xcbiAgICBoZWlnaHQ6IDEwMCU7XFxuICAgIHJpZ2h0OiAwcHg7XFxuICAgIGJvdHRvbTogMHB4O1xcbiAgICBiYWNrZ3JvdW5kOiB3aGl0ZTtcXG4gICAgYm9yZGVyLXJhZGl1czogOHB4O1xcbiAgICBib3gtc2hhZG93OiAwIDJweCAxMHB4IDAgcmdiYSgwLCAwLCAwLCAwLjIpO1xcbiAgICBmb250LWZhbWlseTogXFxcIlJvYm90b1xcXCIsIFxcXCJIZWx2ZXRpY2FcXFwiLCBcXFwiQXJpYWxcXFwiLCBzYW5zLXNlcmlmO1xcbiAgICBmb250LXdlaWdodDogNDAwO1xcbiAgICBmb250LXNpemU6IDFyZW07XFxuICAgIGxpbmUtaGVpZ2h0OiAxLjU7XFxuICAgIGxldHRlci1zcGFjaW5nOiAwLjAwOTM4ZW07XFxufVxcblxcbkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xcbiAgICAjdHJpcGZ1c2lvbi13aWRnZXQtaW5uZXItd3JhcHBlciB7XFxuICAgICAgICBoZWlnaHQ6IGNhbGMoMTAwJSAtIDQwcHgpO1xcbiAgICAgICAgcmlnaHQ6IDIwcHg7XFxuICAgICAgICBib3R0b206IDIwcHg7XFxuICAgICAgICB3aWR0aDogNTAwcHg7XFxuICAgIH1cXG59XFxuXFxuI3RyaXBmdXNpb24td2lkZ2V0LWhlYWRlciB7XFxuICAgIGhlaWdodDogNjBweDtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzA5MmI0MztcXG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNmMWYxZjE7XFxuICAgIHBhZGRpbmc6IDAgMTZweCAwIDE2cHg7XFxuICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gICAgY29sb3I6IHdoaXRlO1xcbn1cXG5cXG4jdHJpcGZ1c2lvbi13aWRnZXQtaWZyYW1lIHtcXG4gICAgaGVpZ2h0OiAxMDAlO1xcbiAgICBib3JkZXI6IG5vbmU7XFxufVxcblxcbiN0cmlwZnVzaW9uLXdpZGdldC1oZWFkZXItdGl0bGUge1xcbiAgICBmb250LWZhbWlseTogc3dlZXQtc2Fucy1wcm8sIHNhbnMtc2VyaWY7XFxuICAgIGxpbmUtaGVpZ2h0OiAxLjI7XFxuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XFxuICAgIGZvbnQtc2l6ZTogMXJlbTtcXG4gICAgbGV0dGVyLXNwYWNpbmc6IDEuNXB4O1xcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xcbn1cXG5cXG4jdHJpcGZ1c2lvbi13aWRnZXQtY2xvc2UtYnV0dG9uIHtcXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgICBib3JkZXI6IG5vbmU7XFxuICAgIHBhZGRpbmc6IDA7XFxuICAgIHdpZHRoOiAyZW07XFxuICAgIGhlaWdodDogMmVtO1xcbiAgICBib3JkZXItcmFkaXVzOiA1MCU7XFxuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xcbiAgICBmb250OiBpbmhlcml0O1xcbiAgICB0ZXh0LWluZGVudDogMTAwJTtcXG4gICAgY3Vyc29yOiBwb2ludGVyO1xcblxcbiAgICAmOmZvY3VzIHtcXG4gICAgICAgIG91dGxpbmU6IHNvbGlkIDAgdHJhbnNwYXJlbnQ7XFxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMDQpO1xcbiAgICB9XFxuXFxuICAgICY6aG92ZXIge1xcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjA0KTtcXG4gICAgfVxcblxcbiAgICAmOmJlZm9yZSxcXG4gICAgJjphZnRlciB7XFxuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICAgICAgICB0b3A6IDI1JTtcXG4gICAgICAgIGxlZnQ6IGNhbGMoNTAlIC0gMC4wNjI1ZW0pO1xcbiAgICAgICAgd2lkdGg6IDAuMTI1ZW07XFxuICAgICAgICBoZWlnaHQ6IDUwJTtcXG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDAuMTI1ZW07XFxuICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7XFxuICAgICAgICBiYWNrZ3JvdW5kOiBjdXJyZW50Y29sb3I7XFxuICAgICAgICBjb2xvcjogd2hpdGU7XFxuICAgICAgICBjb250ZW50OiBcXFwiXFxcIjtcXG4gICAgfVxcblxcbiAgICAmOmFmdGVyIHtcXG4gICAgICAgIHRyYW5zZm9ybTogcm90YXRlKC00NWRlZyk7XFxuICAgIH1cXG59XFxuXFxuLmRpc21pc3MtYnRuLXNsaWRlLWluIHtcXG4gICAgLXdlYmtpdC10cmFuc2l0aW9uOiA1MDBtcztcXG4gICAgLW1vei10cmFuc2l0aW9uOiA1MDBtcztcXG4gICAgdHJhbnNpdGlvbjogNTAwbXM7XFxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKSAhaW1wb3J0YW50O1xcbn1cXG5cXG4uZGlzbWlzcy1idG4tc2xpZGUtb3V0IHtcXG4gICAgLXdlYmtpdC10cmFuc2l0aW9uOiA1MDBtcztcXG4gICAgLW1vei10cmFuc2l0aW9uOiA1MDBtcztcXG4gICAgdHJhbnNpdGlvbjogNTAwbXM7XFxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCg0MDBweCkgIWltcG9ydGFudDtcXG59XFxuXFxuLmRpc21pc3MtYnRuLXNsaWRlLW91dCBzcGFuIHtcXG4gICAgZGlzcGxheTogbm9uZTtcXG59XFxuXFxuLmRpc21pc3MtYnRuLXJlc2l6ZS1pbiB7XFxuICAgIHdpZHRoOiA0NnB4ICFpbXBvcnRhbnQ7XFxuICAgIGhlaWdodDogNDZweCAhaW1wb3J0YW50O1xcbiAgICB0cmFuc2l0aW9uOiA1MDBtcztcXG4gICAgcmlnaHQ6IDMwcHggIWltcG9ydGFudDtcXG59XFxuXFxuLmRpc21pc3MtYnRuLXJlc2l6ZS1pbiBzcGFuIHtcXG4gICAgZGlzcGxheTogbm9uZTtcXG59XFxuXFxuLmRpc21pc3MtYnRuLXJlc2l6ZS1pbjpob3ZlciB7XFxuICAgIHdpZHRoOiAyMTdweCAhaW1wb3J0YW50O1xcbiAgICBoZWlnaHQ6IDQ2cHggIWltcG9ydGFudDtcXG4gICAgdHJhbnNpdGlvbjogYWxsIDMwMG1zIGxpbmVhcjtcXG4gICAgY3Vyc29yOiBwb2ludGVyO1xcbn1cXG5cXG4uZGlzbWlzcy1idG4tcmVzaXplLWluOmhvdmVyIHNwYW4ge1xcbiAgICBkaXNwbGF5OiBpbmxpbmU7XFxuICAgIGhlaWdodDogMjBweCAhaW1wb3J0YW50O1xcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xcbn1cXG5cXG4uZGlzbWlzcy1idG4tcmVzaXplLW91dCB7XFxuICAgIHdpZHRoOiA0NnB4ICFpbXBvcnRhbnQ7XFxuICAgIGhlaWdodDogNDZweCAhaW1wb3J0YW50O1xcbiAgICB0cmFuc2l0aW9uOiA1MDBtcztcXG4gICAgcmlnaHQ6IC0xMDBweCAhaW1wb3J0YW50O1xcbn1cXG5cXG4uc2xpZGUtaW4ge1xcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7XFxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpO1xcbiAgICBhbmltYXRpb246IHNsaWRlLWluIDAuOHMgZm9yd2FyZHMgIWltcG9ydGFudDtcXG4gICAgLXdlYmtpdC1hbmltYXRpb246IHNsaWRlLWluIDAuOHMgZm9yd2FyZHMgIWltcG9ydGFudDtcXG4gICAgei1pbmRleDogMTAwMDAwMDAwMDAwMDtcXG59XFxuXFxuLnNsaWRlLW91dCB7XFxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTtcXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7XFxuICAgIGFuaW1hdGlvbjogc2xpZGUtb3V0IDFzIGZvcndhcmRzICFpbXBvcnRhbnQ7XFxuICAgIC13ZWJraXQtYW5pbWF0aW9uOiBzbGlkZS1vdXQgMXMgZm9yd2FyZHMgIWltcG9ydGFudDtcXG4gICAgei1pbmRleDogLTEwMDAwMDAwMDAwMDA7XFxufVxcblxcbkBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDQ5NXB4KSB7XFxuICAgIC5zbGlkZS1pbiB7XFxuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTAwJSk7XFxuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMDAlKTtcXG4gICAgICAgIGFuaW1hdGlvbjogc2xpZGUtdXAgMC44cyBmb3J3YXJkcyAhaW1wb3J0YW50O1xcbiAgICAgICAgLXdlYmtpdC1hbmltYXRpb246IHNsaWRlLXVwIDAuOHMgZm9yd2FyZHMgIWltcG9ydGFudDtcXG4gICAgICAgIHotaW5kZXg6IDEwMDAwMDAwMDAwMDA7XFxuICAgIH1cXG5cXG4gICAgLnNsaWRlLW91dCB7XFxuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTAwJSk7XFxuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMDAlKTtcXG4gICAgICAgIGFuaW1hdGlvbjogc2xpZGUtZG93biAwLjVzIGZvcndhcmRzICFpbXBvcnRhbnQ7XFxuICAgICAgICAtd2Via2l0LWFuaW1hdGlvbjogc2xpZGUtZG93biAxcyBmb3J3YXJkcyAhaW1wb3J0YW50O1xcbiAgICAgICAgei1pbmRleDogLTEwMDAwMDAwMDAwMDA7XFxuICAgIH1cXG59XFxuXFxuQGtleWZyYW1lcyBzbGlkZS1pbiB7XFxuICAgIDEwMCUge1xcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDAlKTtcXG4gICAgfVxcbn1cXG5cXG5ALXdlYmtpdC1rZXlmcmFtZXMgc2xpZGUtaW4ge1xcbiAgICAxMDAlIHtcXG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDAlKTtcXG4gICAgfVxcbn1cXG5cXG5Aa2V5ZnJhbWVzIHNsaWRlLXVwIHtcXG4gICAgMTAwJSB7XFxuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCUpO1xcbiAgICB9XFxufVxcblxcbkAtd2Via2l0LWtleWZyYW1lcyBzbGlkZS11cCB7XFxuICAgIDEwMCUge1xcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCUpO1xcbiAgICB9XFxufVxcblxcbkBrZXlmcmFtZXMgc2xpZGUtb3V0IHtcXG4gICAgMCUge1xcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDAlKTtcXG4gICAgfVxcblxcbiAgICAxMDAlIHtcXG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTtcXG4gICAgfVxcbn1cXG5cXG5ALXdlYmtpdC1rZXlmcmFtZXMgc2xpZGUtb3V0IHtcXG4gICAgMCUge1xcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCUpO1xcbiAgICB9XFxuXFxuICAgIDEwMCUge1xcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7XFxuICAgIH1cXG59XFxuXFxuQGtleWZyYW1lcyBzbGlkZS1kb3duIHtcXG4gICAgMCUge1xcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDAlKTtcXG4gICAgfVxcblxcbiAgICAxMDAlIHtcXG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMDAlKTtcXG4gICAgfVxcbn1cXG5cXG5ALXdlYmtpdC1rZXlmcmFtZXMgc2xpZGUtZG93biB7XFxuICAgIDAlIHtcXG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDAlKTtcXG4gICAgfVxcblxcbiAgICAxMDAlIHtcXG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMCUpO1xcbiAgICB9XFxufVxcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCJcInVzZSBzdHJpY3RcIjtcblxuLypcbiAgTUlUIExpY2Vuc2UgaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9taXQtbGljZW5zZS5waHBcbiAgQXV0aG9yIFRvYmlhcyBLb3BwZXJzIEBzb2tyYVxuKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGNzc1dpdGhNYXBwaW5nVG9TdHJpbmcpIHtcbiAgdmFyIGxpc3QgPSBbXTtcblxuICAvLyByZXR1cm4gdGhlIGxpc3Qgb2YgbW9kdWxlcyBhcyBjc3Mgc3RyaW5nXG4gIGxpc3QudG9TdHJpbmcgPSBmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgICByZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgIHZhciBjb250ZW50ID0gXCJcIjtcbiAgICAgIHZhciBuZWVkTGF5ZXIgPSB0eXBlb2YgaXRlbVs1XSAhPT0gXCJ1bmRlZmluZWRcIjtcbiAgICAgIGlmIChpdGVtWzRdKSB7XG4gICAgICAgIGNvbnRlbnQgKz0gXCJAc3VwcG9ydHMgKFwiLmNvbmNhdChpdGVtWzRdLCBcIikge1wiKTtcbiAgICAgIH1cbiAgICAgIGlmIChpdGVtWzJdKSB7XG4gICAgICAgIGNvbnRlbnQgKz0gXCJAbWVkaWEgXCIuY29uY2F0KGl0ZW1bMl0sIFwiIHtcIik7XG4gICAgICB9XG4gICAgICBpZiAobmVlZExheWVyKSB7XG4gICAgICAgIGNvbnRlbnQgKz0gXCJAbGF5ZXJcIi5jb25jYXQoaXRlbVs1XS5sZW5ndGggPiAwID8gXCIgXCIuY29uY2F0KGl0ZW1bNV0pIDogXCJcIiwgXCIge1wiKTtcbiAgICAgIH1cbiAgICAgIGNvbnRlbnQgKz0gY3NzV2l0aE1hcHBpbmdUb1N0cmluZyhpdGVtKTtcbiAgICAgIGlmIChuZWVkTGF5ZXIpIHtcbiAgICAgICAgY29udGVudCArPSBcIn1cIjtcbiAgICAgIH1cbiAgICAgIGlmIChpdGVtWzJdKSB7XG4gICAgICAgIGNvbnRlbnQgKz0gXCJ9XCI7XG4gICAgICB9XG4gICAgICBpZiAoaXRlbVs0XSkge1xuICAgICAgICBjb250ZW50ICs9IFwifVwiO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgfSkuam9pbihcIlwiKTtcbiAgfTtcblxuICAvLyBpbXBvcnQgYSBsaXN0IG9mIG1vZHVsZXMgaW50byB0aGUgbGlzdFxuICBsaXN0LmkgPSBmdW5jdGlvbiBpKG1vZHVsZXMsIG1lZGlhLCBkZWR1cGUsIHN1cHBvcnRzLCBsYXllcikge1xuICAgIGlmICh0eXBlb2YgbW9kdWxlcyA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgbW9kdWxlcyA9IFtbbnVsbCwgbW9kdWxlcywgdW5kZWZpbmVkXV07XG4gICAgfVxuICAgIHZhciBhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzID0ge307XG4gICAgaWYgKGRlZHVwZSkge1xuICAgICAgZm9yICh2YXIgayA9IDA7IGsgPCB0aGlzLmxlbmd0aDsgaysrKSB7XG4gICAgICAgIHZhciBpZCA9IHRoaXNba11bMF07XG4gICAgICAgIGlmIChpZCAhPSBudWxsKSB7XG4gICAgICAgICAgYWxyZWFkeUltcG9ydGVkTW9kdWxlc1tpZF0gPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGZvciAodmFyIF9rID0gMDsgX2sgPCBtb2R1bGVzLmxlbmd0aDsgX2srKykge1xuICAgICAgdmFyIGl0ZW0gPSBbXS5jb25jYXQobW9kdWxlc1tfa10pO1xuICAgICAgaWYgKGRlZHVwZSAmJiBhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzW2l0ZW1bMF1dKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgaWYgKHR5cGVvZiBsYXllciAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICBpZiAodHlwZW9mIGl0ZW1bNV0gPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgICBpdGVtWzVdID0gbGF5ZXI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaXRlbVsxXSA9IFwiQGxheWVyXCIuY29uY2F0KGl0ZW1bNV0ubGVuZ3RoID4gMCA/IFwiIFwiLmNvbmNhdChpdGVtWzVdKSA6IFwiXCIsIFwiIHtcIikuY29uY2F0KGl0ZW1bMV0sIFwifVwiKTtcbiAgICAgICAgICBpdGVtWzVdID0gbGF5ZXI7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChtZWRpYSkge1xuICAgICAgICBpZiAoIWl0ZW1bMl0pIHtcbiAgICAgICAgICBpdGVtWzJdID0gbWVkaWE7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaXRlbVsxXSA9IFwiQG1lZGlhIFwiLmNvbmNhdChpdGVtWzJdLCBcIiB7XCIpLmNvbmNhdChpdGVtWzFdLCBcIn1cIik7XG4gICAgICAgICAgaXRlbVsyXSA9IG1lZGlhO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoc3VwcG9ydHMpIHtcbiAgICAgICAgaWYgKCFpdGVtWzRdKSB7XG4gICAgICAgICAgaXRlbVs0XSA9IFwiXCIuY29uY2F0KHN1cHBvcnRzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpdGVtWzFdID0gXCJAc3VwcG9ydHMgKFwiLmNvbmNhdChpdGVtWzRdLCBcIikge1wiKS5jb25jYXQoaXRlbVsxXSwgXCJ9XCIpO1xuICAgICAgICAgIGl0ZW1bNF0gPSBzdXBwb3J0cztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgbGlzdC5wdXNoKGl0ZW0pO1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIGxpc3Q7XG59OyIsIlwidXNlIHN0cmljdFwiO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdGVtKSB7XG4gIHZhciBjb250ZW50ID0gaXRlbVsxXTtcbiAgdmFyIGNzc01hcHBpbmcgPSBpdGVtWzNdO1xuICBpZiAoIWNzc01hcHBpbmcpIHtcbiAgICByZXR1cm4gY29udGVudDtcbiAgfVxuICBpZiAodHlwZW9mIGJ0b2EgPT09IFwiZnVuY3Rpb25cIikge1xuICAgIHZhciBiYXNlNjQgPSBidG9hKHVuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChKU09OLnN0cmluZ2lmeShjc3NNYXBwaW5nKSkpKTtcbiAgICB2YXIgZGF0YSA9IFwic291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtODtiYXNlNjQsXCIuY29uY2F0KGJhc2U2NCk7XG4gICAgdmFyIHNvdXJjZU1hcHBpbmcgPSBcIi8qIyBcIi5jb25jYXQoZGF0YSwgXCIgKi9cIik7XG4gICAgcmV0dXJuIFtjb250ZW50XS5jb25jYXQoW3NvdXJjZU1hcHBpbmddKS5qb2luKFwiXFxuXCIpO1xuICB9XG4gIHJldHVybiBbY29udGVudF0uam9pbihcIlxcblwiKTtcbn07IiwiXG4gICAgICBpbXBvcnQgQVBJIGZyb20gXCIhLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICBpbXBvcnQgZG9tQVBJIGZyb20gXCIhLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVEb21BUEkuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRGbiBmcm9tIFwiIS4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydEJ5U2VsZWN0b3IuanNcIjtcbiAgICAgIGltcG9ydCBzZXRBdHRyaWJ1dGVzIGZyb20gXCIhLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc2V0QXR0cmlidXRlc1dpdGhvdXRBdHRyaWJ1dGVzLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0U3R5bGVFbGVtZW50IGZyb20gXCIhLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0U3R5bGVFbGVtZW50LmpzXCI7XG4gICAgICBpbXBvcnQgc3R5bGVUYWdUcmFuc2Zvcm1GbiBmcm9tIFwiIS4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlVGFnVHJhbnNmb3JtLmpzXCI7XG4gICAgICBpbXBvcnQgY29udGVudCwgKiBhcyBuYW1lZEV4cG9ydCBmcm9tIFwiISEuLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL3N0eWxlcy5jc3NcIjtcbiAgICAgIFxuICAgICAgXG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuc3R5bGVUYWdUcmFuc2Zvcm0gPSBzdHlsZVRhZ1RyYW5zZm9ybUZuO1xub3B0aW9ucy5zZXRBdHRyaWJ1dGVzID0gc2V0QXR0cmlidXRlcztcbm9wdGlvbnMuaW5zZXJ0ID0gaW5zZXJ0Rm4uYmluZChudWxsLCBcImhlYWRcIik7XG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi9zdHlsZXMuY3NzXCI7XG4gICAgICAgZXhwb3J0IGRlZmF1bHQgY29udGVudCAmJiBjb250ZW50LmxvY2FscyA/IGNvbnRlbnQubG9jYWxzIDogdW5kZWZpbmVkO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBzdHlsZXNJbkRPTSA9IFtdO1xuZnVuY3Rpb24gZ2V0SW5kZXhCeUlkZW50aWZpZXIoaWRlbnRpZmllcikge1xuICB2YXIgcmVzdWx0ID0gLTE7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgc3R5bGVzSW5ET00ubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoc3R5bGVzSW5ET01baV0uaWRlbnRpZmllciA9PT0gaWRlbnRpZmllcikge1xuICAgICAgcmVzdWx0ID0gaTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuZnVuY3Rpb24gbW9kdWxlc1RvRG9tKGxpc3QsIG9wdGlvbnMpIHtcbiAgdmFyIGlkQ291bnRNYXAgPSB7fTtcbiAgdmFyIGlkZW50aWZpZXJzID0gW107XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGlzdC5sZW5ndGg7IGkrKykge1xuICAgIHZhciBpdGVtID0gbGlzdFtpXTtcbiAgICB2YXIgaWQgPSBvcHRpb25zLmJhc2UgPyBpdGVtWzBdICsgb3B0aW9ucy5iYXNlIDogaXRlbVswXTtcbiAgICB2YXIgY291bnQgPSBpZENvdW50TWFwW2lkXSB8fCAwO1xuICAgIHZhciBpZGVudGlmaWVyID0gXCJcIi5jb25jYXQoaWQsIFwiIFwiKS5jb25jYXQoY291bnQpO1xuICAgIGlkQ291bnRNYXBbaWRdID0gY291bnQgKyAxO1xuICAgIHZhciBpbmRleEJ5SWRlbnRpZmllciA9IGdldEluZGV4QnlJZGVudGlmaWVyKGlkZW50aWZpZXIpO1xuICAgIHZhciBvYmogPSB7XG4gICAgICBjc3M6IGl0ZW1bMV0sXG4gICAgICBtZWRpYTogaXRlbVsyXSxcbiAgICAgIHNvdXJjZU1hcDogaXRlbVszXSxcbiAgICAgIHN1cHBvcnRzOiBpdGVtWzRdLFxuICAgICAgbGF5ZXI6IGl0ZW1bNV1cbiAgICB9O1xuICAgIGlmIChpbmRleEJ5SWRlbnRpZmllciAhPT0gLTEpIHtcbiAgICAgIHN0eWxlc0luRE9NW2luZGV4QnlJZGVudGlmaWVyXS5yZWZlcmVuY2VzKys7XG4gICAgICBzdHlsZXNJbkRPTVtpbmRleEJ5SWRlbnRpZmllcl0udXBkYXRlcihvYmopO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgdXBkYXRlciA9IGFkZEVsZW1lbnRTdHlsZShvYmosIG9wdGlvbnMpO1xuICAgICAgb3B0aW9ucy5ieUluZGV4ID0gaTtcbiAgICAgIHN0eWxlc0luRE9NLnNwbGljZShpLCAwLCB7XG4gICAgICAgIGlkZW50aWZpZXI6IGlkZW50aWZpZXIsXG4gICAgICAgIHVwZGF0ZXI6IHVwZGF0ZXIsXG4gICAgICAgIHJlZmVyZW5jZXM6IDFcbiAgICAgIH0pO1xuICAgIH1cbiAgICBpZGVudGlmaWVycy5wdXNoKGlkZW50aWZpZXIpO1xuICB9XG4gIHJldHVybiBpZGVudGlmaWVycztcbn1cbmZ1bmN0aW9uIGFkZEVsZW1lbnRTdHlsZShvYmosIG9wdGlvbnMpIHtcbiAgdmFyIGFwaSA9IG9wdGlvbnMuZG9tQVBJKG9wdGlvbnMpO1xuICBhcGkudXBkYXRlKG9iaik7XG4gIHZhciB1cGRhdGVyID0gZnVuY3Rpb24gdXBkYXRlcihuZXdPYmopIHtcbiAgICBpZiAobmV3T2JqKSB7XG4gICAgICBpZiAobmV3T2JqLmNzcyA9PT0gb2JqLmNzcyAmJiBuZXdPYmoubWVkaWEgPT09IG9iai5tZWRpYSAmJiBuZXdPYmouc291cmNlTWFwID09PSBvYmouc291cmNlTWFwICYmIG5ld09iai5zdXBwb3J0cyA9PT0gb2JqLnN1cHBvcnRzICYmIG5ld09iai5sYXllciA9PT0gb2JqLmxheWVyKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGFwaS51cGRhdGUob2JqID0gbmV3T2JqKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXBpLnJlbW92ZSgpO1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIHVwZGF0ZXI7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChsaXN0LCBvcHRpb25zKSB7XG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuICBsaXN0ID0gbGlzdCB8fCBbXTtcbiAgdmFyIGxhc3RJZGVudGlmaWVycyA9IG1vZHVsZXNUb0RvbShsaXN0LCBvcHRpb25zKTtcbiAgcmV0dXJuIGZ1bmN0aW9uIHVwZGF0ZShuZXdMaXN0KSB7XG4gICAgbmV3TGlzdCA9IG5ld0xpc3QgfHwgW107XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsYXN0SWRlbnRpZmllcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBpZGVudGlmaWVyID0gbGFzdElkZW50aWZpZXJzW2ldO1xuICAgICAgdmFyIGluZGV4ID0gZ2V0SW5kZXhCeUlkZW50aWZpZXIoaWRlbnRpZmllcik7XG4gICAgICBzdHlsZXNJbkRPTVtpbmRleF0ucmVmZXJlbmNlcy0tO1xuICAgIH1cbiAgICB2YXIgbmV3TGFzdElkZW50aWZpZXJzID0gbW9kdWxlc1RvRG9tKG5ld0xpc3QsIG9wdGlvbnMpO1xuICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBsYXN0SWRlbnRpZmllcnMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICB2YXIgX2lkZW50aWZpZXIgPSBsYXN0SWRlbnRpZmllcnNbX2ldO1xuICAgICAgdmFyIF9pbmRleCA9IGdldEluZGV4QnlJZGVudGlmaWVyKF9pZGVudGlmaWVyKTtcbiAgICAgIGlmIChzdHlsZXNJbkRPTVtfaW5kZXhdLnJlZmVyZW5jZXMgPT09IDApIHtcbiAgICAgICAgc3R5bGVzSW5ET01bX2luZGV4XS51cGRhdGVyKCk7XG4gICAgICAgIHN0eWxlc0luRE9NLnNwbGljZShfaW5kZXgsIDEpO1xuICAgICAgfVxuICAgIH1cbiAgICBsYXN0SWRlbnRpZmllcnMgPSBuZXdMYXN0SWRlbnRpZmllcnM7XG4gIH07XG59OyIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgbWVtbyA9IHt9O1xuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAgKi9cbmZ1bmN0aW9uIGdldFRhcmdldCh0YXJnZXQpIHtcbiAgaWYgKHR5cGVvZiBtZW1vW3RhcmdldF0gPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICB2YXIgc3R5bGVUYXJnZXQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHRhcmdldCk7XG5cbiAgICAvLyBTcGVjaWFsIGNhc2UgdG8gcmV0dXJuIGhlYWQgb2YgaWZyYW1lIGluc3RlYWQgb2YgaWZyYW1lIGl0c2VsZlxuICAgIGlmICh3aW5kb3cuSFRNTElGcmFtZUVsZW1lbnQgJiYgc3R5bGVUYXJnZXQgaW5zdGFuY2VvZiB3aW5kb3cuSFRNTElGcmFtZUVsZW1lbnQpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIC8vIFRoaXMgd2lsbCB0aHJvdyBhbiBleGNlcHRpb24gaWYgYWNjZXNzIHRvIGlmcmFtZSBpcyBibG9ja2VkXG4gICAgICAgIC8vIGR1ZSB0byBjcm9zcy1vcmlnaW4gcmVzdHJpY3Rpb25zXG4gICAgICAgIHN0eWxlVGFyZ2V0ID0gc3R5bGVUYXJnZXQuY29udGVudERvY3VtZW50LmhlYWQ7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIC8vIGlzdGFuYnVsIGlnbm9yZSBuZXh0XG4gICAgICAgIHN0eWxlVGFyZ2V0ID0gbnVsbDtcbiAgICAgIH1cbiAgICB9XG4gICAgbWVtb1t0YXJnZXRdID0gc3R5bGVUYXJnZXQ7XG4gIH1cbiAgcmV0dXJuIG1lbW9bdGFyZ2V0XTtcbn1cblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgICovXG5mdW5jdGlvbiBpbnNlcnRCeVNlbGVjdG9yKGluc2VydCwgc3R5bGUpIHtcbiAgdmFyIHRhcmdldCA9IGdldFRhcmdldChpbnNlcnQpO1xuICBpZiAoIXRhcmdldCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIkNvdWxkbid0IGZpbmQgYSBzdHlsZSB0YXJnZXQuIFRoaXMgcHJvYmFibHkgbWVhbnMgdGhhdCB0aGUgdmFsdWUgZm9yIHRoZSAnaW5zZXJ0JyBwYXJhbWV0ZXIgaXMgaW52YWxpZC5cIik7XG4gIH1cbiAgdGFyZ2V0LmFwcGVuZENoaWxkKHN0eWxlKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gaW5zZXJ0QnlTZWxlY3RvcjsiLCJcInVzZSBzdHJpY3RcIjtcblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgICovXG5mdW5jdGlvbiBpbnNlcnRTdHlsZUVsZW1lbnQob3B0aW9ucykge1xuICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzdHlsZVwiKTtcbiAgb3B0aW9ucy5zZXRBdHRyaWJ1dGVzKGVsZW1lbnQsIG9wdGlvbnMuYXR0cmlidXRlcyk7XG4gIG9wdGlvbnMuaW5zZXJ0KGVsZW1lbnQsIG9wdGlvbnMub3B0aW9ucyk7XG4gIHJldHVybiBlbGVtZW50O1xufVxubW9kdWxlLmV4cG9ydHMgPSBpbnNlcnRTdHlsZUVsZW1lbnQ7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICAqL1xuZnVuY3Rpb24gc2V0QXR0cmlidXRlc1dpdGhvdXRBdHRyaWJ1dGVzKHN0eWxlRWxlbWVudCkge1xuICB2YXIgbm9uY2UgPSB0eXBlb2YgX193ZWJwYWNrX25vbmNlX18gIT09IFwidW5kZWZpbmVkXCIgPyBfX3dlYnBhY2tfbm9uY2VfXyA6IG51bGw7XG4gIGlmIChub25jZSkge1xuICAgIHN0eWxlRWxlbWVudC5zZXRBdHRyaWJ1dGUoXCJub25jZVwiLCBub25jZSk7XG4gIH1cbn1cbm1vZHVsZS5leHBvcnRzID0gc2V0QXR0cmlidXRlc1dpdGhvdXRBdHRyaWJ1dGVzOyIsIlwidXNlIHN0cmljdFwiO1xuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAgKi9cbmZ1bmN0aW9uIGFwcGx5KHN0eWxlRWxlbWVudCwgb3B0aW9ucywgb2JqKSB7XG4gIHZhciBjc3MgPSBcIlwiO1xuICBpZiAob2JqLnN1cHBvcnRzKSB7XG4gICAgY3NzICs9IFwiQHN1cHBvcnRzIChcIi5jb25jYXQob2JqLnN1cHBvcnRzLCBcIikge1wiKTtcbiAgfVxuICBpZiAob2JqLm1lZGlhKSB7XG4gICAgY3NzICs9IFwiQG1lZGlhIFwiLmNvbmNhdChvYmoubWVkaWEsIFwiIHtcIik7XG4gIH1cbiAgdmFyIG5lZWRMYXllciA9IHR5cGVvZiBvYmoubGF5ZXIgIT09IFwidW5kZWZpbmVkXCI7XG4gIGlmIChuZWVkTGF5ZXIpIHtcbiAgICBjc3MgKz0gXCJAbGF5ZXJcIi5jb25jYXQob2JqLmxheWVyLmxlbmd0aCA+IDAgPyBcIiBcIi5jb25jYXQob2JqLmxheWVyKSA6IFwiXCIsIFwiIHtcIik7XG4gIH1cbiAgY3NzICs9IG9iai5jc3M7XG4gIGlmIChuZWVkTGF5ZXIpIHtcbiAgICBjc3MgKz0gXCJ9XCI7XG4gIH1cbiAgaWYgKG9iai5tZWRpYSkge1xuICAgIGNzcyArPSBcIn1cIjtcbiAgfVxuICBpZiAob2JqLnN1cHBvcnRzKSB7XG4gICAgY3NzICs9IFwifVwiO1xuICB9XG4gIHZhciBzb3VyY2VNYXAgPSBvYmouc291cmNlTWFwO1xuICBpZiAoc291cmNlTWFwICYmIHR5cGVvZiBidG9hICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgY3NzICs9IFwiXFxuLyojIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxcIi5jb25jYXQoYnRvYSh1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoSlNPTi5zdHJpbmdpZnkoc291cmNlTWFwKSkpKSwgXCIgKi9cIik7XG4gIH1cblxuICAvLyBGb3Igb2xkIElFXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAgKi9cbiAgb3B0aW9ucy5zdHlsZVRhZ1RyYW5zZm9ybShjc3MsIHN0eWxlRWxlbWVudCwgb3B0aW9ucy5vcHRpb25zKTtcbn1cbmZ1bmN0aW9uIHJlbW92ZVN0eWxlRWxlbWVudChzdHlsZUVsZW1lbnQpIHtcbiAgLy8gaXN0YW5idWwgaWdub3JlIGlmXG4gIGlmIChzdHlsZUVsZW1lbnQucGFyZW50Tm9kZSA9PT0gbnVsbCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBzdHlsZUVsZW1lbnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChzdHlsZUVsZW1lbnQpO1xufVxuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAgKi9cbmZ1bmN0aW9uIGRvbUFQSShvcHRpb25zKSB7XG4gIGlmICh0eXBlb2YgZG9jdW1lbnQgPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdXBkYXRlOiBmdW5jdGlvbiB1cGRhdGUoKSB7fSxcbiAgICAgIHJlbW92ZTogZnVuY3Rpb24gcmVtb3ZlKCkge31cbiAgICB9O1xuICB9XG4gIHZhciBzdHlsZUVsZW1lbnQgPSBvcHRpb25zLmluc2VydFN0eWxlRWxlbWVudChvcHRpb25zKTtcbiAgcmV0dXJuIHtcbiAgICB1cGRhdGU6IGZ1bmN0aW9uIHVwZGF0ZShvYmopIHtcbiAgICAgIGFwcGx5KHN0eWxlRWxlbWVudCwgb3B0aW9ucywgb2JqKTtcbiAgICB9LFxuICAgIHJlbW92ZTogZnVuY3Rpb24gcmVtb3ZlKCkge1xuICAgICAgcmVtb3ZlU3R5bGVFbGVtZW50KHN0eWxlRWxlbWVudCk7XG4gICAgfVxuICB9O1xufVxubW9kdWxlLmV4cG9ydHMgPSBkb21BUEk7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICAqL1xuZnVuY3Rpb24gc3R5bGVUYWdUcmFuc2Zvcm0oY3NzLCBzdHlsZUVsZW1lbnQpIHtcbiAgaWYgKHN0eWxlRWxlbWVudC5zdHlsZVNoZWV0KSB7XG4gICAgc3R5bGVFbGVtZW50LnN0eWxlU2hlZXQuY3NzVGV4dCA9IGNzcztcbiAgfSBlbHNlIHtcbiAgICB3aGlsZSAoc3R5bGVFbGVtZW50LmZpcnN0Q2hpbGQpIHtcbiAgICAgIHN0eWxlRWxlbWVudC5yZW1vdmVDaGlsZChzdHlsZUVsZW1lbnQuZmlyc3RDaGlsZCk7XG4gICAgfVxuICAgIHN0eWxlRWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShjc3MpKTtcbiAgfVxufVxubW9kdWxlLmV4cG9ydHMgPSBzdHlsZVRhZ1RyYW5zZm9ybTsiLCJleHBvcnQgY29uc3QgVFJJUEZVU0lPTl9CQVNFX1VSTCA9XG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwicHJvZHVjdGlvblwiID8gXCJodHRwczovL2RldmVsb3AuYm9va2luZ3MudmFjYXlvdS5jb20vXCIgOiBcImh0dHA6Ly9sb2NhbGhvc3Q6MzAwMC9cIjtcbmV4cG9ydCBjb25zdCBTREtfU0NSSVBUX0lEID0gXCJ0cmlwZnVzaW9uLXNka1wiO1xuZXhwb3J0IGNvbnN0IFdJREdFVF9JRCA9IFwidHJpcGZ1c2lvbi13aWRnZXRcIjtcbmV4cG9ydCBjb25zdCBXSURHRVRfSU5ORVJfV1JBUFBFUl9JRCA9IFwidHJpcGZ1c2lvbi13aWRnZXQtaW5uZXItd3JhcHBlclwiO1xuZXhwb3J0IGNvbnN0IFdJREdFVF9IRUFERVJfSUQgPSBcInRyaXBmdXNpb24td2lkZ2V0LWhlYWRlclwiO1xuZXhwb3J0IGNvbnN0IFdJREdFVF9DTE9TRV9CVVRUT05fSUQgPSBcInRyaXBmdXNpb24td2lkZ2V0LWNsb3NlLWJ1dHRvblwiO1xuZXhwb3J0IGNvbnN0IFdJREdFVF9IRUFERVJfVElUTEVfSUQgPSBcInRyaXBmdXNpb24td2lkZ2V0LWhlYWRlci10aXRsZVwiO1xuZXhwb3J0IGNvbnN0IFdJREdFVF9XUkFQUEVSX0lEID0gXCJ0cmlwZnVzaW9uLXdpZGdldC13cmFwcGVyXCI7XG5leHBvcnQgY29uc3QgV0lER0VUX0lGUkFNRV9JRCA9IFwidHJpcGZ1c2lvbi13aWRnZXQtaWZyYW1lXCI7XG5leHBvcnQgY29uc3QgUkVTVU1FX0JVVFRPTl9JRCA9IFwidHJpcGZ1c2lvbi1yZXN1bWUtYnV0dG9uXCI7XG5leHBvcnQgY29uc3QgTE9BREVSX0lEID0gXCJ0cmlwZnVzaW9uLWxvYWRlclwiO1xuZXhwb3J0IGNvbnN0IEJPT0tJTkdfTU9ERSA9IHtcbiAgICBub3JtYWw6IFwibm9ybWFsXCIsXG4gICAgYXBwZW5kOiBcImFwcGVuZFwiLFxufSBhcyBjb25zdDtcbiIsIi8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnNvbGUgKi9cbmltcG9ydCB0eXBlIHsgV2lkZ2V0UHJvcHMgfSBmcm9tIFwiLi9pbmRleC50eXBlc1wiO1xuaW1wb3J0IHtcbiAgICBCT09LSU5HX01PREUsXG4gICAgTE9BREVSX0lELFxuICAgIFJFU1VNRV9CVVRUT05fSUQsXG4gICAgVFJJUEZVU0lPTl9CQVNFX1VSTCxcbiAgICBXSURHRVRfQ0xPU0VfQlVUVE9OX0lELFxuICAgIFdJREdFVF9IRUFERVJfSUQsXG4gICAgV0lER0VUX0hFQURFUl9USVRMRV9JRCxcbiAgICBXSURHRVRfSUQsXG4gICAgV0lER0VUX0lGUkFNRV9JRCxcbiAgICBXSURHRVRfSU5ORVJfV1JBUFBFUl9JRCxcbiAgICBXSURHRVRfV1JBUFBFUl9JRCxcbn0gZnJvbSBcIi4vY29uc3RcIjtcbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gXCIuL3V0aWxzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBkaXNwbGF5TG9hZGluZ092ZXJsYXkoKSB7XG4gICAgY29uc3Qgd2lkZ2V0V3JhcHBlciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFdJREdFVF9XUkFQUEVSX0lEKTtcblxuICAgIGlmICh3aWRnZXRXcmFwcGVyKSB7XG4gICAgICAgIGNvbnN0IGxvYWRpbmdEaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xuICAgICAgICBsb2FkaW5nRGl2LmlkID0gTE9BREVSX0lEO1xuICAgICAgICBsb2FkaW5nRGl2LmlubmVySFRNTCA9IFwiTG9hZGluZyA8c3Bhbj5UcmlwRnVzaW9uPC9zcGFuPlwiO1xuICAgICAgICB3aWRnZXRXcmFwcGVyLmFwcGVuZENoaWxkKGxvYWRpbmdEaXYpO1xuXG4gICAgICAgIHdpZGdldFdyYXBwZXIuc3R5bGUuekluZGV4ID0gYCR7MWUxMX1gO1xuICAgICAgICB3aWRnZXRXcmFwcGVyLnN0eWxlLmhlaWdodCA9IFwiMTAwJVwiO1xuICAgICAgICB3aWRnZXRXcmFwcGVyLnN0eWxlLmJhY2tncm91bmQgPSBcInJnYmEoMCwgMCwgMCwgLjc0KVwiO1xuICAgICAgICBsb2NrUGFnZVNjcm9sbCgpO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdFJlc3VtZUJ1dHRvbigpIHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCB3aWRnZXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpLFxuICAgICAgICAgICAgd2lkZ2V0V3JhcHBlciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiksXG4gICAgICAgICAgICB3aWRnZXRJbm5lcldyYXBwZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpLFxuICAgICAgICAgICAgd2lkZ2V0SGVhZGVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKSxcbiAgICAgICAgICAgIHdpZGdldEhlYWRlclRpdGxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInNwYW5cIiksXG4gICAgICAgICAgICB3aWRnZXRDbG9zZUJ1dHRvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJidXR0b25cIiksXG4gICAgICAgICAgICByZXN1bWVCdXR0b24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiYnV0dG9uXCIpLFxuICAgICAgICAgICAgcmVzdW1lQnV0dG9uVGV4dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIpO1xuXG4gICAgICAgIC8vIENvbmZpZ3VyZSByZXN1bWUgYnV0dG9uXG4gICAgICAgIHJlc3VtZUJ1dHRvbi5pZCA9IFJFU1VNRV9CVVRUT05fSUQ7XG5cbiAgICAgICAgLy8gQ29uZmlndXJlIGJ1dHRvbiB0ZXh0XG4gICAgICAgIHJlc3VtZUJ1dHRvblRleHQuaW5uZXJIVE1MID0gXCJDb21wbGV0ZSB5b3VyIGJvb2tpbmdcIjtcbiAgICAgICAgcmVzdW1lQnV0dG9uLmFwcGVuZENoaWxkKHJlc3VtZUJ1dHRvblRleHQpO1xuXG4gICAgICAgIC8vIENvbmZpZ3VyZSB3aWRnZXQgYW5kIHdyYXBwZXJcbiAgICAgICAgd2lkZ2V0LmlkID0gV0lER0VUX0lEO1xuICAgICAgICB3aWRnZXQuc3R5bGUuZGlzcGxheSA9IFwibm9uZVwiO1xuICAgICAgICB3aWRnZXRXcmFwcGVyLmlkID0gV0lER0VUX1dSQVBQRVJfSUQ7XG5cbiAgICAgICAgLy8gQ29uZmlndXJlIHdpZGdldCBpbm5lciB3cmFwcGVyXG4gICAgICAgIHdpZGdldElubmVyV3JhcHBlci5pZCA9IFdJREdFVF9JTk5FUl9XUkFQUEVSX0lEO1xuICAgICAgICB3aWRnZXRIZWFkZXIuaWQgPSBXSURHRVRfSEVBREVSX0lEO1xuICAgICAgICB3aWRnZXRDbG9zZUJ1dHRvbi5pZCA9IFdJREdFVF9DTE9TRV9CVVRUT05fSUQ7XG4gICAgICAgIHdpZGdldENsb3NlQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBjbG9zZVdpZGdldCk7XG4gICAgICAgIHdpZGdldEhlYWRlclRpdGxlLmlkID0gV0lER0VUX0hFQURFUl9USVRMRV9JRDtcbiAgICAgICAgd2lkZ2V0SGVhZGVyVGl0bGUuaW5uZXJIVE1MID0gXCJCb29raW5nXCI7XG5cbiAgICAgICAgLy8gQXBwZW5kIHdpZGdldCB0byB3cmFwcGVyIGFuZCB3cmFwcGVyIHRvIGRvY3VtZW50IGJvZHlcbiAgICAgICAgd2lkZ2V0V3JhcHBlci5hcHBlbmRDaGlsZCh3aWRnZXQpO1xuICAgICAgICB3aWRnZXQuYXBwZW5kQ2hpbGQod2lkZ2V0SW5uZXJXcmFwcGVyKTtcbiAgICAgICAgd2lkZ2V0SW5uZXJXcmFwcGVyLmFwcGVuZENoaWxkKHdpZGdldEhlYWRlcik7XG4gICAgICAgIHdpZGdldEhlYWRlci5hcHBlbmRDaGlsZCh3aWRnZXRIZWFkZXJUaXRsZSk7XG4gICAgICAgIHdpZGdldEhlYWRlci5hcHBlbmRDaGlsZCh3aWRnZXRDbG9zZUJ1dHRvbik7XG4gICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQod2lkZ2V0V3JhcHBlcik7XG4gICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQocmVzdW1lQnV0dG9uKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBsb2dnZXIoYFdpZGdldDogRXJyb3IgaW5qZWN0aW5nIHJlc3VtZSBidXR0b246ICR7ZXJyb3J9YCk7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXCJUcmlwZnVzaW9uOiBFcnJvciBpbmplY3RpbmcgcmVzdW1lIGJ1dHRvbjogXCIsIGVycm9yKTtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjbG9zZVdpZGdldCgpIHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCB3aWRnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChXSURHRVRfSUQpLFxuICAgICAgICAgICAgd2lkZ2V0V3JhcHBlciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFdJREdFVF9XUkFQUEVSX0lEKSxcbiAgICAgICAgICAgIHJlc3VtZUJ1dHRvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFJFU1VNRV9CVVRUT05fSUQpO1xuXG4gICAgICAgIGlmICh3aWRnZXQgJiYgd2lkZ2V0V3JhcHBlciAmJiByZXN1bWVCdXR0b24pIHtcbiAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUub3ZlcmZsb3cgPSBcImluaXRpYWxcIjtcbiAgICAgICAgICAgIHdpZGdldC5zZXRBdHRyaWJ1dGUoXCJjbGFzc1wiLCBcInNsaWRlLW91dFwiKTtcbiAgICAgICAgICAgIHdpZGdldFdyYXBwZXIuc3R5bGUuYmFja2dyb3VuZCA9IFwicmdiYSgwLCAwLCAwLCAwKVwiO1xuICAgICAgICAgICAgd2lkZ2V0LnN0eWxlLmRpc3BsYXkgPSBcIm5vbmVcIjtcbiAgICAgICAgICAgIHdpZGdldFdyYXBwZXIuc3R5bGUuekluZGV4ID0gYCR7LTFlMTF9YDtcbiAgICAgICAgICAgIHJlc3VtZUJ1dHRvbi5zZXRBdHRyaWJ1dGUoXCJjbGFzc1wiLCBcImRpc21pc3MtYnRuLXNsaWRlLWluXCIpO1xuICAgICAgICAgICAgcmVzdW1lQnV0dG9uLmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBsb2dnZXIoYFdpZGdldDogRXJyb3IgY2xvc2luZyB3aWRnZXQ6ICR7ZXJyb3J9YCk7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXCJUcmlwZnVzaW9uOiBFcnJvciBjbG9zaW5nIHdpZGdldDogXCIsIGVycm9yKTtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RJZnJhbWUoeyBjb25maWcsIGJvb2tpbmdEYXRhIH06IFdpZGdldFByb3BzKSB7XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgaW5uZXJXcmFwcGVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoV0lER0VUX0lOTkVSX1dSQVBQRVJfSUQpO1xuICAgICAgICBpZiAoaW5uZXJXcmFwcGVyKSB7XG4gICAgICAgICAgICBjb25zdCB3aWRnZXRJZnJhbWUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiaWZyYW1lXCIpO1xuICAgICAgICAgICAgbGV0IHVybCA9IGAke1RSSVBGVVNJT05fQkFTRV9VUkx9JHtjb25maWcuY2xpZW50fS8ke2NvbmZpZy5wcm9wZXJ0eUlkfWA7XG4gICAgICAgICAgICBpZiAoY29uZmlnLm1vZGUgPT09IEJPT0tJTkdfTU9ERS5hcHBlbmQgJiYgY29uZmlnLmJvb2tpbmdJZCkge1xuICAgICAgICAgICAgICAgIHVybCArPSBgL2Jvb2tpbmcvJHtjb25maWcuYm9va2luZ0lkfS9hcHBlbmRgO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoYm9va2luZ0RhdGEpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBhZGRpdGlvbmFsUGFyYW1zID0gT2JqZWN0LmVudHJpZXMoYm9va2luZ0RhdGEpXG4gICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoKFtfLCB2YWx1ZV0pID0+ICEhdmFsdWUpXG4gICAgICAgICAgICAgICAgICAgIC5tYXAoKFtrZXksIHZhbHVlXSkgPT4gYCR7a2V5fT0ke3ZhbHVlfWAudG9Mb3dlckNhc2UoKSlcbiAgICAgICAgICAgICAgICAgICAgLmpvaW4oXCImXCIpO1xuICAgICAgICAgICAgICAgIGlmIChhZGRpdGlvbmFsUGFyYW1zKSB7XG4gICAgICAgICAgICAgICAgICAgIHVybCArPSBgPyR7YWRkaXRpb25hbFBhcmFtc31gO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgd2lkZ2V0SWZyYW1lLnNldEF0dHJpYnV0ZShcInNyY1wiLCB1cmwpO1xuICAgICAgICAgICAgd2lkZ2V0SWZyYW1lLmlkID0gV0lER0VUX0lGUkFNRV9JRDtcbiAgICAgICAgICAgIGlubmVyV3JhcHBlci5hcHBlbmRDaGlsZCh3aWRnZXRJZnJhbWUpO1xuICAgICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgbG9nZ2VyKGBXaWRnZXQ6IEVycm9yIGluamVjdGluZyBpZnJhbWU6ICR7ZXJyb3J9YCk7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXCJUcmlwZnVzaW9uOiBFcnJvciBpbmplY3RpbmcgaWZyYW1lOiBcIiwgZXJyb3IpO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxvY2tQYWdlU2Nyb2xsKCkge1xuICAgIGRvY3VtZW50LmJvZHkuc3R5bGUub3ZlcmZsb3cgPSBcImhpZGRlblwiO1xufVxuIiwiLyogZXNsaW50LWRpc2FibGUgbm8tY29uc29sZSAqL1xuaW1wb3J0IHsgVFJJUEZVU0lPTl9CQVNFX1VSTCB9IGZyb20gXCIuL2NvbnN0XCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRQYXJhbXNGcm9tVXJsKHVybFNlYXJjaFBhcmFtczogVVJMU2VhcmNoUGFyYW1zKTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB7XG4gICAgY29uc3QgYXZhaWxhYmxlU2VhcmNoUGFyYW1zTWFwOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgICAgICB0cmlwZnVzaW9uOiBcInRyaXBmdXNpb25cIixcbiAgICAgICAgY2xpZW50OiBcImNsaWVudFwiLFxuICAgICAgICBwcm9wZXJ0eWlkOiBcInByb3BlcnR5SWRcIixcbiAgICAgICAgbW9kZTogXCJtb2RlXCIsXG4gICAgICAgIG9mZmVyaWQ6IFwib2ZmZXJJZFwiLFxuICAgICAgICBib29raW5naWQ6IFwiYm9va2luZ0lkXCIsXG4gICAgICAgIGNoZWNraW46IFwiY2hlY2tJblwiLFxuICAgICAgICBjaGVja291dDogXCJjaGVja091dFwiLFxuICAgICAgICBhZHVsdHM6IFwiYWR1bHRzXCIsXG4gICAgICAgIGNoaWxkcmVuOiBcImNoaWxkcmVuXCIsXG4gICAgfTtcbiAgICByZXR1cm4gQXJyYXkuZnJvbSh1cmxTZWFyY2hQYXJhbXMuZW50cmllcygpKS5yZWR1Y2UoXG4gICAgICAgIChwcmV2LCBbc2VhcmNoUGFyYW1LZXksIHNlYXJjaFBhcmFtVmFsdWVdKSA9PiAoe1xuICAgICAgICAgICAgLi4ucHJldixcbiAgICAgICAgICAgIFthdmFpbGFibGVTZWFyY2hQYXJhbXNNYXBbc2VhcmNoUGFyYW1LZXkudG9Mb3dlckNhc2UoKV1dOiBzZWFyY2hQYXJhbVZhbHVlLFxuICAgICAgICB9KSxcbiAgICAgICAge31cbiAgICApO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbG9nZ2VyKG1lc3NhZ2U6IHN0cmluZywgdHlwZTogXCJlcnJvclwiIHwgXCJsb2dcIiA9IFwiZXJyb3JcIikge1xuICAgIGNvbnN0IHVybCA9IGAke1RSSVBGVVNJT05fQkFTRV9VUkx9YXBpL3ZhY2F5b3UvbG9nYDtcbiAgICBjb25zdCBwYXlsb2FkID0ge1xuICAgICAgICBtZXNzYWdlLFxuICAgICAgICBwYWdlOiB3aW5kb3cubG9jYXRpb24uaHJlZixcbiAgICB9O1xuICAgIGNvbnN0IGhlYWRlcnMgPSB7XG4gICAgICAgIFwiY29udGVudC10eXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiLFxuICAgIH07XG4gICAgcmV0dXJuIGZldGNoKHVybCwge1xuICAgICAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICB0eXBlLFxuICAgICAgICAgICAgcGF5bG9hZCxcbiAgICAgICAgfSksXG4gICAgICAgIGhlYWRlcnMsXG4gICAgfSlcbiAgICAgICAgLnRoZW4oKHJlc3BvbnNlKSA9PiByZXNwb25zZS5qc29uKCkpXG4gICAgICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgVHJpcGZ1c2lvbjogZmFpbGVkIHRvIGxvZyBtZXNzYWdlOiAke2Vycm9yfWApO1xuICAgICAgICB9KTtcbn1cbiIsIi8vIFRoZSBtb2R1bGUgY2FjaGVcbnZhciBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18gPSB7fTtcblxuLy8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbmZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG5cdHZhciBjYWNoZWRNb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdO1xuXHRpZiAoY2FjaGVkTW9kdWxlICE9PSB1bmRlZmluZWQpIHtcblx0XHRyZXR1cm4gY2FjaGVkTW9kdWxlLmV4cG9ydHM7XG5cdH1cblx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcblx0dmFyIG1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF0gPSB7XG5cdFx0aWQ6IG1vZHVsZUlkLFxuXHRcdC8vIG5vIG1vZHVsZS5sb2FkZWQgbmVlZGVkXG5cdFx0ZXhwb3J0czoge31cblx0fTtcblxuXHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cblx0X193ZWJwYWNrX21vZHVsZXNfX1ttb2R1bGVJZF0obW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cblx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcblx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xufVxuXG4iLCIvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuX193ZWJwYWNrX3JlcXVpcmVfXy5uID0gKG1vZHVsZSkgPT4ge1xuXHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cblx0XHQoKSA9PiAobW9kdWxlWydkZWZhdWx0J10pIDpcblx0XHQoKSA9PiAobW9kdWxlKTtcblx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgeyBhOiBnZXR0ZXIgfSk7XG5cdHJldHVybiBnZXR0ZXI7XG59OyIsIi8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb25zIGZvciBoYXJtb255IGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uZCA9IChleHBvcnRzLCBkZWZpbml0aW9uKSA9PiB7XG5cdGZvcih2YXIga2V5IGluIGRlZmluaXRpb24pIHtcblx0XHRpZihfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZGVmaW5pdGlvbiwga2V5KSAmJiAhX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIGtleSkpIHtcblx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBkZWZpbml0aW9uW2tleV0gfSk7XG5cdFx0fVxuXHR9XG59OyIsIl9fd2VicGFja19yZXF1aXJlX18ubyA9IChvYmosIHByb3ApID0+IChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKSkiLCIvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSAoZXhwb3J0cykgPT4ge1xuXHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcblx0fVxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLm5jID0gdW5kZWZpbmVkOyIsIi8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnNvbGUgKi9cbmltcG9ydCB0eXBlIHsgQXBwTWVzc2FnZSwgV2lkZ2V0UHJvcHMgfSBmcm9tIFwiLi9pbmRleC50eXBlc1wiO1xuaW1wb3J0IHtcbiAgICBCT09LSU5HX01PREUsXG4gICAgTE9BREVSX0lELFxuICAgIFJFU1VNRV9CVVRUT05fSUQsXG4gICAgU0RLX1NDUklQVF9JRCxcbiAgICBXSURHRVRfSEVBREVSX0lELFxuICAgIFdJREdFVF9JRCxcbiAgICBXSURHRVRfSUZSQU1FX0lELFxuICAgIFdJREdFVF9XUkFQUEVSX0lELFxufSBmcm9tIFwiLi9jb25zdFwiO1xuaW1wb3J0IHsgY2xvc2VXaWRnZXQsIGRpc3BsYXlMb2FkaW5nT3ZlcmxheSwgaW5qZWN0SWZyYW1lLCBpbmplY3RSZXN1bWVCdXR0b24sIGxvY2tQYWdlU2Nyb2xsIH0gZnJvbSBcIi4vZG9tXCI7XG5pbXBvcnQgXCIuL3N0eWxlcy5jc3NcIjtcbmltcG9ydCB7IGdldFBhcmFtc0Zyb21VcmwsIGxvZ2dlciB9IGZyb20gXCIuL3V0aWxzXCI7XG5cbmxldCBjbGllbnQ6IHN0cmluZyB8IG51bGwgPSBudWxsO1xubGV0IHByb3BlcnR5SWQ6IG51bWJlciB8IG51bGwgPSBudWxsO1xubGV0IGJvb2tpbmdDb250ZXh0OiBXaWRnZXRQcm9wcyB8IG51bGwgPSBudWxsO1xubGV0IGlzSWZyYW1lUmVhZHkgPSBmYWxzZTtcblxuZnVuY3Rpb24gYWRkTGlua0V2ZW50TGlzdGVuZXJzKCkge1xuICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCJhXCIpLmZvckVhY2goKGxpbmtFbGVtZW50KSA9PiB7XG4gICAgICAgIGxpbmtFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBoYW5kbGVMaW5rQ2xpY2spO1xuICAgIH0pO1xufVxuXG5mdW5jdGlvbiBoYW5kbGVMaW5rQ2xpY2soZXZlbnQ6IGFueSkge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldDtcblxuICAgICAgICAvLyBFbnN1cmUgdGhlIGV2ZW50IHRhcmdldCBoYXMgYSB2YWxpZCBocmVmXG4gICAgICAgIGlmICh0YXJnZXQudGFnTmFtZSAhPT0gXCJBXCIgJiYgdGFyZ2V0LnBhcmVudE5vZGU/LnRhZ05hbWUgPT09IFwiQVwiKSB7XG4gICAgICAgICAgICB0YXJnZXQuaHJlZiA9IHRhcmdldC5wYXJlbnROb2RlLmhyZWY7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBsaW5rSHJlZiA9IHRhcmdldC5ocmVmIHx8IFwiXCI7XG4gICAgICAgIGlmICghbGlua0hyZWYuaW5jbHVkZXMoXCI/XCIpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB1cmxQYXJhbXMgPSBnZXRQYXJhbXNGcm9tVXJsKG5ldyBVUkxTZWFyY2hQYXJhbXMobGlua0hyZWYuc3Vic3RyaW5nKGxpbmtIcmVmLmluZGV4T2YoXCI/XCIpKSkpO1xuXG4gICAgICAgIGlmICh1cmxQYXJhbXMudHJpcGZ1c2lvbiA9PT0gXCJ0cnVlXCIpIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBib29rKHtcbiAgICAgICAgICAgICAgICBjb25maWc6IHtcbiAgICAgICAgICAgICAgICAgICAgY2xpZW50OiB1cmxQYXJhbXMuY2xpZW50ID8/IGNsaWVudCxcbiAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlJZDogdXJsUGFyYW1zLnByb3BlcnR5SWQgPyArdXJsUGFyYW1zLnByb3BlcnR5SWQgOiAocHJvcGVydHlJZCBhcyBudW1iZXIpLFxuICAgICAgICAgICAgICAgICAgICBtb2RlOiB1cmxQYXJhbXMubW9kZSA9PT0gQk9PS0lOR19NT0RFLmFwcGVuZCA/IEJPT0tJTkdfTU9ERS5hcHBlbmQgOiBCT09LSU5HX01PREUubm9ybWFsLFxuICAgICAgICAgICAgICAgICAgICBib29raW5nSWQ6XG4gICAgICAgICAgICAgICAgICAgICAgICB1cmxQYXJhbXM/LmJvb2tpbmdJZCAmJiB1cmxQYXJhbXM/Lm1vZGUgPT09IEJPT0tJTkdfTU9ERS5hcHBlbmQgPyArdXJsUGFyYW1zLmJvb2tpbmdJZCA6IG51bGwsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBib29raW5nRGF0YToge1xuICAgICAgICAgICAgICAgICAgICBvZmZlcklkOiB1cmxQYXJhbXMub2ZmZXJJZCA/ICt1cmxQYXJhbXMub2ZmZXJJZCA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgY2hlY2tJbjogdXJsUGFyYW1zLmNoZWNrSW4sXG4gICAgICAgICAgICAgICAgICAgIGNoZWNrT3V0OiB1cmxQYXJhbXMuY2hlY2tPdXQsXG4gICAgICAgICAgICAgICAgICAgIGFkdWx0czogdXJsUGFyYW1zLmFkdWx0cyA/ICt1cmxQYXJhbXMuYWR1bHRzIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbjogdXJsUGFyYW1zLmNoaWxkcmVuID8gdXJsUGFyYW1zLmNoaWxkcmVuLnNwbGl0KFwiLFwiKS5tYXAoKGFnZSkgPT4gK2FnZSkgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgbG9nZ2VyKGBXaWRnZXQ6IEVycm9yIGluIGxpbmsgY2xpY2sgaGFuZGxlcjogJHtlcnJvcn1gKTtcbiAgICAgICAgY29uc29sZS5lcnJvcihcIlRyaXBmdXNpb246IEVycm9yIGluIGxpbmsgY2xpY2sgaGFuZGxlcjogXCIsIGVycm9yKTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGFkZFBhZ2VMb2FkTGlzdGVuZXIoKSB7XG4gICAgaWYgKGRvY3VtZW50LnJlYWR5U3RhdGUgPT09IFwiY29tcGxldGVcIikge1xuICAgICAgICBvbkxvYWRIYW5kbGVyKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJsb2FkXCIsIG9uTG9hZEhhbmRsZXIpO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gb25Mb2FkSGFuZGxlcigpIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgY29uc3QgdXJsUGFyYW1zID0gZ2V0UGFyYW1zRnJvbVVybChuZXcgVVJMU2VhcmNoUGFyYW1zKHdpbmRvdy5sb2NhdGlvbi5zZWFyY2gpKTtcbiAgICAgICAgaWYgKHVybFBhcmFtcy50cmlwZnVzaW9uID09PSBcInRydWVcIiAmJiAoY2xpZW50IHx8IHVybFBhcmFtcy5jbGllbnQpICYmIChwcm9wZXJ0eUlkIHx8IHVybFBhcmFtcy5wcm9wZXJ0eUlkKSkge1xuICAgICAgICAgICAgYm9vayh7XG4gICAgICAgICAgICAgICAgY29uZmlnOiB7XG4gICAgICAgICAgICAgICAgICAgIGNsaWVudDogdXJsUGFyYW1zLmNsaWVudCA/PyBjbGllbnQsXG4gICAgICAgICAgICAgICAgICAgIHByb3BlcnR5SWQ6IHVybFBhcmFtcy5wcm9wZXJ0eUlkID8gK3VybFBhcmFtcy5wcm9wZXJ0eUlkIDogKHByb3BlcnR5SWQgYXMgbnVtYmVyKSxcbiAgICAgICAgICAgICAgICAgICAgbW9kZTogdXJsUGFyYW1zLm1vZGUgPT09IEJPT0tJTkdfTU9ERS5hcHBlbmQgPyBCT09LSU5HX01PREUuYXBwZW5kIDogQk9PS0lOR19NT0RFLm5vcm1hbCxcbiAgICAgICAgICAgICAgICAgICAgYm9va2luZ0lkOlxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsUGFyYW1zPy5ib29raW5nSWQgJiYgdXJsUGFyYW1zPy5tb2RlID09PSBCT09LSU5HX01PREUuYXBwZW5kID8gK3VybFBhcmFtcy5ib29raW5nSWQgOiBudWxsLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgYm9va2luZ0RhdGE6IHtcbiAgICAgICAgICAgICAgICAgICAgb2ZmZXJJZDogdXJsUGFyYW1zLm9mZmVySWQgPyArdXJsUGFyYW1zLm9mZmVySWQgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgIGNoZWNrSW46IHVybFBhcmFtcy5jaGVja0luLFxuICAgICAgICAgICAgICAgICAgICBjaGVja091dDogdXJsUGFyYW1zLmNoZWNrT3V0LFxuICAgICAgICAgICAgICAgICAgICBhZHVsdHM6IHVybFBhcmFtcy5hZHVsdHMgPyArdXJsUGFyYW1zLmFkdWx0cyA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW46IHVybFBhcmFtcy5jaGlsZHJlbiA/IHVybFBhcmFtcy5jaGlsZHJlbi5zcGxpdChcIixcIikubWFwKChhZ2UpID0+ICthZ2UpIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH0sIDUwMCk7XG59XG5cbmZ1bmN0aW9uIGluaXRSZXN1bWVXaWRnZXQoKSB7XG4gICAgY29uc3QgY2hlY2tJZkRvY3VtZW50TG9hZGVkSW50ZXJ2YWwgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICAgIGlmIChkb2N1bWVudC5yZWFkeVN0YXRlID09PSBcImNvbXBsZXRlXCIpIHtcbiAgICAgICAgICAgIGluamVjdFJlc3VtZUJ1dHRvbigpO1xuICAgICAgICAgICAgYWRkTGlua0V2ZW50TGlzdGVuZXJzKCk7XG5cbiAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tJZkRvY3VtZW50TG9hZGVkSW50ZXJ2YWwpO1xuICAgICAgICB9XG4gICAgfSwgMTAwKTtcbiAgICBhZGRQYWdlTG9hZExpc3RlbmVyKCk7XG59XG5cbmZ1bmN0aW9uIGJvb2socHJvcHM/OiBQYXJ0aWFsPFdpZGdldFByb3BzPikge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHdpZGdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFdJREdFVF9JRCkgYXMgSFRNTEVsZW1lbnQsXG4gICAgICAgICAgICB3aWRnZXRXcmFwcGVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoV0lER0VUX1dSQVBQRVJfSUQpIGFzIEhUTUxFbGVtZW50LFxuICAgICAgICAgICAgcmVzdW1lV2lkZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoUkVTVU1FX0JVVFRPTl9JRCkgYXMgSFRNTEVsZW1lbnQsXG4gICAgICAgICAgICByZXN1bWVXaWRnZXRDbGFzcyA9IHJlc3VtZVdpZGdldCA/IHJlc3VtZVdpZGdldC5nZXRBdHRyaWJ1dGUoXCJjbGFzc1wiKSA6IG51bGw7XG5cbiAgICAgICAgaWYgKHJlc3VtZVdpZGdldENsYXNzPy5pbmNsdWRlcyhcImRpc21pc3MtYnRuXCIpKSB7XG4gICAgICAgICAgICByZXN1bWVXaWRnZXQuc2V0QXR0cmlidXRlKFwiY2xhc3NcIiwgXCJkaXNtaXNzLWJ0bi1zbGlkZS1vdXRcIik7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBpZnJhbWVDb25maWcgPSB7XG4gICAgICAgICAgICAuLi5wcm9wcyxcbiAgICAgICAgICAgIGNvbmZpZzoge1xuICAgICAgICAgICAgICAgIC4uLnByb3BzPy5jb25maWcsXG4gICAgICAgICAgICAgICAgY2xpZW50OiBwcm9wcz8uY29uZmlnPy5jbGllbnQgPz8gKGNsaWVudCBhcyBzdHJpbmcpLFxuICAgICAgICAgICAgICAgIHByb3BlcnR5SWQ6IHByb3BzPy5jb25maWc/LnByb3BlcnR5SWQgPz8gKHByb3BlcnR5SWQgYXMgbnVtYmVyKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKEpTT04uc3RyaW5naWZ5KGJvb2tpbmdDb250ZXh0KSAhPT0gSlNPTi5zdHJpbmdpZnkoaWZyYW1lQ29uZmlnKSkge1xuICAgICAgICAgICAgaXNJZnJhbWVSZWFkeSA9IGZhbHNlO1xuXG4gICAgICAgICAgICBkaXNwbGF5TG9hZGluZ092ZXJsYXkoKTtcblxuICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoV0lER0VUX0lGUkFNRV9JRCk/LnJlbW92ZSgpO1xuICAgICAgICAgICAgaW5qZWN0SWZyYW1lKGlmcmFtZUNvbmZpZyk7XG4gICAgICAgICAgICBib29raW5nQ29udGV4dCA9IGlmcmFtZUNvbmZpZztcblxuICAgICAgICAgICAgY29uc3QgcmVzdW1lQnV0dG9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoUkVTVU1FX0JVVFRPTl9JRCk7XG4gICAgICAgICAgICBjb25zdCByZXN1bWVCdXR0b25UZXh0ID0gcmVzdW1lQnV0dG9uPy5xdWVyeVNlbGVjdG9yKFwic3BhblwiKTtcbiAgICAgICAgICAgIGlmIChyZXN1bWVCdXR0b25UZXh0KSB7XG4gICAgICAgICAgICAgICAgcmVzdW1lQnV0dG9uVGV4dC5pbm5lckhUTUwgPSBcIkNvbXBsZXRlIHlvdXIgYm9va2luZ1wiO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIENoZWNrIGlmIElmcmFtZSBpcyBsb2FkZWRcbiAgICAgICAgY29uc3QgaW50ZXJ2YWxJZCA9IHNldEludGVydmFsKCgpID0+IHtcbiAgICAgICAgICAgIGlmICghaXNJZnJhbWVSZWFkeSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoTE9BREVSX0lEKT8ucmVtb3ZlKCk7XG4gICAgICAgICAgICBjbGVhckludGVydmFsKGludGVydmFsSWQpO1xuXG4gICAgICAgICAgICAvLyBEaXNwbGF5IHdpZGdldCBhbmQgdXBkYXRlIHN0eWxlc1xuICAgICAgICAgICAgaWYgKHdpZGdldC5zdHlsZS5kaXNwbGF5ID09PSBcIm5vbmVcIikge1xuICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24od2lkZ2V0V3JhcHBlci5zdHlsZSwge1xuICAgICAgICAgICAgICAgICAgICB6SW5kZXg6IDEwMDAwMDAwMDAwMTEsXG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogXCIxMDAlXCIsXG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IFwicmdiYSgwLCAwLCAwLCAuNClcIixcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIGxvY2tQYWdlU2Nyb2xsKCk7XG5cbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgd2lkZ2V0LnN0eWxlLmRpc3BsYXkgPSBcImJsb2NrXCI7XG4gICAgICAgICAgICAgICAgICAgIHdpZGdldC5zZXRBdHRyaWJ1dGUoXCJjbGFzc1wiLCBcInNsaWRlLWluXCIpO1xuICAgICAgICAgICAgICAgIH0sIDIwKTtcblxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB3aWRnZXRJZnJhbWUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChXSURHRVRfSUZSQU1FX0lEKTtcbiAgICAgICAgICAgICAgICAgICAgd2lkZ2V0SWZyYW1lPy5mb2N1cygpO1xuICAgICAgICAgICAgICAgIH0sIDI1MCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIFJlc3VtZSBidXR0b24gY2xpY2sgaGFuZGxlclxuICAgICAgICAgICAgY29uc3QgcmVzdW1lQnV0dG9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoUkVTVU1FX0JVVFRPTl9JRCk7XG4gICAgICAgICAgICByZXN1bWVCdXR0b24/LmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzdW1lQnV0dG9uQ2xhc3MgPSByZXN1bWVCdXR0b24uZ2V0QXR0cmlidXRlKFwiY2xhc3NcIik7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VtZUJ1dHRvbkNsYXNzPy5pbmNsdWRlcyhcImRpc21pc3MtYnRuXCIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bWVCdXR0b24uc2V0QXR0cmlidXRlKFwiY2xhc3NcIiwgXCJkaXNtaXNzLWJ0bi1zbGlkZS1vdXRcIik7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKHdpZGdldFdyYXBwZXIuc3R5bGUsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHpJbmRleDogMTAwMDAwMDAwMDAxMSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogXCIxMDAlXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiBcInJnYmEoMCwgMCwgMCwgLjUpXCIsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUub3ZlcmZsb3cgPSBcImhpZGRlblwiO1xuICAgICAgICAgICAgICAgICAgICB3aWRnZXQuc3R5bGUuZGlzcGxheSA9IFwiYmxvY2tcIjtcbiAgICAgICAgICAgICAgICAgICAgd2lkZ2V0LnNldEF0dHJpYnV0ZShcImNsYXNzXCIsIFwic2xpZGUtaW5cIik7XG5cbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB3aWRnZXRJZnJhbWUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChXSURHRVRfSUZSQU1FX0lEKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZGdldElmcmFtZT8uZm9jdXMoKTtcbiAgICAgICAgICAgICAgICAgICAgfSwgNTAwKTtcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICAgICAgICBsb2dnZXIoYFdpZGdldDogcmVzdW1lIGJ1dHRvbiBlcnJvcjogJHtlcnJvcn1gKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIlRyaXBmdXNpb246IHJlc3VtZSBidXR0b24gZXJyb3JcIiwgZXJyb3IpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LCAxMDApO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGxvZ2dlcihgV2lkZ2V0OiBmYWlsZWQgdG8gYm9vazogJHtlcnJvcn1gKTtcbiAgICAgICAgY29uc29sZS5lcnJvcihgVHJpcGZ1c2lvbjogZmFpbGVkIHRvIGJvb2s6ICR7ZXJyb3J9YCk7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBpbml0VHJpcGZ1c2lvblNkaygpIHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCBqc1NkayA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFNES19TQ1JJUFRfSUQpIGFzIEhUTUxFbGVtZW50O1xuICAgICAgICBjb25zdCBqc1Nka1NyYyA9IGpzU2RrLmdldEF0dHJpYnV0ZShcInNyY1wiKSBhcyBzdHJpbmc7XG4gICAgICAgIGNvbnN0IHVybFBhcmFtcyA9IGdldFBhcmFtc0Zyb21VcmwobmV3IFVSTFNlYXJjaFBhcmFtcyhqc1Nka1NyYy5zdWJzdHJpbmcoanNTZGtTcmMuaW5kZXhPZihcIj9cIikpKSk7XG5cbiAgICAgICAgY2xpZW50ID0gdXJsUGFyYW1zW1wiY2xpZW50XCJdID8/IG51bGw7XG4gICAgICAgIHByb3BlcnR5SWQgPSB1cmxQYXJhbXNbXCJwcm9wZXJ0eUlkXCJdID8gK3VybFBhcmFtc1tcInByb3BlcnR5SWRcIl0gOiBudWxsO1xuXG4gICAgICAgIGlmICghY2xpZW50IHx8ICFwcm9wZXJ0eUlkKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCIoISkgVHJpcGZ1c2lvbjogY2xpZW50IGFuZCBwcm9wZXJ0eUlkIGFyZSByZXF1aXJlZC5cIik7XG4gICAgICAgIH1cblxuICAgICAgICBpbml0UmVzdW1lV2lkZ2V0KCk7XG4gICAgICAgIE9iamVjdC5hc3NpZ24od2luZG93LCB7IGJvb2ssIGNsb3NlV2lkZ2V0IH0pO1xuICAgICAgICB3aW5kb3cub25tZXNzYWdlID0gZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2U6IEFwcE1lc3NhZ2UgPSBlLmRhdGE7XG4gICAgICAgICAgICBzd2l0Y2ggKG1lc3NhZ2UudHlwZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgXCJ0cmlwZnVzaW9uLXdpZGdldC1yZWFkeVwiOiB7XG4gICAgICAgICAgICAgICAgICAgIGlzSWZyYW1lUmVhZHkgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FzZSBcInRyaXBmdXNpb24tYm9va2luZy1jb21wbGV0ZWRcIjoge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByZXN1bWVCdXR0b24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChSRVNVTUVfQlVUVE9OX0lEKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzdW1lQnV0dG9uVGV4dCA9IHJlc3VtZUJ1dHRvbj8ucXVlcnlTZWxlY3RvcihcInNwYW5cIik7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bWVCdXR0b25UZXh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bWVCdXR0b25UZXh0LmlubmVySFRNTCA9IFwiQm9va2luZyBjb21wbGV0ZWQhXCI7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhc2UgXCJ0cmlwZnVzaW9uLXNldC1jbGllbnQtdGhlbWVcIjoge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBtZXNzYWdlRGF0YSA9IG1lc3NhZ2UuZGF0YSBhcyB7IHByaW1hcnk/OiBzdHJpbmcgfTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2xpZW50VGhlbWUgPSBtZXNzYWdlRGF0YS5wcmltYXJ5O1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByZXN1bWVCdXR0b24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChSRVNVTUVfQlVUVE9OX0lEKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgd2lkZ2V0SGVhZGVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoV0lER0VUX0hFQURFUl9JRCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChjbGllbnRUaGVtZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VtZUJ1dHRvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VtZUJ1dHRvbi5zdHlsZVtcImJhY2tncm91bmRDb2xvclwiXSA9IGNsaWVudFRoZW1lO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdpZGdldEhlYWRlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZGdldEhlYWRlci5zdHlsZVtcImJhY2tncm91bmRDb2xvclwiXSA9IGNsaWVudFRoZW1lO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdW1lQnV0dG9uPy5yZW1vdmVBdHRyaWJ1dGUoXCJzdHlsZVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZGdldEhlYWRlcj8ucmVtb3ZlQXR0cmlidXRlKFwic3R5bGVcIik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGxvZ2dlcihgV2lkZ2V0OiBmYWlsZWQgdG8gaW5pdCBUcmlwZnVzaW9uIEpTIFNESzogJHtlcnJvcn1gKTtcbiAgICAgICAgY29uc29sZS5lcnJvcihgVHJpcGZ1c2lvbjogZmFpbGVkIHRvIGluaXQgU0RLOiAke2Vycm9yfWApO1xuICAgIH1cbn1cblxuaW5pdFRyaXBmdXNpb25TZGsoKTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==
|