diff --git a/build/index.css b/build/index.css new file mode 100644 index 00000000..4e246639 --- /dev/null +++ b/build/index.css @@ -0,0 +1,12 @@ +/*! + * + * bugbattle v3.1.9 + * https://github.com/BugBattle/JavaScript-SDK + * + * Copyright (c) BugBattle + * + * This source code is licensed under the Commercial license found in the + * LICENSE file in the root directory of this source tree. + * + */.bugbattle--feedback-dialog-container input,.bugbattle--feedback-dialog-container label{margin:0;padding:0;border:none;background-color:#fff}.bugbattle--feedback-button{padding:0;margin:0;position:fixed;top:calc(50% - 58px);right:0;border-top-left-radius:5px;border-bottom-left-radius:5px;cursor:pointer;background-color:#398cfe;color:#fff;box-shadow:0 0 8px 0 rgba(0,0,0,.15);z-index:16777260;border:1px solid rgba(0,0,0,.15);box-sizing:border-box}.bugbattle--feedback-button:hover{box-shadow:0 0 8px 0 rgba(0,0,0,.25)}.bugbattle--feedback-button-inner{width:38px;height:116px;padding:0;margin:0;position:relative}.bugbattle--feedback-button-inner-text{position:absolute;top:50%;left:50%;-webkit-transform:translateX(-50%) translateY(-50%) rotate(-90deg);transform:translateX(-50%) translateY(-50%) rotate(-90deg);background:none;text-align:center;font-weight:700;font-size:16px;font-family:sans-serif}.bugbattle--feedback-dialog-container{position:fixed;left:0;top:0;width:100vw;height:100vh;height:-webkit-fill-available;display:flex;justify-content:center;align-items:center;z-index:16777282;background-color:rgba(0,0,0,.2)}.bugbattle--feedback-dialog{width:90%;max-width:330px;background-color:#fff;box-shadow:0 5px 20px 0 rgba(0,0,0,.15);border-radius:8px;overflow-y:auto;box-sizing:border-box}.bugbattle--feedback-dialog-header{height:56px;border-top-left-radius:10px;border-top-right-radius:10px;display:flex;align-items:center;justify-content:space-between;padding:0 20px;border-bottom:1px solid #eee;margin-bottom:20px;box-sizing:border-box}.bugbattle--feedback-dialog-header-button-cancel svg{width:16px;height:16px;cursor:pointer}.bugbattle--feedback-dialog-header-title{font-weight:700;color:#000;font-size:15px;font-family:sans-serif;text-align:center}.bugbattle--feedback-dialog-info-text{color:#666;font-size:18px;font-family:sans-serif;padding-top:10px;text-align:center}.bugbattle--feedback-dialog-success{display:flex;justify-content:center;align-items:center;flex-direction:column;padding:50px;display:none}.bugbattle--feedback-dialog-success svg{width:30px;height:auto}.bugbattle--feedback-dialog-loading{display:none}.bugbattle--feedback-dialog-body{display:block}.bugbattle--feedback-inputgroup{display:flex;justify-content:center;margin-bottom:20px;padding:0 20px;flex-direction:column}.bugbattle--feedback-inputgroup-text{color:#000;font-size:16px;font-weight:400;font-family:sans-serif}.bugbattle--feedback-inputgroup-label{padding:0;margin-bottom:5px;color:#000;font-size:14px;font-weight:600;font-family:sans-serif}.bugbattle--feedback-send-button{background-color:#398cfe;border-radius:5px;box-sizing:border-box;padding:10px 12px;font-size:17px;font-weight:700;font-family:sans-serif;color:#fff;text-align:center;width:auto;margin-bottom:10px;cursor:pointer}.bugbattle--feedback-send-button:hover{opacity:.9}.bugbattle--feedback-inputgroup>input,.bugbattle--feedback-inputgroup input,.bugbattle--feedback-inputgroup textarea{width:auto;padding:12px;font-size:15px;font-family:sans-serif;outline:none;border:1px solid #ccc;border-radius:3px;box-sizing:border-box}.bugbattle--feedback-inputgroup textarea{box-shadow:none;resize:none;line-height:17px;margin:0;background-color:#fff}.bugbattle--feedback-inputgroup--privacy-policy{padding:8px 20px;font-family:sans-serif;font-size:14px}.bugbattle--feedback-inputgroup--privacy-policy-label{cursor:pointer}.bugbattle--feedback-inputgroup--privacy-policy a{color:#398cfe}.bugbattle--feedback-inputgroup--privacy-policy input{width:auto;border:none;padding:20px;font-size:15px;font-family:sans-serif;outline:none}.bugbattle-feedback-importance{margin:20px 20px -8px;font-weight:700;color:#222426;font-size:14px;font-family:sans-serif}.bugbattle--feedback-image{position:relative}.bugbattle--feedback-poweredbycontainer{display:flex;justify-content:center;align-items:center;margin-top:-10px;margin-bottom:20px;cursor:pointer}.bugbattle--feedback-poweredbycontainer span{font-weight:400;font-size:14px;font-family:sans-serif;color:#aaa}.bugbattle--feedback-poweredbycontainer svg{height:18px;width:auto;margin-left:5px}.bugbattle--edit-button{position:absolute;top:calc(50% - 25px);left:100px;width:50px;height:50px;border-radius:50%;background-color:rgba(0,0,0,.45);cursor:pointer;display:flex;justify-content:center;align-items:center}.bugbattle--edit-button svg{width:60%}.bugbattle-spinner{width:40px;height:40px;position:relative;margin:100px auto}.bugbattle-double-bounce1,.bugbattle-double-bounce2{width:100%;height:100%;border-radius:50%;background-color:#333;opacity:.6;position:absolute;top:0;left:0;-webkit-animation:sk-bounce 2s ease-in-out infinite;animation:sk-bounce 2s ease-in-out infinite}.bugbattle-double-bounce2{-webkit-animation-delay:-1s;animation-delay:-1s}@-webkit-keyframes sk-bounce{0%,to{-webkit-transform:scale(0)}50%{-webkit-transform:scale(1)}}@keyframes sk-bounce{0%,to{transform:scale(0);-webkit-transform:scale(0)}50%{transform:scale(1);-webkit-transform:scale(1)}}.bugbattle-screenshot-editor-container{position:fixed;top:0;left:0;width:100vw;height:100vh;height:-webkit-fill-available;z-index:16777263}.bugbattle-screenshot-editor-container-inner{position:relative;width:100vw;height:100vh;height:-webkit-fill-available}.bugbattle-screenshot-editor-canvas{z-index:16777267}.bugbattle-screenshot-editor-borderlayer,.bugbattle-screenshot-editor-canvas{position:absolute;top:0;left:0;width:100vw;height:100vh;height:-webkit-fill-available;cursor:crosshair}.bugbattle-screenshot-editor-borderlayer{border:12px solid #398cfe;z-index:16777272;box-sizing:border-box}.bugbattle-screenshot-editor-dot{top:-16px;left:-16px;width:16px;height:16px;border:1px solid rgba(0,0,0,.1);border-radius:100%;z-index:16777270}.bugbattle-screenshot-editor-dot,.bugbattle-screenshot-editor-drag-info{position:absolute;background-color:#398cfe;box-shadow:0 0 8px 0 rgba(0,0,0,.15);box-sizing:border-box}.bugbattle-screenshot-editor-drag-info{top:-100px;left:-100px;border:1px solid rgba(0,0,0,.1);border-radius:5px;padding:8px 10px;font-size:16px;font-family:sans-serif;color:#fff;z-index:16777271;min-width:270px;text-align:center}.bugbattle-screenshot-editor-rectangle{position:absolute;top:0;left:0;width:0;height:0;border:3px solid #398cfe;box-sizing:border-box;z-index:16777269;box-shadow:0 0 0 4999px rgba(0,0,0,.1)}@media only screen and (max-width:600px){.bugbattle--feedback-dialog{width:100%;border-radius:0;box-sizing:border-box;max-width:inherit;position:fixed;bottom:0;left:0;right:0}.bugbattle--feedback-dialog-header{border-radius:0}.bugbattle--feedback-button-inner{width:32px;height:100px}.bugbattle--feedback-button-inner-text{font-size:15px}.bugbattle-screenshot-editor-drag-info{position:absolute;top:20px;left:20px;right:20px}} +/*# sourceMappingURL=index.css.map */ \ No newline at end of file diff --git a/build/index.css.map b/build/index.css.map new file mode 100644 index 00000000..86cf4d06 --- /dev/null +++ b/build/index.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["index.css","/Users/lukasboehler/Documents/GitHub/BugBattle-JavaScript-SDK/src/lib/css/App.css"],"names":[],"mappings":"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","file":"index.css","sourcesContent":["/*!\n * \n * bugbattle v3.1.9\n * https://github.com/BugBattle/JavaScript-SDK\n * \n * Copyright (c) BugBattle \n * \n * This source code is licensed under the Commercial license found in the\n * LICENSE file in the root directory of this source tree.\n * \n */\n.bugbattle--feedback-dialog-container input,\n.bugbattle--feedback-dialog-container label {\n margin: 0;\n padding: 0;\n border: none;\n background-color: #fff;\n}\n\n.bugbattle--feedback-button {\n padding: 0px;\n margin: 0px;\n position: fixed;\n top: calc(50% - 58px);\n right: 0px;\n border-top-left-radius: 5px;\n border-bottom-left-radius: 5px;\n cursor: pointer;\n background-color: #398cfe;\n color: #fff;\n box-shadow: 0px 0px 8px 0px rgba(0, 0, 0, 0.15);\n z-index: 16777260;\n border: 1px solid rgba(0, 0, 0, 0.15);\n box-sizing: border-box;\n}\n\n.bugbattle--feedback-button:hover {\n box-shadow: 0px 0px 8px 0px rgba(0, 0, 0, 0.25);\n}\n\n.bugbattle--feedback-button-inner {\n position: relative;\n width: 38px;\n height: 116px;\n padding: 0px;\n margin: 0px;\n position: relative;\n}\n\n.bugbattle--feedback-button-inner-text {\n position: absolute;\n top: 50%;\n left: 50%;\n -webkit-transform: translateX(-50%) translateY(-50%) rotate(-90deg);\n transform: translateX(-50%) translateY(-50%) rotate(-90deg);\n background: none;\n text-align: center;\n font-weight: bold;\n font-size: 16px;\n font-family: sans-serif;\n}\n\n.bugbattle--feedback-dialog-container {\n position: fixed;\n left: 0px;\n top: 0px;\n width: 100vw;\n height: 100vh;\n height: -webkit-fill-available;\n display: flex;\n justify-content: center;\n align-items: center;\n z-index: 16777282;\n background-color: rgba(0,0,0,0.2);\n}\n\n.bugbattle--feedback-dialog {\n width: 90%;\n max-width: 330px;\n background-color: #fff;\n box-shadow: 0px 5px 20px 0px rgba(0, 0, 0, 0.15);\n border-radius: 8px;\n overflow-y: auto;\n box-sizing: border-box;\n}\n\n.bugbattle--feedback-dialog-header {\n height: 56px;\n border-top-left-radius: 10px;\n border-top-right-radius: 10px;\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 0px 20px;\n border-bottom: 1px solid #eee;\n margin-bottom: 20px;\n box-sizing: border-box;\n}\n\n.bugbattle--feedback-dialog-header-button-cancel svg {\n width: 16px;\n height: 16px;\n cursor: pointer;\n}\n\n.bugbattle--feedback-dialog-header-title {\n font-weight: bold;\n text-align: center;\n color: #000;\n font-size: 15px;\n font-family: sans-serif;\n text-align: center;\n}\n\n.bugbattle--feedback-dialog-info-text {\n color: #666;\n font-size: 18px;\n font-family: sans-serif;\n padding-top: 10px;\n text-align: center;\n}\n\n.bugbattle--feedback-dialog-success {\n display: flex;\n justify-content: center;\n align-items: center;\n flex-direction: column;\n padding: 50px;\n display: none;\n}\n\n.bugbattle--feedback-dialog-success svg {\n width: 30px;\n height: auto;\n}\n\n.bugbattle--feedback-dialog-loading {\n display: none;\n}\n\n.bugbattle--feedback-dialog-body {\n display: block;\n}\n\n.bugbattle--feedback-inputgroup {\n display: flex;\n justify-content: center;\n margin-bottom: 20px;\n padding: 0px 20px;\n flex-direction: column;\n}\n\n.bugbattle--feedback-inputgroup-text {\n color: #000;\n font-size: 16px;\n font-weight: normal;\n font-family: sans-serif;\n}\n\n.bugbattle--feedback-inputgroup-label {\n padding: 0px;\n margin-bottom: 5px;\n color: #000;\n font-size: 14px;\n font-weight: 600;\n font-family: sans-serif;\n}\n\n.bugbattle--feedback-send-button {\n background-color: #398cfe;\n border-radius: 5px;\n box-sizing: border-box;\n padding: 10px 12px;\n font-size: 17px;\n font-weight: bold;\n font-family: sans-serif;\n color: #fff;\n text-align: center;\n width: auto;\n margin-bottom: 10px;\n cursor: pointer;\n}\n\n.bugbattle--feedback-send-button:hover {\n opacity: 0.9;\n}\n\n.bugbattle--feedback-inputgroup > input,\n.bugbattle--feedback-inputgroup input {\n width: auto;\n padding: 12px;\n font-size: 15px;\n font-family: sans-serif;\n outline: none;\n border: 1px solid #ccc;\n border-radius: 3px;\n box-sizing: border-box;\n}\n\n.bugbattle--feedback-inputgroup textarea {\n outline: none;\n box-shadow: none;\n resize: none;\n width: auto;\n padding: 12px;\n font-size: 15px;\n line-height: 17px;\n font-family: sans-serif;\n margin: 0px;\n box-sizing: border-box;\n border: 1px solid #ccc;\n border-radius: 3px;\n box-sizing: border-box;\n background-color: #fff;\n}\n\n.bugbattle--feedback-inputgroup--privacy-policy {\n padding: 8px 20px;\n font-family: sans-serif;\n font-size: 14px;\n}\n\n.bugbattle--feedback-inputgroup--privacy-policy-label {\n cursor: pointer;\n}\n\n.bugbattle--feedback-inputgroup--privacy-policy a {\n color: #398cfe;\n}\n\n.bugbattle--feedback-inputgroup--privacy-policy input {\n width: auto;\n border: none;\n padding: 20px;\n font-size: 15px;\n font-family: sans-serif;\n outline: none;\n}\n\n.bugbattle-feedback-importance {\n margin: 20px;\n margin-bottom: -8px;\n font-weight: bold;\n color: #222426;\n font-size: 14px;\n font-family: sans-serif;\n}\n\n.bugbattle--feedback-image {\n position: relative;\n}\n\n.bugbattle--feedback-poweredbycontainer {\n display: flex;\n justify-content: center;\n align-items: center;\n margin-top: -10px;\n margin-bottom: 20px;\n cursor: pointer;\n}\n\n.bugbattle--feedback-poweredbycontainer span {\n font-weight: normal;\n font-size: 14px;\n font-family: sans-serif;\n color: #aaa;\n}\n\n.bugbattle--feedback-poweredbycontainer svg {\n height: 18px;\n width: auto;\n margin-left: 5px;\n}\n\n.bugbattle--edit-button {\n position: absolute;\n top: calc(50% - 25px);\n left: 100px;\n width: 50px;\n height: 50px;\n border-radius: 50%;\n background-color: rgba(0, 0, 0, 0.45);\n cursor: pointer;\n display: flex;\n justify-content: center;\n align-items: center;\n}\n\n.bugbattle--edit-button svg {\n width: 60%;\n}\n\n.bugbattle-spinner {\n width: 40px;\n height: 40px;\n position: relative;\n margin: 100px auto;\n}\n\n.bugbattle-double-bounce1,\n.bugbattle-double-bounce2 {\n width: 100%;\n height: 100%;\n border-radius: 50%;\n background-color: #333;\n opacity: 0.6;\n position: absolute;\n top: 0;\n left: 0;\n\n -webkit-animation: sk-bounce 2s infinite ease-in-out;\n animation: sk-bounce 2s infinite ease-in-out;\n}\n\n.bugbattle-double-bounce2 {\n -webkit-animation-delay: -1s;\n animation-delay: -1s;\n}\n\n@-webkit-keyframes sk-bounce {\n 0%,\n 100% {\n -webkit-transform: scale(0);\n }\n 50% {\n -webkit-transform: scale(1);\n }\n}\n\n@keyframes sk-bounce {\n 0%,\n 100% {\n transform: scale(0);\n -webkit-transform: scale(0);\n }\n 50% {\n transform: scale(1);\n -webkit-transform: scale(1);\n }\n}\n\n.bugbattle-screenshot-editor-container {\n position: fixed;\n top: 0px;\n left: 0px;\n width: 100vw;\n height: 100vh;\n height: -webkit-fill-available;\n z-index: 16777263;\n}\n\n.bugbattle-screenshot-editor-container-inner {\n position: relative;\n width: 100vw;\n height: 100vh;\n height: -webkit-fill-available;\n}\n\n.bugbattle-screenshot-editor-canvas {\n position: absolute;\n top: 0px;\n left: 0px;\n width: 100vw;\n height: 100vh;\n height: -webkit-fill-available;\n cursor: crosshair;\n z-index: 16777267;\n}\n\n.bugbattle-screenshot-editor-borderlayer {\n position: absolute;\n top: 0px;\n left: 0px;\n width: 100vw;\n height: 100vh;\n height: -webkit-fill-available;\n border: 12px solid #398cfe;\n cursor: crosshair;\n z-index: 16777272;\n box-sizing: border-box;\n}\n\n.bugbattle-screenshot-editor-dot {\n position: absolute;\n top: -16px;\n left: -16px;\n width: 16px;\n height: 16px;\n background-color: #398cfe;\n border: 1px solid rgba(0, 0, 0, 0.1);\n border-radius: 100%;\n box-shadow: 0px 0px 8px 0px rgba(0, 0, 0, 0.15);\n z-index: 16777270;\n box-sizing: border-box;\n}\n\n.bugbattle-screenshot-editor-drag-info {\n position: absolute;\n top: -100px;\n left: -100px;\n background-color: #398cfe;\n border: 1px solid rgba(0, 0, 0, 0.1);\n border-radius: 5px;\n box-sizing: border-box;\n padding: 8px 10px;\n font-size: 16px;\n font-family: sans-serif;\n color: #fff;\n box-shadow: 0px 0px 8px 0px rgba(0, 0, 0, 0.15);\n z-index: 16777271;\n min-width: 270px;\n text-align: center;\n}\n\n.bugbattle-screenshot-editor-rectangle {\n position: absolute;\n top: 0px;\n left: 0px;\n width: 0px;\n height: 0px;\n border: 3px solid #398cfe;\n box-sizing: border-box;\n z-index: 16777269;\n box-shadow: 0 0 0 4999px rgba(0, 0, 0, 0.1);\n}\n\n@media only screen and (max-width: 600px) {\n .bugbattle--feedback-dialog {\n width: 100%;\n border-radius: 0px;\n box-sizing: border-box;\n max-width: inherit;\n position: fixed;\n bottom: 0;\n left: 0;\n right: 0;\n }\n\n .bugbattle--feedback-dialog-header {\n border-radius: 0px;\n }\n\n .bugbattle--feedback-button-inner {\n width: 32px;\n height: 100px;\n }\n\n .bugbattle--feedback-button-inner-text {\n font-size: 15px;\n }\n\n .bugbattle-screenshot-editor-drag-info {\n position: absolute;\n top: 20px;\n left: 20px;\n right: 20px;\n }\n}\n\n",".bugbattle--feedback-dialog-container input,\n.bugbattle--feedback-dialog-container label {\n margin: 0;\n padding: 0;\n border: none;\n background-color: #fff;\n}\n\n.bugbattle--feedback-button {\n padding: 0px;\n margin: 0px;\n position: fixed;\n top: calc(50% - 58px);\n right: 0px;\n border-top-left-radius: 5px;\n border-bottom-left-radius: 5px;\n cursor: pointer;\n background-color: #398cfe;\n color: #fff;\n box-shadow: 0px 0px 8px 0px rgba(0, 0, 0, 0.15);\n z-index: 16777260;\n border: 1px solid rgba(0, 0, 0, 0.15);\n box-sizing: border-box;\n}\n\n.bugbattle--feedback-button:hover {\n box-shadow: 0px 0px 8px 0px rgba(0, 0, 0, 0.25);\n}\n\n.bugbattle--feedback-button-inner {\n position: relative;\n width: 38px;\n height: 116px;\n padding: 0px;\n margin: 0px;\n position: relative;\n}\n\n.bugbattle--feedback-button-inner-text {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translateX(-50%) translateY(-50%) rotate(-90deg);\n background: none;\n text-align: center;\n font-weight: bold;\n font-size: 16px;\n font-family: sans-serif;\n}\n\n.bugbattle--feedback-dialog-container {\n position: fixed;\n left: 0px;\n top: 0px;\n width: 100vw;\n height: 100vh;\n height: -webkit-fill-available;\n display: flex;\n justify-content: center;\n align-items: center;\n z-index: 16777282;\n background-color: rgba(0,0,0,0.2);\n}\n\n.bugbattle--feedback-dialog {\n width: 90%;\n max-width: 330px;\n background-color: #fff;\n box-shadow: 0px 5px 20px 0px rgba(0, 0, 0, 0.15);\n border-radius: 8px;\n overflow-y: auto;\n box-sizing: border-box;\n}\n\n.bugbattle--feedback-dialog-header {\n height: 56px;\n border-top-left-radius: 10px;\n border-top-right-radius: 10px;\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 0px 20px;\n border-bottom: 1px solid #eee;\n margin-bottom: 20px;\n box-sizing: border-box;\n}\n\n.bugbattle--feedback-dialog-header-button-cancel svg {\n width: 16px;\n height: 16px;\n cursor: pointer;\n}\n\n.bugbattle--feedback-dialog-header-title {\n font-weight: bold;\n text-align: center;\n color: #000;\n font-size: 15px;\n font-family: sans-serif;\n text-align: center;\n}\n\n.bugbattle--feedback-dialog-info-text {\n color: #666;\n font-size: 18px;\n font-family: sans-serif;\n padding-top: 10px;\n text-align: center;\n}\n\n.bugbattle--feedback-dialog-success {\n display: flex;\n justify-content: center;\n align-items: center;\n flex-direction: column;\n padding: 50px;\n display: none;\n}\n\n.bugbattle--feedback-dialog-success svg {\n width: 30px;\n height: auto;\n}\n\n.bugbattle--feedback-dialog-loading {\n display: none;\n}\n\n.bugbattle--feedback-dialog-body {\n display: block;\n}\n\n.bugbattle--feedback-inputgroup {\n display: flex;\n justify-content: center;\n margin-bottom: 20px;\n padding: 0px 20px;\n flex-direction: column;\n}\n\n.bugbattle--feedback-inputgroup-text {\n color: #000;\n font-size: 16px;\n font-weight: normal;\n font-family: sans-serif;\n}\n\n.bugbattle--feedback-inputgroup-label {\n padding: 0px;\n margin-bottom: 5px;\n color: #000;\n font-size: 14px;\n font-weight: 600;\n font-family: sans-serif;\n}\n\n.bugbattle--feedback-send-button {\n background-color: #398cfe;\n border-radius: 5px;\n box-sizing: border-box;\n padding: 10px 12px;\n font-size: 17px;\n font-weight: bold;\n font-family: sans-serif;\n color: #fff;\n text-align: center;\n width: auto;\n margin-bottom: 10px;\n cursor: pointer;\n}\n\n.bugbattle--feedback-send-button:hover {\n opacity: 0.9;\n}\n\n.bugbattle--feedback-inputgroup > input,\n.bugbattle--feedback-inputgroup input {\n width: auto;\n padding: 12px;\n font-size: 15px;\n font-family: sans-serif;\n outline: none;\n border: 1px solid #ccc;\n border-radius: 3px;\n box-sizing: border-box;\n}\n\n.bugbattle--feedback-inputgroup textarea {\n outline: none;\n -webkit-box-shadow: none;\n -moz-box-shadow: none;\n box-shadow: none;\n resize: none;\n width: auto;\n padding: 12px;\n font-size: 15px;\n line-height: 17px;\n font-family: sans-serif;\n margin: 0px;\n box-sizing: border-box;\n border: 1px solid #ccc;\n border-radius: 3px;\n box-sizing: border-box;\n background-color: #fff;\n}\n\n.bugbattle--feedback-inputgroup--privacy-policy {\n padding: 8px 20px;\n font-family: sans-serif;\n font-size: 14px;\n}\n\n.bugbattle--feedback-inputgroup--privacy-policy-label {\n cursor: pointer;\n}\n\n.bugbattle--feedback-inputgroup--privacy-policy a {\n color: #398cfe;\n}\n\n.bugbattle--feedback-inputgroup--privacy-policy input {\n width: auto;\n border: none;\n padding: 20px;\n font-size: 15px;\n font-family: sans-serif;\n outline: none;\n}\n\n.bugbattle-feedback-importance {\n margin: 20px;\n margin-bottom: -8px;\n font-weight: bold;\n color: #222426;\n font-size: 14px;\n font-family: sans-serif;\n}\n\n.bugbattle--feedback-image {\n position: relative;\n}\n\n.bugbattle--feedback-poweredbycontainer {\n display: flex;\n justify-content: center;\n align-items: center;\n margin-top: -10px;\n margin-bottom: 20px;\n cursor: pointer;\n}\n\n.bugbattle--feedback-poweredbycontainer span {\n font-weight: normal;\n font-size: 14px;\n font-family: sans-serif;\n color: #aaa;\n}\n\n.bugbattle--feedback-poweredbycontainer svg {\n height: 18px;\n width: auto;\n margin-left: 5px;\n}\n\n.bugbattle--edit-button {\n position: absolute;\n top: calc(50% - 25px);\n left: 100px;\n width: 50px;\n height: 50px;\n border-radius: 50%;\n background-color: rgba(0, 0, 0, 0.45);\n cursor: pointer;\n display: flex;\n justify-content: center;\n align-items: center;\n}\n\n.bugbattle--edit-button svg {\n width: 60%;\n}\n\n.bugbattle-spinner {\n width: 40px;\n height: 40px;\n position: relative;\n margin: 100px auto;\n}\n\n.bugbattle-double-bounce1,\n.bugbattle-double-bounce2 {\n width: 100%;\n height: 100%;\n border-radius: 50%;\n background-color: #333;\n opacity: 0.6;\n position: absolute;\n top: 0;\n left: 0;\n\n -webkit-animation: sk-bounce 2s infinite ease-in-out;\n animation: sk-bounce 2s infinite ease-in-out;\n}\n\n.bugbattle-double-bounce2 {\n -webkit-animation-delay: -1s;\n animation-delay: -1s;\n}\n\n@-webkit-keyframes sk-bounce {\n 0%,\n 100% {\n -webkit-transform: scale(0);\n }\n 50% {\n -webkit-transform: scale(1);\n }\n}\n\n@keyframes sk-bounce {\n 0%,\n 100% {\n transform: scale(0);\n -webkit-transform: scale(0);\n }\n 50% {\n transform: scale(1);\n -webkit-transform: scale(1);\n }\n}\n\n.bugbattle-screenshot-editor-container {\n position: fixed;\n top: 0px;\n left: 0px;\n width: 100vw;\n height: 100vh;\n height: -webkit-fill-available;\n z-index: 16777263;\n}\n\n.bugbattle-screenshot-editor-container-inner {\n position: relative;\n width: 100vw;\n height: 100vh;\n height: -webkit-fill-available;\n}\n\n.bugbattle-screenshot-editor-canvas {\n position: absolute;\n top: 0px;\n left: 0px;\n width: 100vw;\n height: 100vh;\n height: -webkit-fill-available;\n cursor: crosshair;\n z-index: 16777267;\n}\n\n.bugbattle-screenshot-editor-borderlayer {\n position: absolute;\n top: 0px;\n left: 0px;\n width: 100vw;\n height: 100vh;\n height: -webkit-fill-available;\n border: 12px solid #398cfe;\n cursor: crosshair;\n z-index: 16777272;\n box-sizing: border-box;\n}\n\n.bugbattle-screenshot-editor-dot {\n position: absolute;\n top: -16px;\n left: -16px;\n width: 16px;\n height: 16px;\n background-color: #398cfe;\n border: 1px solid rgba(0, 0, 0, 0.1);\n border-radius: 100%;\n box-shadow: 0px 0px 8px 0px rgba(0, 0, 0, 0.15);\n z-index: 16777270;\n box-sizing: border-box;\n}\n\n.bugbattle-screenshot-editor-drag-info {\n position: absolute;\n top: -100px;\n left: -100px;\n background-color: #398cfe;\n border: 1px solid rgba(0, 0, 0, 0.1);\n border-radius: 5px;\n box-sizing: border-box;\n padding: 8px 10px;\n font-size: 16px;\n font-family: sans-serif;\n color: #fff;\n box-shadow: 0px 0px 8px 0px rgba(0, 0, 0, 0.15);\n z-index: 16777271;\n min-width: 270px;\n text-align: center;\n}\n\n.bugbattle-screenshot-editor-rectangle {\n position: absolute;\n top: 0px;\n left: 0px;\n width: 0px;\n height: 0px;\n border: 3px solid #398cfe;\n box-sizing: border-box;\n z-index: 16777269;\n box-shadow: 0 0 0 4999px rgba(0, 0, 0, 0.1);\n}\n\n@media only screen and (max-width: 600px) {\n .bugbattle--feedback-dialog {\n width: 100%;\n border-radius: 0px;\n box-sizing: border-box;\n max-width: inherit;\n position: fixed;\n bottom: 0;\n left: 0;\n right: 0;\n }\n\n .bugbattle--feedback-dialog-header {\n border-radius: 0px;\n }\n\n .bugbattle--feedback-button-inner {\n width: 32px;\n height: 100px;\n }\n\n .bugbattle--feedback-button-inner-text {\n font-size: 15px;\n }\n\n .bugbattle-screenshot-editor-drag-info {\n position: absolute;\n top: 20px;\n left: 20px;\n right: 20px;\n }\n}\n"]} \ No newline at end of file diff --git a/build/index.js b/build/index.js new file mode 100644 index 00000000..f984f013 --- /dev/null +++ b/build/index.js @@ -0,0 +1,13 @@ +/*! + * + * bugbattle v3.1.9 + * https://github.com/BugBattle/JavaScript-SDK + * + * Copyright (c) BugBattle + * + * This source code is licensed under the Commercial license found in the + * LICENSE file in the root directory of this source tree. + * + */ +!function(e,t){"object"===typeof exports&&"object"===typeof module?module.exports=t():"function"===typeof define&&define.amd?define("BugBattle",[],t):"object"===typeof exports?exports.BugBattle=t():e.BugBattle=t()}(window,(function(){return function(e){var t={};function __webpack_require__(n){if(t[n])return t[n].exports;var r=t[n]={i:n,l:!1,exports:{}};return e[n].call(r.exports,r,r.exports,__webpack_require__),r.l=!0,r.exports}return __webpack_require__.m=e,__webpack_require__.c=t,__webpack_require__.d=function(e,t,n){__webpack_require__.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},__webpack_require__.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},__webpack_require__.t=function(e,t){if(1&t&&(e=__webpack_require__(e)),8&t)return e;if(4&t&&"object"===typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(__webpack_require__.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)__webpack_require__.d(n,r,function(t){return e[t]}.bind(null,r));return n},__webpack_require__.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return __webpack_require__.d(t,"a",t),t},__webpack_require__.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},__webpack_require__.p="",__webpack_require__(__webpack_require__.s=3)}([function(e,t,n){var r,o,a;!function(i){"use strict";"object"===typeof e.exports?e.exports=i():null!=n(1)?(o=[],void 0===(a="function"===typeof(r=i)?r.apply(t,o):r)||(e.exports=a)):self.sanctuaryTypeIdentifiers=i()}((function(){"use strict";var e=new RegExp("^([\\s\\S]+)/([\\s\\S]+?)(?:@([0-9]+))?$");function type(e){return null!=e&&null!=e.constructor&&e.constructor.prototype!==e&&"string"===typeof e["@@type"]?e["@@type"]:Object.prototype.toString.call(e).slice("[object ".length,-"]".length)}return type.parse=function(t){var n=null,r=t,o=0,a=e.exec(t);return null!=a&&(n=a[1],r=a[2],null!=a[3]&&(o=Number(a[3]))),{namespace:n,name:r,version:o}},type}))},function(e,t){(function(t){e.exports=t}).call(this,{})},function(e,t,n){var r,o,a;!function(i){"use strict";"object"===typeof e.exports?e.exports=i():null!=n(1)?(o=[],void 0===(a="function"===typeof(r=i)?r.apply(t,o):r)||(e.exports=a)):self.sanctuaryShow=i()}((function(){"use strict";var e=[];function entry(e){return function(t){return show(t)+": "+show(e[t])}}function sortedKeys(e){return Object.keys(e).sort()}function show(t){if(e.indexOf(t)>=0)return"";switch(Object.prototype.toString.call(t)){case"[object Boolean]":return"object"===typeof t?"new Boolean ("+show(t.valueOf())+")":t.toString();case"[object Number]":return"object"===typeof t?"new Number ("+show(t.valueOf())+")":1/t===-1/0?"-0":t.toString(10);case"[object String]":return"object"===typeof t?"new String ("+show(t.valueOf())+")":JSON.stringify(t);case"[object Date]":return"new Date ("+show(isNaN(t.valueOf())?NaN:t.toISOString())+")";case"[object Error]":return"new "+t.name+" ("+show(t.message)+")";case"[object Arguments]":return"function () { return arguments; } ("+Array.prototype.map.call(t,show).join(", ")+")";case"[object Array]":e.push(t);try{return"["+t.map(show).concat(sortedKeys(t).filter((function(e){return!/^\d+$/.test(e)})).map(entry(t))).join(", ")+"]"}finally{e.pop()}case"[object Object]":e.push(t);try{return!("@@show"in t)||null!=t.constructor&&t.constructor.prototype===t?"{"+sortedKeys(t).map(entry(t)).join(", ")+"}":t["@@show"]()}finally{e.pop()}case"[object Set]":e.push(t);try{return"new Set ("+show(Array.from(t.values()))+")"}finally{e.pop()}case"[object Map]":e.push(t);try{return"new Map ("+show(Array.from(t.entries()))+")"}finally{e.pop()}default:return String(t)}}return show}))},function(e,t,n){e.exports=n(5)},function(e,t,n){},function(e,t,n){"use strict";n.r(t);n(4);var r=n(0),o=n.n(r),a="fantasy-land/alt",i="fantasy-land/ap",u="fantasy-land/bimap",c="fantasy-land/chain",l="fantasy-land/chainRec",s="fantasy-land/map",f="fantasy-land/of",p="fantasy-land/zero",d=["first","second","third","fourth","fifth"],h="fluture/Future@5";function List(e,t){this.head=e,this.tail=t}List.prototype.toJSON=function(){return toArray(this)};var v=new List(null,null);function isNil(e){return e.tail===e}function cons(e,t){return new List(e,t)}function reverse(e){for(var t=v,n=e;!isNil(n);)t=cons(n.head,t),n=n.tail;return t}function toArray(e){for(var t=e,n=[];!isNil(t);)n.push(t.head),t=t.tail;return n}v.tail=v;var y=Error.captureStackTrace||function(e){var t=new Error;"string"===typeof t.stack?e.stack=e.name+"\n"+t.stack.split("\n").slice(1).join("\n"):e.stack=e.name},g=debugHandleNone;function debugHandleNone(e){return e}function debug(e,t,n,r,o){return g(e,t,n,r,o)}function captureContext(e,t,n){return debug(e,debugCaptureContext,e,t,n)}function debugCaptureContext(e,t,n){var r={tag:t,name:" from "+t+":"};return y(r,n),cons(r,e)}function debugCaptureApplicationContext(e,t,n){return debugCaptureContext(e,d[t-1]+" application of "+n.name,n)}var m=n(2),b=n.n(m),w="undefined"===typeof w?function(e,t){return setTimeout(e,0,t)}:w;function noop(){}function call(e,t){return e(t)}function raise(e){w((function(){throw e}))}function showArg(e){return b()(e)+" :: "+o.a.parse(o()(e)).name}function error_error(e){return new Error(e)}function typeError(e){return new TypeError(e)}function invalidArgument(e,t,n,r){return typeError(e+"() expects its "+d[t]+" argument to "+n+".\n Actual: "+showArg(r))}function invalidArgumentOf(e){return function(t,n,r){return invalidArgument(t,n,e,r)}}function invalidFuture(e,t,n){var r,a=o.a.parse(o()(t));return typeError(e+" to be a valid Future."+("Future"===a.name?"\n"+("fluture"!==a.namespace?"The Future was not created by fluture. Make sure you transform other Futures to fluture Futures. Got "+((r=a.namespace)?"a Future from "+r:"an unscoped Future")+".\n See: https://github.com/fluture-js/Fluture#casting-futures":5!==a.version?function(e,t){return"The Future was created by "+(t<5?"an older":"a newer")+" version of fluture. This means that one of the sources which creates Futures is outdated. Update this source, or transform its created Futures to be compatible.\n See: https://github.com/fluture-js/Fluture#casting-futures"}(0,a.version):"Nothing seems wrong. Contact the Fluture maintainers."):"")+"\n Actual: "+b()(t)+" :: "+a.name+(n||""))}function invalidFutureArgument(e,t,n,r){return invalidFuture(e+"() expects its "+d[t]+" argument",n,r)}function assignUnenumerable(e,t,n){Object.defineProperty(e,t,{value:n,writable:!0,configurable:!0})}function wrapException(e,t){var n=function(e,t){var n;try{if(e instanceof Error)return e;n="A Non-Error was thrown from a Future: "+b()(e)}catch(o){n="Something was thrown from a Future, but it could not be converted to String"}var r=error_error(n);return y(r,t),r}(e,wrapException),r=function(e,t){for(var n=t,r=reverse(e);!isNil(r);)n=cons(r.head,n),r=r.tail;return n}(n.context||v,t.context),o=error_error(n.message);return assignUnenumerable(o,"future",n.future||t),assignUnenumerable(o,"reason",n.reason||n),assignUnenumerable(o,"stack",o.reason.stack),withExtraContext(o,r)}function withExtraContext(e,t){return assignUnenumerable(e,"context",t),assignUnenumerable(e,"stack",e.stack+function(e){var t="",n=e;for(;n!==v;)t=t+"\n"+n.head.stack,n=n.tail;return t}(t)),e}function isFunction(e){return"function"===typeof e}function isObject(e){return null!==e&&"object"===typeof e}function hasMethod(e,t){return null!=t&&isFunction(t[e])}function isFunctor(e){return hasMethod(s,e)}function isApply(e){return isFunctor(e)&&hasMethod(i,e)}function Next(e){return{done:!1,value:e}}function Done(e){return{done:!0,value:e}}function getArgs(e){for(var t=new Array(e.arity),n=1;n<=e.arity;n++)t[n-1]=e["$"+String(n)];return t}function future_showArg(e){return" ("+b()(e)+")"}var _={pred:function(){return!0},error:invalidArgumentOf("be anything")},x={pred:isFunction,error:invalidArgumentOf("be a Function")},k={pred:isFuture,error:invalidFutureArgument},C={pred:function(e){return e===1/0||"number"===typeof e&&e>0&&e%1===0},error:invalidArgumentOf("be a positive Integer")};function application(e,t,n,r,o){if(r.length<2&&n.pred(r[0]))return function(e,t,n){return debug(e,debugCaptureApplicationContext,e,t,n)}(o,e,t);var a=r.length>1?function(e,t){return new TypeError(e.name+"() expects to be called with a single argument per invocation\n Saw: "+t.length+" arguments"+Array.prototype.slice.call(t).map((function(e,t){return"\n "+(d[t]?d[t].charAt(0).toUpperCase()+d[t].slice(1):"Argument "+String(t+1))+": "+showArg(e)})).join(""))}(t,r):n.error(t.name,e-1,r[0]);throw y(a,t),withExtraContext(a,o)}function application1(e,t,n){return application(1,e,t,n,v)}function Future(e){var t=application1(Future,x,arguments);return new L(t,e)}function isFuture(e){return e instanceof Future||o()(e)===h}function createInterpreter(e,t,n){var Interpreter=function(e,t,n,r){this.context=e,this.$1=t,this.$2=n,this.$3=r};return(Interpreter.prototype=Object.create(Future.prototype)).arity=e,Interpreter.prototype.name=t,Interpreter.prototype._interpret=n,Interpreter}Future["@@type"]=h,Future.constructor={prototype:Future},Future[f]=future_resolve,Future[l]=function(e,t){return future_resolve(Next(t))._transform(new M(v,(function chainRec$recur(t){return t.done?future_resolve(t.value):e(Next,Done,t.value)._transform(new M(v,chainRec$recur))})))},Future.prototype["@@type"]=h,Future.prototype["@@show"]=function(){return this.toString()},Future.prototype.pipe=function(e){if(!isFunction(e))throw invalidArgument("Future#pipe",0,"be a Function",e);return e(this)},Future.prototype[i]=function Future$FL$ap(e){var t=captureContext(v,"a Fantasy Land dispatch to ap",Future$FL$ap);return e._transform(new j(t,this))},Future.prototype[s]=function Future$FL$map(e){var t=captureContext(v,"a Fantasy Land dispatch to map",Future$FL$map);return this._transform(new O(t,e))},Future.prototype[u]=function Future$FL$bimap(e,t){var n=captureContext(v,"a Fantasy Land dispatch to bimap",Future$FL$bimap);return this._transform(new q(n,e,t))},Future.prototype[c]=function Future$FL$chain(e){var t=captureContext(v,"a Fantasy Land dispatch to chain",Future$FL$chain);return this._transform(new M(t,e))},Future.prototype[a]=function Future$FL$alt(e){var t=captureContext(v,"a Fantasy Land dispatch to alt",Future$FL$alt);return this._transform(new R(t,e))},Future.prototype.extractLeft=function(){return[]},Future.prototype.extractRight=function(){return[]},Future.prototype._transform=function(e){return new P(e.context,this,cons(e,v))},Future.prototype.isTransformer=!1,Future.prototype.context=v,Future.prototype.arity=0,Future.prototype.name="future",Future.prototype.toString=function(){return this.name+getArgs(this).map(future_showArg).join("")},Future.prototype.toJSON=function(){return{$:h,kind:"interpreter",type:this.name,args:getArgs(this)}};var L=createInterpreter(1,"Future",(function(e,t,n){var r=this.$1,o=!1,a=noop,cont=function(){o=!0};try{a=r((function(e){cont=function(){o=!1,t(e)},o&&cont()}),(function(e){cont=function(){o=!1,n(e)},o&&cont()}))}catch(i){return e(wrapException(i,this)),noop}return isFunction(a)&&0===a.length?(cont(),function(){o&&(o=!1,a&&a())}):(e(wrapException(typeError("The computation was expected to return a nullary cancellation function\n Actual: "+b()(a)),this)),noop)})),S=createInterpreter(0,"never",(function(){return noop}));S.prototype._isNever=!0;var F=new S(v);var E=createInterpreter(1,"crash",(function(e){return e(this.$1),noop}));function future_crash(e){return new E(application1(future_crash,_,arguments),e)}var $=createInterpreter(1,"reject",(function(e,t){return t(this.$1),noop}));function future_reject(e){return new $(application1(future_reject,_,arguments),e)}$.prototype.extractLeft=function(){return[this.$1]};var T=createInterpreter(1,"resolve",(function(e,t,n){return n(this.$1),noop}));function future_resolve(e){return new T(application1(future_resolve,_,arguments),e)}T.prototype.extractRight=function(){return[this.$1]};var P=createInterpreter(2,"transform",(function(e,t,n){var r,o,a,i,u=v,c=v,l=noop,s=!0;function nextHot(){var e=c.head;return c=c.tail,e}function nextCold(){var e=u.head;return u=u.tail,e}function settle(e){if(a=!0,(r=e).isTransformer){for(var i=r.$2;!isNil(i);)u=cons(i.head,u),i=i.tail;r=r.$1}s&&function(){s=!1;for(;;){if(a=!1,o=nextCold())l=r._interpret(exception,rejected,resolved),a||warmupActions();else{if(!(o=nextHot()))break;l=r._interpret(exception,rejected,resolved)}if(!a)return void(s=!0)}l=r._interpret(exception,t,n)}()}function rejected(e){settle(o.rejected(e))}function resolved(e){settle(o.resolved(e))}function early(e,t){if(l(),u=v,s&&o!==t)for(o.cancel();(i=nextHot())&&i!==t;)i.cancel();settle(e)}function Sequence$cancel(){for(l(),o&&o.cancel();i=nextHot();)i.cancel()}function exception(t){Sequence$cancel(),a=!0,u=c=v;var n=wrapException(t,r);r=F,e(n)}function warmupActions(){for(u=reverse(u);u!==v;){if(i=u.head.run(early),a)return;c=cons(i,c),u=u.tail}o=o.run(early)}return settle(this),Sequence$cancel}));P.prototype.isTransformer=!0,P.prototype._transform=function(e){return new P(e.context,this.$1,cons(e,this.$2))},P.prototype.toString=function(){return toArray(reverse(this.$2)).reduce((function(e,t){return t.name+getArgs(t).map(future_showArg).join("")+" ("+e+")"}),this.$1.toString())};var A={rejected:function(e){return this.cancel(),new $(this.context,e)},resolved:function(e){return this.cancel(),new T(this.context,e)},run:function(){return this},cancel:noop,context:v,arity:0,name:"transform",toJSON:function(){return{$:h,kind:"transformation",type:this.name,args:getArgs(this)}}};function wrapHandler(e){return function(t){var n;try{n=e.call(this,t)}catch(r){return new E(this.context,r)}return isFuture(n)?n:new E(this.context,invalidFuture(this.name+" expects the return value from the function it's given",n,"\n When called with: "+b()(t)))}}function createTransformation(e,t,n){var Transformation=function(e,t,n){this.context=e,this.$1=t,this.$2=n};return(Transformation.prototype=Object.create(A)).arity=e,Transformation.prototype.name=t,"function"===typeof n.rejected&&(Transformation.prototype.rejected=wrapHandler(n.rejected)),"function"===typeof n.resolved&&(Transformation.prototype.resolved=wrapHandler(n.resolved)),"function"===typeof n.run&&(Transformation.prototype.run=n.run),Transformation}var j=createTransformation(1,"ap",{resolved:function(e){if(isFunction(e))return this.$1._transform(new O(this.context,e));throw typeError("ap expects the second Future to resolve to a Function\n Actual: "+b()(e))}}),R=createTransformation(1,"alt",{rejected:function(){return this.$1}}),O=createTransformation(1,"map",{resolved:function(e){return new T(this.context,call(this.$1,e))}}),q=createTransformation(2,"bimap",{rejected:function(e){return new $(this.context,call(this.$1,e))},resolved:function(e){return new T(this.context,call(this.$2,e))}}),M=createTransformation(1,"chain",{resolved:function(e){return call(this.$1,e)}}),H=createInterpreter(2,"after",(function(e,t,n){var r=setTimeout(n,this.$1,this.$2);return function(){clearTimeout(r)}}));H.prototype.extractRight=function(){return[this.$2]};var B={pred:function(e){return isFunctor(e)&&hasMethod(a,e)},error:invalidArgumentOf("have Alt implemented")};function alt_alt(e){if(isFuture(e)){var t=application1(alt_alt,k,arguments);return function alt(n){var r=application(2,alt,k,arguments,t);return n._transform(new R(r,e))}}var n=application1(alt_alt,B,arguments);return function alt(t){return application(2,alt,B,arguments,n),e[a](t)}}var I=createTransformation(1,"and",{resolved:function(){return this.$1}});var N={pred:isApply,error:invalidArgumentOf("have Apply implemented")};function ap_ap(e){if(isFuture(e)){var t=application1(ap_ap,k,arguments);return function ap(n){var r=application(2,ap,k,arguments,t);return n._transform(new j(r,e))}}var n=application1(ap_ap,N,arguments);return function ap(t){return application(2,ap,N,arguments,n),e[i](t)}}var W=createInterpreter(2,"encaseP",(function(e,t,n){var r,o,a=!0,i=this.$1,u=this.$2;try{r=i(u)}catch(c){return e(wrapException(c,this)),noop}return(o=r)instanceof Promise||null!=o&&isFunction(o.then)?(r.then((function(e){a&&(a=!1,n(e))}),(function(e){a&&(a=!1,t(e))})),function(){a=!1}):(e(wrapException(function(e,t,n){return typeError("encaseP() expects the function it's given to return a Promise/Thenable\n Actual: "+b()(e)+"\n From calling: "+b()(t)+"\n With: "+b()(n))}(r,i,u),this)),noop)}));function encase_p_encaseP(e){var t=application1(encase_p_encaseP,x,arguments);return function encaseP(n){var r=application(2,encaseP,_,arguments,t);return new W(r,e,n)}}function attemptP(e){return encase_p_encaseP.apply(this,arguments)(void 0)}var U=createInterpreter(2,"encase",(function(e,t,n){var r,o=this.$1;try{r=o(this.$2)}catch(a){return t(a),noop}return n(r),noop}));function encase_encase(e){var t=application1(encase_encase,x,arguments);return function encase(n){var r=application(2,encase,_,arguments,t);return new U(r,e,n)}}function attempt(e){return encase_encase.apply(this,arguments)(void 0)}var D={pred:function(e){return isFunctor(e)&&hasMethod(u,e)},error:invalidArgumentOf("have Bifunctor implemented")};function bimap_bimap(e){var t=application1(bimap_bimap,x,arguments);return function bimap(n){var r=application(2,bimap,x,arguments,t);return function bimap(t){var o=application(3,bimap,D,arguments,r);return isFuture(t)?t._transform(new q(o,e,n)):t[u](e,n)}}}createTransformation(2,"bichain",{rejected:function(e){return call(this.$1,e)},resolved:function(e){return call(this.$2,e)}});function Eager(e){var t=this;t.rec=noop,t.rej=noop,t.res=noop,t.crashed=!1,t.rejected=!1,t.resolved=!1,t.value=null,t.cancel=e._interpret((function(e){t.value=e,t.crashed=!0,t.cancel=noop,t.rec(e)}),(function(e){t.value=e,t.rejected=!0,t.cancel=noop,t.rej(e)}),(function(e){t.value=e,t.resolved=!0,t.cancel=noop,t.res(e)}))}function earlyCrash(e,t){e(future_crash(t))}function earlyReject(e,t){e(future_reject(t))}function createParallelTransformation(e,t,n,r,o){var a=createTransformation(1,e,Object.assign({run:function(e){var o=new Eager(this.$1),i=new a(this.context,o);function Parallel$early(t){e(t,i)}return i.cancel=o._interpret((function(e){t(Parallel$early,e)}),(function(e){n(Parallel$early,e)}),(function(e){r(Parallel$early,e)})),i}},o));return a}Eager.prototype=Object.create(Future.prototype),Eager.prototype._interpret=function(e,t,n){return this.crashed?e(this.value):this.rejected?t(this.value):this.resolved?n(this.value):(this.rec=e,this.rej=t,this.res=n),this.cancel};var z=createTransformation(1,"pair",{resolved:function(e){return new T(this.context,[e,this.$1])}}),V=createParallelTransformation("both",earlyCrash,earlyReject,noop,{resolved:function(e){return this.$1._transform(new z(this.context,e))}});function both_both(e){var t=application1(both_both,k,arguments);return function both(n){var r=application(2,both,k,arguments,t);return n._transform(new V(r,e))}}function Queued(e,t,n){this[2]=e,this[3]=t,this[4]=n}var Z=createInterpreter(1,"cache",(function(e,t,n){var r=noop;switch(this._state){case 1:r=this._addToQueue(e,t,n);break;case 2:e(this._value);break;case 3:t(this._value);break;case 4:n(this._value);break;default:this._queue=[],r=this._addToQueue(e,t,n),this.run()}return r}));Z.prototype._cancel=noop,Z.prototype._queue=null,Z.prototype._queued=0,Z.prototype._value=void 0,Z.prototype._state=0,Z.prototype.extractLeft=function(){return 3===this._state?[this._value]:[]},Z.prototype.extractRight=function(){return 4===this._state?[this._value]:[]},Z.prototype._addToQueue=function(e,t,n){var r=this;if(r._state>1)return noop;var o=r._queue.push(new Queued(e,t,n))-1;return r._queued=r._queued+1,function(){r._state>1||(r._queue[o]=void 0,r._queued=r._queued-1,0===r._queued&&r.reset())}},Z.prototype._drainQueue=function(){if(!(this._state<=1)&&0!==this._queued){for(var e=this._queue,t=e.length,n=this._state,r=this._value,o=0;o1||(this._value=e,this._state=2,this._drainQueue())},Z.prototype.reject=function(e){this._state>1||(this._value=e,this._state=3,this._drainQueue())},Z.prototype.resolve=function(e){this._state>1||(this._value=e,this._state=4,this._drainQueue())},Z.prototype.run=function(){var e=this;e._state>0||(e._state=1,e._cancel=e.$1._interpret((function(t){e.crash(t)}),(function(t){e.reject(t)}),(function(t){e.resolve(t)})))},Z.prototype.reset=function(){0!==this._state&&(1===this._state&&this._cancel(),this._cancel=noop,this._queue=[],this._queued=0,this._value=void 0,this._state=0)};createTransformation(1,"chainRej",{rejected:function(e){return call(this.$1,e)}});var X={pred:function(e){return isApply(e)&&hasMethod(c,e)},error:invalidArgumentOf("have Chain implemented")};function chain_chain(e){var t=application1(chain_chain,x,arguments);return function chain(n){var r=application(2,chain,X,arguments,t);return isFuture(n)?n._transform(new M(r,e)):n[c](e)}}var K=createTransformation(2,"coalesce",{rejected:function(e){return new T(this.context,call(this.$1,e))},resolved:function(e){return new T(this.context,call(this.$2,e))}});function coalesce_coalesce(e){var t=application1(coalesce_coalesce,x,arguments);return function coalesce(n){var r=application(2,coalesce,x,arguments,t);return function coalesce(t){var o=application(3,coalesce,k,arguments,r);return t._transform(new K(o,e,n))}}}function fork_fork(e){var t=application1(fork_fork,x,arguments);return function fork(n){var r=application(2,fork,x,arguments,t);return function fork(t){return application(3,fork,k,arguments,r),t._interpret(raise,e,n)}}}function invalidState(e){return invalidFuture("go() expects the value produced by the iterator",e,"\n Tip: If you're using a generator, make sure you always yield a Future")}createInterpreter(1,"go",(function(e,t,n){var r,o,a,i,u=this,c=0,l=noop;function crash(t){e(wrapException(t,u))}try{a=u.$1()}catch(s){return crash(s),noop}if(!isObject(i=a)||!isFunction(i.next))return crash(invalidArgument("go",0,'return an iterator, maybe you forgot the "*"',a)),noop;function resolved(e){if(o=e,2===c)return drain();c=1}function drain(){for(;;){try{r=a.next(o)}catch(s){return crash(s)}if(!isObject(i=r)||"boolean"!==typeof i.done)return crash((e=r,typeError("The iterator did not return a valid iteration from iterator.next()\n Actual: "+b()(e))));if(r.done)break;if(!isFuture(r.value))return crash(invalidState(r.value));if(c=0,l=r.value._interpret(crash,t,resolved),0===c)return c=2}var e,i;n(r.value)}return drain(),function(){l()}}));createInterpreter(3,"hook",(function(e,t,n){var r,o,a,i=this,u=this.$1,c=this.$2,l=this.$3,s=noop,f=noop;function Hook$done(){f(a)}function Hook$rec(t){e(wrapException(t,i))}function Hook$dispose(){var e,t,n;try{e=c(o)}catch(a){return Hook$rec(a)}if(!isFuture(e))return Hook$rec((t=c,n=o,invalidFuture("hook() expects the return value from the first function it's given",e,"\n From calling: "+b()(t)+"\n With: "+b()(n))));r=Hook$cancelDisposal,e._interpret(Hook$rec,Hook$disposalRejected,Hook$done)}function Hook$cancelConsumption(){s(),Hook$dispose(),Hook$cancelDisposal()}function Hook$cancelDisposal(){f=noop}function Hook$disposalRejected(e){Hook$rec(new Error("The disposal Future rejected with "+b()(e)))}function Hook$consumptionException(e){f=Hook$rec,a=e,Hook$dispose()}function Hook$consumptionRejected(e){f=t,a=e,Hook$dispose()}function Hook$consumptionResolved(e){f=n,a=e,Hook$dispose()}var p=u._interpret(Hook$rec,t,(function(e){var t;o=e;try{t=l(o)}catch(n){return Hook$consumptionException(n)}if(!isFuture(t))return Hook$consumptionException(function(e,t,n){return invalidFuture("hook() expects the return value from the second function it's given",e,"\n From calling: "+b()(t)+"\n With: "+b()(n))}(t,l,o));r=Hook$cancelConsumption,s=t._interpret(Hook$consumptionException,Hook$consumptionRejected,Hook$consumptionResolved)}));return r=r||p,function(){e=raise,r()}}));createTransformation(1,"lastly",{rejected:function(e){return this.$1._transform(new I(this.context,new $(this.context,e)))},resolved:function(e){return this.$1._transform(new I(this.context,new T(this.context,e)))}});var G=createTransformation(1,"mapRej",{rejected:function(e){return new $(this.context,call(this.$1,e))}});function map_rej_mapRej(e){var t=application1(map_rej_mapRej,x,arguments);return function mapRej(n){var r=application(2,mapRej,k,arguments,t);return n._transform(new G(r,e))}}var Q={pred:isFunctor,error:invalidArgumentOf("have Functor implemented")};function map_map(e){var t=application1(map_map,x,arguments);return function map(n){var r=application(2,map,Q,arguments,t);return isFuture(n)?n._transform(new O(r,e)):n[s](e)}}createInterpreter(1,"node",(function(e,t,n){var r=!1,cont=function(){r=!0};try{call(this.$1,(function(e,o){cont=e?function(){r=!1,t(e)}:function(){r=!1,n(o)},r&&cont()}))}catch(o){return e(wrapException(o,this)),r=!1,noop}return cont(),function(){r=!1}}));var J=createParallelTransformation("pap",earlyCrash,earlyReject,noop,{resolved:function(e){if(isFunction(e))return this.$1._transform(new O(this.context,e));throw typeError("pap expects the second Future to resolve to a Function\n Actual: "+b()(e))}});var Y={pred:function(e){if(t=e,!Array.isArray(t))return!1;for(var t,n=0;n0)&&!(r=a.next()).done;)i.push(r.value)}catch(u){o={error:u}}finally{try{r&&!r.done&&(n=a.return)&&n.call(a)}finally{if(o)throw o.error}}return i},__spread=function(){for(var e=[],t=0;t=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};function isHTMLElement(e){return e instanceof HTMLElement}function isHTMLOrSVGElement(e){return e instanceof HTMLElement||e instanceof SVGElement}var defaultNaN=function(e){return function(t){return isNaN(t)?e:t}},getScrolledElements=function(e){return Array.from(e.querySelectorAll("*")).filter((function(e){return 0!==e.scrollTop||0!==e.scrollLeft})).filter(isHTMLElement)},clone_cloneElementScroll=function(e,t){var n,r,o=t.dataset.picocloneid;if(void 0!==o){var a=e.parentWindow.document.querySelector('[data-picocloneid = "'+o+'"]');if(a instanceof HTMLElement){t.style.position="absolute"===t.style.position?"absolute":"relative",t.style.overflow="hidden",t.style.width=a.offsetWidth+"px",t.style.height=a.offsetHeight+"px";var i=Array.from(t.children).filter(isHTMLOrSVGElement),u=Array.from(a.children).filter(isHTMLOrSVGElement);if(i.length===u.length){var c,l=se(u,i),s=a.scrollTop,f=a.scrollLeft;try{for(var p=__values(l),d=p.next();!d.done;d=p.next()){var h=__read(d.value,2),v=h[0],y=h[1],g=e.parentWindow.window.getComputedStyle(v);if("relative"!==e.parentWindow.window.getComputedStyle(a).position||"absolute"!==g.position){if(y.style.position="absolute",y.style.width=g.width,y.style.height=g.height,"undefined"!==typeof c){var m=c.getBoundingClientRect();s-=v.getBoundingClientRect().top-m.top,f-=v.getBoundingClientRect().left-m.left}y.style.top=-s+"px",y.style.left=-f+"px",c=v}else y.style.top=defaultNaN(0)(parseInt(g.top))-a.scrollTop+"px",y.style.left=defaultNaN(0)(parseInt(g.left))-a.scrollLeft+"px",y.style.zIndex=(defaultNaN(0)(parseInt(g.zIndex))+1).toString()}}catch(b){n={error:b}}finally{try{d&&!d.done&&(r=p.return)&&r.call(p)}finally{if(n)throw n.error}}}else console.warn("Scrolled element has a different amount of children than its clone, skipping scroll emulation",a)}else console.warn("Failed to find original element for scrolled element",t)}else console.warn("Failed to get clone id from cloned scrolled element",t)},cloneBody=function(e){return function(t){!function(e){var t,n;try{for(var r=__values(__spread(e.querySelectorAll("input"),e.querySelectorAll("textarea"),e.querySelectorAll("canvas"),getScrolledElements(e))),o=r.next();!o.done;o=r.next()){o.value.dataset.picocloneid=Math.random().toString(32).substring(2)}}catch(a){t={error:a}}finally{try{o&&!o.done&&(n=r.return)&&n.call(r)}finally{if(t)throw t.error}}}(t.parentWindow.html),t.tree.html.className=t.parentWindow.html.className,t.tree.html.style.cssText=t.parentWindow.html.style.cssText,t.tree.svg.style.fontSize=t.parentWindow.window.getComputedStyle(t.parentWindow.html).fontSize;var n,r=t.parentWindow.body.cloneNode(!0);return(n=e,function(e){e instanceof Element&&n.forEach((function(t){var n,r;try{for(var o=__values(e.querySelectorAll(t)),a=o.next();!a.done;a=o.next())a.value.remove()}catch(i){n={error:i}}finally{try{a&&!a.done&&(r=o.return)&&r.call(o)}finally{if(n)throw n.error}}}))})(r),t.tree.html.appendChild(r),function(e){var t,n,_loop_2=function(t){var n=t.dataset.picocloneid;if(void 0===n)return console.warn("Failed to get clone id from cloned input or textarea",t),"continue";var r=__spread(e.parentWindow.document.querySelectorAll("input"),e.parentWindow.document.querySelectorAll("textarea")).find((function(e){return e.dataset.picocloneid===n}));if(void 0===r)return console.warn("Failed to find original input or textarea for cloned input or textarea",t),"continue";if(r instanceof HTMLInputElement&&t instanceof HTMLInputElement)"checkbox"!==t.type&&"radio"!==t.type||!r.checked?-1!==["number","text","range"].indexOf(t.type)&&t.setAttribute("value",r.value):t.setAttribute("checked","checked");else if(r instanceof HTMLTextAreaElement&&t instanceof HTMLTextAreaElement){var o=e.parentWindow.document.createTextNode(r.value);t.innerHTML="",t.appendChild(o)}};try{for(var r=__values(__spread(e.tree.html.querySelectorAll("input"),e.tree.html.querySelectorAll("textarea"))),o=r.next();!o.done;o=r.next()){_loop_2(o.value)}}catch(a){t={error:a}}finally{try{o&&!o.done&&(n=r.return)&&n.call(r)}finally{if(t)throw t.error}}}(t),function(e){var t,n,_loop_1=function(t){var n=t.dataset.picocloneid;if(void 0===n)return console.warn("Failed to get clone id from cloned canvas",t),"continue";var r=Array.from(e.parentWindow.document.querySelectorAll("canvas")).find((function(e){return e.dataset.picocloneid===n}));if(void 0===r)return console.warn("Failed to find original canvas for cloned canvas",t),"continue";var o=e.parentWindow.document.createElement("img");o.style.cssText=e.parentWindow.window.getComputedStyle(r).cssText,o.src=r.toDataURL();var a=t.parentNode;if(!a)return console.warn("Failed to get parent of node",t),"continue";a.replaceChild(o,t)};try{for(var r=__values(e.tree.html.querySelectorAll("canvas")),o=r.next();!o.done;o=r.next()){_loop_1(o.value)}}catch(a){t={error:a}}finally{try{o&&!o.done&&(n=r.return)&&n.call(r)}finally{if(t)throw t.error}}}(t),function(e){var t,n;try{for(var r=__values(getScrolledElements(e.parentWindow.html)),o=r.next();!o.done;o=r.next()){var a=o.value,i=a.dataset.picocloneid;if(void 0!==i){var u=e.tree.html.querySelector('[data-picocloneid = "'+i+'"]');u instanceof HTMLElement?clone_cloneElementScroll(e,u):console.warn("Failed to find cloned element for original scrolled element",a)}else console.warn("Failed to get clone id from scrolled element",a)}}catch(c){t={error:c}}finally{try{o&&!o.done&&(n=r.return)&&n.call(r)}finally{if(t)throw t.error}}e.tree.html.style.transform+=" translate(-"+e.parentWindow.html.scrollLeft+"px, -"+e.parentWindow.html.scrollTop+"px)"}(t),r instanceof HTMLBodyElement&&(t.tree.html.style.margin="0"),function(e){var t,n;try{for(var r=__values(e.querySelectorAll("[data-picocloneid]")),o=r.next();!o.done;o=r.next()){var a=o.value;a instanceof HTMLElement?a.removeAttribute("data-picocloneid"):console.warn("Element that had a pico clone id attached was not an HTMLElement during cleanup",a)}}catch(i){t={error:i}}finally{try{o&&!o.done&&(n=r.return)&&n.call(r)}finally{if(t)throw t.error}}}(t.parentWindow.html),t}},element_read=function(e,t){var n="function"===typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,o,a=n.call(e),i=[];try{for(;(void 0===t||t-- >0)&&!(r=a.next()).done;)i.push(r.value)}catch(u){o={error:u}}finally{try{r&&!r.done&&(n=a.return)&&n.call(a)}finally{if(o)throw o.error}}return i},createElement=function(e){return function(t,n){void 0===n&&(n={});var r=e.createElement(t);return Object.assign(r,n),r}},err=function(e){return{reason:e,error:new Error(e)}},container_createTree=function(e){var t,n=e.window,r=n.innerWidth,o=n.innerHeight,a=createElement(e.document),i=(t=e.document,function(e,n){void 0===n&&(n={});var r=t.createElementNS("http://www.w3.org/2000/svg",e);return Object.entries(n).forEach((function(e){var t=element_read(e,2),n=t[0],o=t[1];return r.setAttribute(n,o)})),r}),u=a("iframe",{width:r+"px",height:o+"px"}),c=i("svg",{width:r+"px",height:o+"px"});c.style.backgroundColor=function(e,t){var n=e.getComputedStyle(t).backgroundColor;return"transparent"===n||"rgba(0, 0, 0, 0)"===n?"white":n}(e.window,e.body);var l=i("foreignObject",{x:"0",y:"0",width:r+"px",height:o+"px"}),s=a("html");s.setAttribute("xmlns","http://www.w3.org/1999/xhtml");var f=a("head");return s.appendChild(f),s.appendChild(f),l.appendChild(s),c.appendChild(l),u.appendChild(c),{html:s,head:f,svg:c}},container_createContainer=function(e){return ie(function(e){var t=e.document,n=t.head,r=t.body,o=t.querySelector("html");return o instanceof HTMLHtmlElement?r instanceof HTMLBodyElement?Either_right({window:e,document:t,html:o,head:n,body:r}):Either_left(err("Failed to get HTMLBodyElement")):Either_left(err("Failed to get HTMLHtmlElement"))}(e),Either_map((function(e){return{parentWindow:e,tree:container_createTree(e)}})))},he=Symbol(),error_stack_empty=function(e){return{_tag:he,errors:[],value:e}},fromError=function(e){return function(t){return fromErrors(e)([t])}},fromErrors=function(e){return function(t){return{_tag:he,errors:t,value:e}}},error_stack_value=function(e){return e.value},error_stack_errors=function(e){return e.errors},noop_noop=function(){},serializeSVGToDataURL=function(e){return"data:image/svg+xml;charset=utf-8,"+window.encodeURIComponent((new XMLSerializer).serializeToString(e))},export_canvasToPngBlob=function(e){return Future((function(t,n){try{e.toBlob((function(e){if(null===e)return t(err("Failed to get blob from canvas (the returned blob is null)"));n(e)}),"image/png",1)}catch(r){t(err("Failed to get blob from canvas (the canvas is most likely tainted)"))}return noop_noop}))},export_canvasToPngDataURL=function(e){try{return Either_right(e.toDataURL("image/png",1))}catch(t){return Either_left(err("Failed to get data url from canvas (the canvas is most likely tainted)"))}},export_containerToCanvas=function(e){var t,n=e.parentWindow.window.devicePixelRatio||1,r=createElement(e.parentWindow.document)("canvas",{width:e.parentWindow.window.innerWidth*n,height:e.parentWindow.window.innerHeight*n}),o=r.getContext("2d");return null===o?future_reject(err("Failed to obtain 2d canvas context")):(t=2e3,function(e){return race_race(Future((function(e){var n=setTimeout((function(){return e(err("Timed out waiting for promise ("+t+"ms)"))}),t);return function(){return clearTimeout(n)}})))(e)})(Future((function(t,a){var i=new Image;return i.onerror=function(){return t(err("Failed to load exported onto canvas"))},i.onload=function(){o.setTransform(n,0,0,n,0,0),o.drawImage(i,0,0),a(r)},i.src=serializeSVGToDataURL(e.tree.svg),i.remove})))},export_dataURLToBlob=function(e){return Future((function(t,n){return fetch(e).then((function(e){return e.blob()})).then(n).catch((function(){return t(err("Failed to convert dataURL to blob ("+e+")"))})),noop_noop}))},export_createObjectURL=function(e){try{return Either_right(URL.createObjectURL(e))}catch(t){return Either_left(err("Failed to create result object URL"))}},download_download=function(e){return Future((function(t,n){return fetch(e,{cache:"force-cache"}).then((function(r){r.ok?n(r):t({_tag:"HTTPError",url:e,status:r.status,statusText:r.statusText})})).catch((function(n){t({_tag:"NetworkError",url:e})})),noop_noop}))},download_responseToText=function(e){return Future((function(t,n){return e.text().then(n).catch((function(n){return t({error:n,reason:"Failed to convert response to text ("+e.url+")"})})),noop_noop}))},download_responseToBlob=function(e){return Future((function(t,n){return e.blob().then(n).catch((function(n){return t({error:n,reason:"Failed to convert response to text ("+e.url+")"})})),noop_noop}))},download_blobToDataURL=function(e){return Future((function(t,n){var r=new FileReader;return r.onloadend=function(){return"string"===typeof r.result?n(r.result):t(err("Got invalid type when reading blob ("+typeof r.result+")"))},r.onerror=function(){return t(err("Failed to load data url for blob"))},r.readAsDataURL(e),r.abort}))},downloadErrorToDetailedError=function(e){var t="Failed to download resource at "+e.url+" "+("NetworkError"===e._tag?"(Network Error, most likely a CORS issue)":"(Status: "+e.status+" - "+e.statusText+")");return{reason:t,error:new Error(t)}},inline_read=function(e,t){var n="function"===typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,o,a=n.call(e),i=[];try{for(;(void 0===t||t-- >0)&&!(r=a.next()).done;)i.push(r.value)}catch(u){o={error:u}}finally{try{r&&!r.done&&(n=a.return)&&n.call(a)}finally{if(o)throw o.error}}return i},inline_values=function(e){var t="function"===typeof Symbol&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&"number"===typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},ve=function parallel_parallel(e){var t=application1(parallel_parallel,C,arguments);return function parallel(n){var r=application(2,parallel,Y,arguments,t);return 0===n.length?te:new ee(r,e,n)}}(1/0);function isCSSStyleSheet(e){return e instanceof CSSStyleSheet}var inline_processStyleSheetText=function(e){return function(t){var n=document.createElement("style");n.appendChild(document.createTextNode(t)),document.implementation.createHTMLDocument().head.appendChild(n);var r=n.sheet;if(!(r instanceof CSSStyleSheet)){var o="Failed to initialize CSSStyleSheet";return future_reject({reason:o,error:new Error(o)})}return inline_inlineURLsFromCSSRuleList(r.cssRules,e)}},ye=/url\(['"]?(.+?)['"]?\)/,inline_inlineStyleSheetTextURLs=function(e){return function replaceAllAsync(e,t){return function(n){if(e.global||e.sticky)throw new TypeError("Only non-global and non-sticky (without the /g or /y flags) regex' can be used");var r=e.exec(n);if(null===r)return future_resolve(error_stack_empty(n));var o=r[0],a=r[1];if("string"!==typeof r[1])return future_resolve(error_stack_empty(n));var i=n.substring(0,r.index),u=ie(t(a),coalesce_coalesce(fromError(a))(error_stack_empty)),c=replaceAllAsync(e,t)(n.substring(r.index+o.length));return ie(both_both(u)(c),map_map((function(e){var t=inline_read(e,2),n=t[0],r=t[1];return fromErrors(i+n.value+r.value)(Array_flatten([n.errors,r.errors]))})))}}(ye,(function(t){if(0===t.indexOf("data:"))return future_resolve('url("'+t+'")');var n=new URL(t,e).toString();return ie(download_download(n),map_rej_mapRej(downloadErrorToDetailedError),chain_chain(download_responseToBlob),chain_chain(download_blobToDataURL),map_map((function(e){return"url("+e+")"})))}))},inline_inlineURLsFromCSSRuleList=function(e,t){return ie(Array.from(e),fe(function(e){return function(t){if(t instanceof CSSStyleRule){return ie(["background","backgroundImage","listStyle","listStyleImage","content","cursor","border","borderImage","borderImageSource","mask","maskImage"].map((function(n){var r=t.style[n];return""===r||void 0===r?future_resolve([]):ie(inline_inlineStyleSheetTextURLs(e)(r),map_map((function(e){var r=e.errors,o=e.value;return t.style[n]=o,r})))})),ve,map_map(Array_flatten),map_map((function(e){return fromErrors(t.cssText)(e)})))}return t instanceof CSSFontFaceRule?inline_inlineStyleSheetTextURLs(e)(t.cssText):t instanceof CSSMediaRule?window.matchMedia(t.media.mediaText).matches?inline_inlineURLsFromCSSRuleList(t.cssRules,e):future_resolve(error_stack_empty("")):t instanceof CSSImportRule?ie(download_download(t.href),map_rej_mapRej(downloadErrorToDetailedError),chain_chain(download_responseToText),chain_chain(inline_processStyleSheetText(t.href))):(CSSPageRule,future_resolve(error_stack_empty(t.cssText)))}}(t)),fe(coalesce_coalesce((function(e){return fromErrors("")([e])}))(identity)),ve,map_map((n=function(e,t){return e+"\n"+t},r="",function(e){return{_tag:he,errors:ie(e,fe((function(e){return e.errors})),Array_flatten),value:ie(e,fe((function(e){return e.value})),de(r,n))}})));var n,r},inline_extractStylesFromStyleSheets=function(e,t){return ie(Array.from(e),pe(isCSSStyleSheet),fe(function(e){return function(t){return ie(t.href?ie(download_download(t.href),map_rej_mapRej(downloadErrorToDetailedError),chain_chain(download_responseToText)):future_resolve(Array.from(t.cssRules).map((function(e){return e.cssText})).join("\n")),chain_chain(inline_processStyleSheetText(t.href||e)))}}(t)),fe(coalesce_coalesce(fromError(""))(identity)),ve)},inline_inlineImages=function(e){return ie(Array.from(e.tree.html.querySelectorAll("img")),fe((function(e){return ie(download_download(e.src),map_rej_mapRej(downloadErrorToDetailedError),chain_chain(download_responseToBlob),chain_chain(download_blobToDataURL),map_map((function(t){return e.src=t,t})),coalesce_coalesce(Either_left)(Either_right))})),ve,map_map((t=e,function(e){return{_tag:he,errors:Array_lefts(e),value:t}})));var t},inline_inlineExternalResources=function(e){return ie(inline_inlineImages(e),chain_chain((function(e){return ie(function(e){return ie(inline_extractStylesFromStyleSheets(e.parentWindow.document.styleSheets,e.parentWindow.window.location.href),map_map((function(t){var n,r;try{for(var o=inline_values(ie(t,fe(error_stack_value))),a=o.next();!a.done;a=o.next()){var i=a.value,u=e.parentWindow.document.createElement("style");u.appendChild(e.parentWindow.document.createTextNode(i)),e.tree.head.appendChild(u)}}catch(l){n={error:l}}finally{try{a&&!a.done&&(r=o.return)&&r.call(o)}finally{if(n)throw n.error}}var c=ie(t,fe(error_stack_errors),Array_flatten);return fromErrors(e)(c)})))}(error_stack_value(e)),map_map((function(t){return fromErrors(error_stack_value(t))(Array_flatten([error_stack_errors(e),error_stack_errors(t)]))})))})))},ge={ignore:[]},dist_generateExport=function(e,t){return ie(container_createContainer(e),le,map_map(cloneBody(t.ignore)),chain_chain(inline_inlineExternalResources))},dist_promisifyExport=function(e){return function(t,n){return void 0===n&&(n={}),new Promise((function(r,o){return ie(e(t,(a=n,Object.assign({},ge,a))),fork_fork((function(e){return o(e.error)}))(r));var a}))}},me=(dist_promisifyExport((function(e,t){return ie(dist_generateExport(e,t),chain_chain((function(e){var t=e.value,n=e.errors;return ie(function(e){return ie(export_containerToCanvas(e),chain_chain(export_canvasToPngBlob))}(t),chain_chain(flow(export_createObjectURL,le)),map_map((function(e){return fromErrors(e)(n)})))})))})),dist_promisifyExport((function(e,t){return ie(dist_generateExport(e,t),chain_chain((function(e){var t=e.value,n=e.errors;return ie(function(e){return ie(serializeSVGToDataURL(e.tree.svg),export_dataURLToBlob)}(t),chain_chain(flow(export_createObjectURL,le)),map_map((function(e){return fromErrors(e)(n)})))})))})),dist_promisifyExport((function(e,t){return ie(dist_generateExport(e,t),chain_chain((function(e){var t=e.value,n=e.errors;return ie(function(e){return ie(export_containerToCanvas(e),chain_chain(flow(export_canvasToPngDataURL,le)))}(t),map_map((function(e){return fromErrors(e)(n)})))})))})));function _defineProperties(e,t){for(var n=0;n\n \n \n ',document.body.appendChild(t);var n=document.querySelector(".bugbattle--feedback-send-button");document.querySelector(".bugbattle--feedback-dialog-header-button-cancel").onclick=function(){e.hide()},n.onclick=function(){document.querySelector(".bugbattle--feedback-dialog-container").remove(),e.createBugReportingDialog()}}},{key:"createBugReportingDialog",value:function(){var e=this,t=document.createElement("div");t.className="bugbattle--feedback-dialog-container",t.setAttribute("data-ignore-bb","true"),t.innerHTML=''),document.body.appendChild(t);var n=document.querySelector(".bugbattle--feedback-inputgroup--privacy-policy"),r=document.querySelector(".bugbattle--feedback-inputgroup--privacy-policy-label"),o=document.querySelector(".bugbattle--feedback-inputgroup--privacy-policy input");this.privacyPolicyCheckEnabled?(n.style.display="block",document.querySelector("#bugbattle-privacy-policy-link").href=this.privacyPolicyUrl):n.style.display="none",r.onclick=function(){o.checked=!o.checked};var a=document.querySelector(".bugbattle--feedback-poweredbycontainer");this.poweredByHidden?a.style.display="none":a.onclick=function(){window.open("https://www.bugbattle.io/","_blank")};var i=document.querySelector(".bugbattle--feedback-send-button"),u=document.querySelector(".bugbattle--feedback-dialog-header-button-cancel"),c=document.querySelector(".bugbattle--feedback-email"),l=document.querySelector(".bugbattle--feedback-description");l.oninput=function(){l.style.height="inherit",l.style.height=l.scrollHeight+"px"},u.onclick=function(){e.hide()},c.value=this.email,i.onclick=function(){if(e.email=c.value,e.email&&0!==e.email.length)if(!e.privacyPolicyCheckEnabled||o.checked){if(e.description=l.value,localStorage.setItem("bugbattle-sender-email",e.email),e.toggleLoading(!0),!e.sdkKey)return alert("BUGBATTLE: Please provide a valid API key!");e.preScreenshotCleanup(),window.scrollTo(e.snapshotPosition.x,e.snapshotPosition.y),me(window,{ignore:['[data-ignore-bb~="true"]']}).then((function(t){t&&t.value?(e.screenshot=t.value,e.prepareScreenshot()):e.showError()})).catch((function(t){e.showError()}))}else alert("Please read and accept the privacy policy.");else alert("Please provide an email address.")}}},{key:"preScreenshotCleanup",value:function(){document.body.querySelectorAll("img, svg, video").forEach((function(e){e.setAttribute("width",e.getBoundingClientRect().width),e.setAttribute("height",e.getBoundingClientRect().height)}))}},{key:"hide",value:function(){var e=document.querySelector(".bugbattle-screenshot-editor-container");e&&e.remove();var t=document.querySelector(".bugbattle--feedback-dialog-container");t&&t.remove();var n=document.querySelector(".bugbattle--feedback-button");n&&(n.style.display="block"),this.bugReportingRunning=!1,this.crashDetected=!1,this.enableScroll()}},{key:"init",value:function(){this.overwriteConsoleLog(),this.startCrashDetection();var e=this;"complete"===document.readyState||"loaded"===document.readyState||"interactive"===document.readyState?e.checkForInitType():document.addEventListener("DOMContentLoaded",(function(t){e.checkForInitType()}))}},{key:"checkForInitType",value:function(){this.activation===BugBattle.FEEDBACK_BUTTON&&this.injectFeedbackButton()}},{key:"injectFeedbackButton",value:function(){var e=document.createElement("div");e.className="bugbattle--feedback-button",e.innerHTML='',e.onclick=function(){BugBattle.startBugReporting()},document.body.appendChild(e)}},{key:"toggleLoading",value:function(e){var t=document.querySelector(".bugbattle--feedback-dialog-header"),n=document.querySelector(".bugbattle--feedback-dialog-body"),r=document.querySelector(".bugbattle--feedback-dialog-loading");e?(n.style.display="none",r.style.display="block",t.style.display="none"):(n.style.display="block",r.style.display="none",t.style.display="block")}},{key:"showSuccessMessage",value:function(){var e=document.querySelector(".bugbattle--feedback-dialog-success"),t=document.querySelector(".bugbattle--feedback-dialog-body"),n=document.querySelector(".bugbattle--feedback-dialog-loading");t.style.display="none",n.style.display="none",e.style.display="flex"}},{key:"dataURItoBlob",value:function(e){for(var t=atob(e.split(",")[1]),n=e.split(",")[0].split(":")[1].split(";")[0],r=new ArrayBuffer(t.length),o=new Uint8Array(r),a=0;a0||i.offsetLeft)&&o.strokeRect(i.offsetLeft*n,i.offsetTop*n,i.offsetWidth*n,i.offsetHeight*n)),e.uploadScreenshot(r.toDataURL("image/jpeg",.5)),e.screenshot=null},t.onerror=function(){e.hide()},t.src=this.screenshot}},{key:"uploadScreenshot",value:function(e){var t=this,n=new XMLHttpRequest;n.open("POST",this.apiUrl+"/uploads/sdk"),n.setRequestHeader("Api-Token",this.sdkKey),n.onreadystatechange=function(e){if(n.readyState===XMLHttpRequest.DONE)try{var r=JSON.parse(n.responseText);r&&r.fileUrl?(t.screenshotURL=r.fileUrl,t.sendBugReportToServer()):t.showError()}catch(e){t.showError()}};document.querySelector(".bugbattle-screenshot-editor-canvas");var r=this.dataURItoBlob(e),o=new FormData;o.append("file",r,"screenshot.jpg"),n.send(o)}},{key:"sendBugReportToServer",value:function(){var e=this,t=new XMLHttpRequest;t.open("POST",this.apiUrl+"/bugs"),t.setRequestHeader("Content-Type","application/json;charset=UTF-8"),t.setRequestHeader("Api-Token",this.sdkKey),t.onreadystatechange=function(n){t.readyState!==XMLHttpRequest.DONE||200!==t.status&&201!==t.status||(e.showSuccessMessage(),setTimeout((function(){e.hide()}),1500))};var n={reportedBy:this.email,description:this.description,priority:this.severity,screenshotUrl:this.screenshotURL,customData:this.customData,metaData:this.getMetaData(),consoleLog:this.logArray,type:this.crashDetected?"CRASHREPORT":"BUG"};t.send(JSON.stringify(n))}},{key:"showError",value:function(){this.toggleLoading(!1)}},{key:"getMetaData",value:function(){var e,t,n,r=navigator.userAgent,o=navigator.appName,a=""+parseFloat(navigator.appVersion),i=parseInt(navigator.appVersion,10);-1!==(t=r.indexOf("Opera"))?(o="Opera",a=r.substring(t+6),-1!==(t=r.indexOf("Version"))&&(a=r.substring(t+8))):-1!==(t=r.indexOf("MSIE"))?(o="Microsoft Internet Explorer",a=r.substring(t+5)):-1!==(t=r.indexOf("Chrome"))?(o="Chrome",a=r.substring(t+7)):-1!==(t=r.indexOf("Safari"))?(o="Safari",a=r.substring(t+7),-1!==(t=r.indexOf("Version"))&&(a=r.substring(t+8))):-1!==(t=r.indexOf("Firefox"))?(o="Firefox",a=r.substring(t+8)):(e=r.lastIndexOf(" ")+1)<(t=r.lastIndexOf("/"))&&(o=r.substring(e,t),a=r.substring(t+1),o.toLowerCase()===o.toUpperCase()&&(o=navigator.appName)),-1!==(n=a.indexOf(";"))&&(a=a.substring(0,n)),-1!==(n=a.indexOf(" "))&&(a=a.substring(0,n)),i=parseInt(""+a,10),isNaN(i)&&(a=""+parseFloat(navigator.appVersion),i=parseInt(navigator.appVersion,10));var u="Unknown OS";-1!==navigator.appVersion.indexOf("Win")&&(u="Windows"),-1!==navigator.appVersion.indexOf("Mac")&&(u="MacOS"),-1!==navigator.appVersion.indexOf("X11")&&(u="UNIX"),-1!==navigator.appVersion.indexOf("Linux")&&(u="Linux"),-1!==navigator.appVersion.indexOf("iPad")&&(u="iPad"),-1!==navigator.appVersion.indexOf("iPhone")&&(u="iPhone"),-1!==navigator.appVersion.indexOf("Android")&&(u="Android");var c=((new Date).getTime()-this.sessionStart.getTime())/1e3;return{browserName:o+"("+a+")",userAgent:r,browser:navigator.appName,systemName:u,buildVersionNumber:this.appBuildNumber,releaseVersionNumber:this.appVersionCode,sessionDuration:c,devicePixelRatio:window.devicePixelRatio,screenWidth:window.screen.width,screenHeight:window.screen.height,innerWidth:window.innerWidth,innerHeight:window.innerHeight,currentUrl:window.location.href,language:navigator.language||navigator.userLanguage}}},{key:"showBugReportEditor",value:function(){var e=this,t=document.createElement("div");t.className="bugbattle-screenshot-editor-container",t.setAttribute("data-ignore-bb","true"),t.innerHTML="\n
\n
\n
\n
\n
Click or drag to create a comment
\n
\n ",document.body.appendChild(t);var n=document.querySelector(".bugbattle-screenshot-editor-borderlayer");n&&(n.style.height="".concat(window.innerHeight,"px"));var r=!1,o=-1,a=-1;function setStartPoint(e,t){if(!r){var n=document.querySelector(".bugbattle-screenshot-editor-dot");n.style.left=e-n.offsetWidth/2+"px",n.style.top=t-n.offsetHeight/2+"px"}}function setMouseMove(e,t){var n=document.querySelector(".bugbattle-screenshot-editor-drag-info");if(n.style.left="".concat(e+20,"px"),n.style.top="".concat(t-n.offsetHeight/2,"px"),n.style.right=null,!(r||o<0)){var i=e-o,u=t-a,c=document.querySelector(".bugbattle-screenshot-editor-rectangle"),l=i<0?o+i:o,s=u<0?a+u:a,f=u<0?-1*u:u,p=i<0?-1*i:i;c.style.left="".concat(l,"px"),c.style.top="".concat(s,"px"),c.style.width="".concat(p,"px"),c.style.height="".concat(f,"px")}}function mouseUpEventHandler(t){document.querySelector(".bugbattle-screenshot-editor-drag-info").style.display="none",r=!0,e.createBugReportingDialog()}t.addEventListener("mouseup",mouseUpEventHandler),t.addEventListener("mousemove",(function(e){setMouseMove(e.pageX-document.documentElement.scrollLeft,e.pageY-document.documentElement.scrollTop)})),t.addEventListener("mousedown",(function(e){o=e.pageX-document.documentElement.scrollLeft,a=e.pageY-document.documentElement.scrollTop,setStartPoint(o,a)})),t.addEventListener("touchstart",(function(e){o=e.touches[0].pageX-document.documentElement.scrollLeft,a=e.touches[0].pageY-document.documentElement.scrollTop,setStartPoint(o,a)})),t.addEventListener("touchmove",(function(e){setMouseMove(e.touches[0].pageX-document.documentElement.scrollLeft,e.touches[0].pageY-document.documentElement.scrollTop),e.preventDefault()})),t.addEventListener("touchend",mouseUpEventHandler)}}],[{key:"enablePoweredByBugbattle",value:function(e){this.instance.poweredByHidden=e}},{key:"enablePrivacyPolicy",value:function(e){this.instance.privacyPolicyCheckEnabled=e}},{key:"setPrivacyPolicyUrl",value:function(e){this.instance.privacyPolicyUrl=e}},{key:"enableCrashDetector",value:function(e){this.instance.crashDetectorEnabled=e}},{key:"setCustomerEmail",value:function(e){this.instance.email=e}},{key:"setAppVersionCode",value:function(e){this.instance.appVersionCode=e}},{key:"setAppBuildNumber",value:function(e){this.instance.appBuildNumber=e}},{key:"setApiUrl",value:function(e){this.instance.apiUrl=e}},{key:"attachCustomData",value:function(e){this.instance.customData=e}},{key:"setMainColor",value:function(e){var t="\n .bugbattle--feedback-button {\n background-color: ".concat(e,";\n }\n .bugbattle--feedback-dialog-header-button {\n color: ").concat(e,";\n }\n .bugbattle-screenshot-editor-borderlayer {\n border-color: ").concat(e,";\n }\n .bugbattle-screenshot-editor-dot {\n background-color: ").concat(e,";\n }\n .bugbattle-screenshot-editor-rectangle {\n border-color: ").concat(e,";\n }\n .bugbattle--feedback-send-button {\n background-color: ").concat(e,";\n }\n .bugbattle--feedback-inputgroup--privacy-policy a {\n color: ").concat(e,";\n }\n .bugbattle-screenshot-editor-drag-info {\n background-color: ").concat(e,";\n }\n .bugbattle-double-bounce1,\n .bugbattle-double-bounce2 {\n background-color: ").concat(e,";\n }\n ");this.instance.mainColor=e;var n=document.createElement("style");n.innerHTML=t,document.body.appendChild(n)}},{key:"startBugReporting",value:function(){this.instance.disableScroll();var e=document.querySelector(".bugbattle--feedback-button");e&&(e.style.display="none"),this.instance.snapshotPosition={x:window.scrollX,y:window.scrollY},this.instance.crashDetected?this.instance.askForCrashReport():this.instance.showBugReportEditor()}},{key:"disableConsoleLogOverwrite",value:function(){window.console=this.instance.originalConsoleLog}}]),BugBattle}();_defineProperty(be,"FEEDBACK_BUTTON","FEEDBACK_BUTTON"),_defineProperty(be,"NONE","NONE"),_defineProperty(be,"instance",void 0);var we=be;t.default=we}])})); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/build/index.js.map b/build/index.js.map new file mode 100644 index 00000000..c7d6a346 --- /dev/null +++ b/build/index.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../webpack/universalModuleDefinition","../../webpack/bootstrap","../../node_modules/sanctuary-type-identifiers/index.js","../../node_modules/webpack/buildin/amd-options.js","../../node_modules/sanctuary-show/index.js","../../node_modules/fluture/src/internal/const.js","../../node_modules/fluture/src/internal/list.js","../../node_modules/fluture/src/internal/debug.js","../../node_modules/fluture/src/internal/utils.js","../../node_modules/fluture/src/internal/error.js","../../node_modules/fluture/src/internal/predicates.js","../../node_modules/fluture/src/internal/iteration.js","../../node_modules/fluture/src/future.js","../../node_modules/fluture/src/after.js","../../node_modules/fluture/src/alt.js","../../node_modules/fluture/src/and.js","../../node_modules/fluture/src/ap.js","../../node_modules/fluture/src/encase-p.js","../../node_modules/fluture/src/attempt-p.js","../../node_modules/fluture/src/encase.js","../../node_modules/fluture/src/attempt.js","../../node_modules/fluture/src/bimap.js","../../node_modules/fluture/src/bichain.js","../../node_modules/fluture/src/internal/parallel.js","../../node_modules/fluture/src/both.js","../../node_modules/fluture/src/cache.js","../../node_modules/fluture/src/chain-rej.js","../../node_modules/fluture/src/chain.js","../../node_modules/fluture/src/coalesce.js","../../node_modules/fluture/src/fork.js","../../node_modules/fluture/src/go.js","../../node_modules/fluture/src/internal/timing.js","../../node_modules/fluture/src/hook.js","../../node_modules/fluture/src/lastly.js","../../node_modules/fluture/src/map-rej.js","../../node_modules/fluture/src/map.js","../../node_modules/fluture/src/node.js","../../node_modules/fluture/src/pap.js","../../node_modules/fluture/src/parallel.js","../../node_modules/fluture/src/race.js","../../node_modules/fluture/src/par.js","../../node_modules/fluture/src/reject-after.js","../../node_modules/fluture/src/seq.js","../../node_modules/fluture/src/swap.js","../../node_modules/fp-ts/es6/function.js","../../node_modules/fp-ts/es6/Either.js","../../node_modules/fp-ts/es6/pipeable.js","../../node_modules/fp-ts-fluture/es6/Future.js","../../node_modules/fp-ts/es6/ReadonlyArray.js","../../node_modules/fp-ts/es6/Array.js","../../node_modules/@gripeless/pico/dist/clone.js","../../node_modules/@gripeless/pico/dist/element.js","../../node_modules/@gripeless/pico/dist/error.js","../../node_modules/@gripeless/pico/dist/container.js","../../node_modules/@gripeless/pico/dist/window-info.js","../../node_modules/@gripeless/pico/dist/error-stack.js","../../node_modules/@gripeless/pico/dist/noop.js","../../node_modules/@gripeless/pico/dist/export.js","../../node_modules/@gripeless/pico/dist/future.js","../../node_modules/@gripeless/pico/dist/download.js","../../node_modules/@gripeless/pico/dist/inline.js","../../node_modules/@gripeless/pico/dist/options.js","../../node_modules/@gripeless/pico/dist/index.js","BugBattle.js","index.js"],"names":["root","factory","exports","module","define","amd","window","enumerable","get","getter","value","key","bind","Object","prototype","hasOwnProperty","call","object","property","f","self","sanctuaryTypeIdentifiers","pattern","RegExp","type","x","constructor","toString","slice","length","parse","s","namespace","name","version","groups","exec","Number","__webpack_amd_options__","sanctuaryShow","seen","entry","o","k","show","sortedKeys","keys","sort","indexOf","valueOf","Infinity","JSON","stringify","isNaN","NaN","toISOString","message","Array","map","join","push","concat","filter","test","pop","from","values","entries","String","FL","ordinal","$$type","List","head","tail","this","toJSON","toArray","nil","isNil","list","cons","reverse","xs","ys","arr","captureStackTrace","Error","e","stack","split","_debug","debugHandleNone","debug","fn","a","b","c","captureContext","previous","tag","debugCaptureContext","context","debugCaptureApplicationContext","n","setImmediate","setTimeout","noop","raise","showArg","typeError","TypeError","invalidArgument","it","at","expected","actual","invalidArgumentOf","invalidFuture","desc","m","id","invalidVersion","invalidFutureArgument","assignUnenumerable","prop","defineProperty","writable","configurable","wrapException","caught","callingFuture","origin","_","ensureError","zs","cat","future","reason","withExtraContext","contextToStackTrace","isFunction","isObject","hasMethod","method","isFunctor","isApply","Next","done","Done","getArgs","args","arity","i","arg","any","pred","error","func","isFuture","positiveInteger","application","prev","captureApplicationContext","charAt","toUpperCase","invalidArity","application1","Future","computation","arguments","Computation","createInterpreter","interpret","Interpreter","$1","$2","$3","create","_interpret","step","init","_transform","ChainTransformation","chainRec$recur","pipe","Future$FL$ap","other","ApTransformation","Future$FL$map","mapper","MapTransformation","Future$FL$bimap","lmapper","rmapper","BimapTransformation","Future$FL$chain","Future$FL$alt","AltTransformation","extractLeft","extractRight","transformation","Transformer","isTransformer","$","kind","rec","rej","res","open","cancel","cont","Never","_isNever","never","Crash","Reject","Resolve","settled","cold","hot","async","nextHot","nextCold","settle","exception","rejected","resolved","warmupActions","drain","early","terminator","Sequence$cancel","run","reduce","str","action","BaseTransformation","wrapHandler","handler","createTransformation","Transformation","After","clearTimeout","alternative","left","context1","alt","right","context2","AndTransformation","apply","mx","ap","mf","EncaseP","p","Promise","then","invalidPromise","encaseP","attemptP","undefined","Encase","r","encase","attempt","bifunctor","bimap","g","context3","Eager","_this","crashed","earlyCrash","earlyReject","createParallelTransformation","ParallelTransformation","assign","eager","Parallel$early","PairTransformation","BothTransformation","both","Queued","Cache","_state","_addToQueue","_value","_queue","_cancel","_queued","reset","_drainQueue","queue","state","crash","reject","resolve","monad","chain","CoalesceTransformation","coalesce","fork","invalidState","iterator","timing","next","resource","_acquire","_dispose","_consume","cancelConsume","Hook$done","Hook$rec","Hook$dispose","disposal","Hook$cancelDisposal","Hook$disposalRejected","Hook$cancelConsumption","Hook$consumptionException","Hook$consumptionRejected","Hook$consumptionResolved","cancelAcquire","consumption","invalidConsumption","MapRejTransformation","mapRej","functor","err","val","ParallelApTransformation","futureArray","isArray","Parallel","futures","max","Math","min","cancels","out","cursor","running","blocked","Parallel$cancel","Parallel$run","idx","Parallel$drain","emptyArray","RaceTransformation","race","ConcurrentFuture","sequential","Par","zeroInstance","Par$FL$map","Par$FL$ap","Par$FL$alt","RejectAfter","identity","flow","ab","bc","cd","de","ef","fg","gh","hi","ij","jk","kl","lm","mn","no","op","pq","qr","rs","st","isLeft","ma","_tag","fa","URI","of","fab","fea","mapLeft","fx","chainRec","recur","onLeft","onRight","throwError","fromTask","fromIO","I","contramap","isContravariant","mapWithIndex","isFunctorWithIndex","apFirst","fb","apSecond","chainFirst","flatten","mma","extend","isExtend","wa","duplicate","isFoldable","foldMap","M","foldMapM","reduceRight","reduceWithIndex","isFoldableWithIndex","foldMapWithIndex","reduceRightWithIndex","that","compact","isCompactable","separate","isFilterable","predicate","filterMap","partition","partitionMap","filterWithIndex","isFilterableWithIndex","predicateWithIndex","filterMapWithIndex","partitionWithIndex","partitionMapWithIndex","promap","isProfunctor","compose","isSemigroupoid","isMonadThrow","fromOption","onNone","fromEither","fromPredicate","onFalse","filterOrElse","pipeable","zipWith","fc","len","reduceWithIndex_","l","rLen","start","j","as","zip","bs","__read","Symbol","ar","__spread","__values","isHTMLElement","element","HTMLElement","isHTMLOrSVGElement","SVGElement","defaultNaN","defaultTo","getScrolledElements","$target","querySelectorAll","$el","scrollTop","scrollLeft","container","$clone","e_5","_a","cloneId","dataset","$original","parentWindow","document","querySelector","style","position","overflow","width","offsetWidth","height","offsetHeight","$clonedChildren","children","$originalChildren","lastChild","$$zippedChildren","scrollTopRemaining","scrollLeftRemaining","$$zippedChildren_1","$$zippedChildren_1_1","_b","$originalChild","$clonedChild","originalChildStyles","getComputedStyle","lastChildBoundingRect","getBoundingClientRect","top","parseInt","zIndex","e_5_1","return","console","warn","cloneBody","ignoredSelectors","e_1","_c","random","substring","e_1_1","attachCloneID","html","tree","className","cssText","svg","fontSize","selectors","$clonedBody","body","cloneNode","$node","Element","forEach","selector","e_7","remove","e_7_1","appendChild","e_4","_loop_2","$clonedInputOrTextarea","$originalInputOrTextarea","find","HTMLInputElement","checked","setAttribute","HTMLTextAreaElement","contents","createTextNode","innerHTML","e_4_1","cloneInputs","e_3","_loop_1","$clonedCanvas","$originalCanvas","$replacementImg","createElement","src","toDataURL","parent_1","parentNode","replaceChild","e_3_1","cloneCanvases","e_6","$cloned","e_6_1","transform","cloneScrolls","HTMLBodyElement","margin","e_2","$element","removeAttribute","e_2_1","removeCloneID","$document","tagName","properties","windowInfo","innerWidth","innerHeight","h","options","createElementNS","$iframe","$svg","backgroundColor","$window","getBackgroundColor","$foreignObject","y","$newHtml","$newHead","$head","$body","$html","HTMLHtmlElement","ErrorStack$","errors","fromError","fromErrors","serializeSVGToDataURL","encodeURIComponent","XMLSerializer","serializeToString","$canvas","toBlob","maybeBlob","ms","scalingRatio","devicePixelRatio","ctx","getContext","fl","timeout","$img","Image","onerror","onload","setTransform","drawImage","dataURL","fetch","blob","catch","URL","createObjectURL","url","cache","response","ok","status","statusText","text","reader","FileReader","onloadend","result","readAsDataURL","abort","downloadErrorToDetailedError","downloadError","parallelAll","parallel","isCSSStyleSheet","sheet","CSSStyleSheet","baseURL","styleSheetText","$stylesheetStyle","implementation","createHTMLDocument","cssRules","URL_REGEX","replaceAllAsync","regex","replaceFn","input","global","sticky","theWholeMatch","firstGroup","index","middleF","endF","middle","end","absoluteURL","rule","CSSStyleRule","ruleName","ruleStyle","CSSFontFaceRule","CSSMediaRule","matchMedia","media","mediaText","matches","CSSImportRule","href","CSSPageRule","foldValueFn","initValue","stacks","styleSheets","styleSheet","$image","eithers","location","styleContents","$style","secondStack","defaults","ignore","partialOptions","objectURL","BugBattle","sdkKey","activation","localStorage","getItem","Date","instance","msg","lineNo","columnNo","addLog","startCrashFlow","crashDetectorEnabled","bugReportingRunning","crashDetected","startBugReporting","priority","log","logArray","date","origConsole","originalConsoleLog","info","v","previousBodyOverflow","elem","sendButton","onclick","hide","createBugReportingDialog","mainColor","privacyPolicyContainer","privacyPolicyInputLabel","privacyPolicyInput","privacyPolicyCheckEnabled","display","privacyPolicyUrl","poweredByContainer","poweredByHidden","cancelButton","emailField","textArea","oninput","scrollHeight","email","description","setItem","toggleLoading","alert","preScreenshotCleanup","scrollTo","snapshotPosition","screen","screenshot","prepareScreenshot","showError","exp","item","editorContainer","dialogContainer","feedbackBtn","enableScroll","overwriteConsoleLog","startCrashDetection","readyState","checkForInitType","addEventListener","event","FEEDBACK_BUTTON","injectFeedbackButton","loading","header","loader","success","dataURI","byteString","atob","mimeString","ArrayBuffer","ia","Uint8Array","charCodeAt","Blob","imageObj","pixelRatio","canvas","editorDot","editorRectangle","beginPath","arc","offsetLeft","offsetTop","PI","fillStyle","fill","closePath","lineWidth","strokeStyle","stroke","strokeRect","uploadScreenshot","http","XMLHttpRequest","apiUrl","setRequestHeader","onreadystatechange","DONE","responseText","fileUrl","screenshotURL","sendBugReportToServer","file","dataURItoBlob","formData","FormData","append","send","showSuccessMessage","bugReportData","reportedBy","severity","screenshotUrl","customData","metaData","getMetaData","consoleLog","nameOffset","verOffset","ix","nAgt","navigator","userAgent","browserName","appName","fullVersion","parseFloat","appVersion","majorVersion","lastIndexOf","toLowerCase","OSName","sessionDuration","getTime","sessionStart","browser","systemName","buildVersionNumber","appBuildNumber","releaseVersionNumber","appVersionCode","screenWidth","screenHeight","currentUrl","language","userLanguage","bugReportingEditor","addedMarker","clickStartX","clickStartY","setStartPoint","setMouseMove","dragInfo","heightAbs","widthAbs","mouseUpEventHandler","pageX","documentElement","pageY","touches","preventDefault","enabled","data","color","colorStyleSheet","node","disableScroll","scrollX","scrollY","askForCrashReport","showBugReportEditor"],"mappings":"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","file":"index.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"BugBattle\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"BugBattle\"] = factory();\n\telse\n\t\troot[\"BugBattle\"] = factory();\n})(window, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 3);\n","/*\n @@@@@@@ @@@@@@@ @@\n @@ @@ @@ @@ @@@\n @@ @@@ @@ @@ @@ @@@ @@ @@ @@@@@@ @@ @@@ @@ @@@ @@@@\n @@ @@ @@@ @@ @@ @@ @@@ @@ @@@ @@ @@@ @@@ @@ @@@ @@\n @@ @@ @@@ @@ @@ @@ @@@ @@ @@@ @@ @@@ @@@ @@ @@@@@@@@\n @@ @@ @@@ @@ @@ @@ @@@ @@ @@@ @@ @@@ @@@ @@ @@@\n @@ @@@ @@@@@ @@ @@@ @@@@@ @@@ @@@ @@ @@@@@@ @@@@@\n @@ @@ @@ @@\n @@@@@@@ @@@@@@@ @@@@@ @@\n */\n//. # sanctuary-type-identifiers\n//.\n//. A type is a set of values. Boolean, for example, is the type comprising\n//. `true` and `false`. A value may be a member of multiple types (`42` is a\n//. member of Number, PositiveNumber, Integer, and many other types).\n//.\n//. In certain situations it is useful to divide JavaScript values into\n//. non-overlapping types. The language provides two constructs for this\n//. purpose: the [`typeof`][1] operator and [`Object.prototype.toString`][2].\n//. Each has pros and cons, but neither supports user-defined types.\n//.\n//. sanctuary-type-identifiers comprises:\n//.\n//. - an npm and browser -compatible package for deriving the\n//. _type identifier_ of a JavaScript value; and\n//. - a specification which authors may follow to specify type\n//. identifiers for their types.\n//.\n//. ### Specification\n//.\n//. For a type to be compatible with the algorithm:\n//.\n//. - every member of the type MUST have a `@@type` property\n//. (the _type identifier_); and\n//.\n//. - the type identifier MUST be a string primitive and SHOULD have\n//. format `'/[@]'`, where:\n//.\n//. - `` MUST consist of one or more characters, and\n//. SHOULD equal the name of the npm package which defines the\n//. type (including [scope][3] where appropriate);\n//.\n//. - `` MUST consist of one or more characters, and SHOULD\n//. be the unique name of the type; and\n//.\n//. - `` MUST consist of one or more digits, and SHOULD\n//. represent the version of the type.\n//.\n//. If the type identifier does not conform to the format specified above,\n//. it is assumed that the entire string represents the _name_ of the type;\n//. _namespace_ will be `null` and _version_ will be `0`.\n//.\n//. If the _version_ is not given, it is assumed to be `0`.\n(function (f) {\n 'use strict';\n /* istanbul ignore else */\n\n if (typeof module === 'object' && typeof module.exports === 'object') {\n module.exports = f();\n } else if (typeof define === 'function' && define.amd != null) {\n define([], f);\n } else {\n self.sanctuaryTypeIdentifiers = f();\n }\n})(function () {\n 'use strict'; // $$type :: String\n\n var $$type = '@@type'; // pattern :: RegExp\n\n var pattern = new RegExp('^' + '([\\\\s\\\\S]+)' // \n + '/' // SOLIDUS (U+002F)\n + '([\\\\s\\\\S]+?)' // \n + '(?:' // optional non-capturing group {\n + '@' // COMMERCIAL AT (U+0040)\n + '([0-9]+)' // \n + ')?' // }\n + '$'); //. ### Usage\n //.\n //. ```javascript\n //. const type = require ('sanctuary-type-identifiers');\n //. ```\n //.\n //. ```javascript\n //. > const Identity$prototype = {\n //. . '@@type': 'my-package/Identity@1',\n //. . '@@show': function() {\n //. . return 'Identity (' + show (this.value) + ')';\n //. . }\n //. . }\n //.\n //. > const Identity = value =>\n //. . Object.assign (Object.create (Identity$prototype), {value})\n //.\n //. > type (Identity (0))\n //. 'my-package/Identity@1'\n //.\n //. > type.parse (type (Identity (0)))\n //. {namespace: 'my-package', name: 'Identity', version: 1}\n //. ```\n //.\n //. ### API\n //.\n //# type :: Any -> String\n //.\n //. Takes any value and returns a string which identifies its type. If the\n //. value conforms to the [specification][4], the custom type identifier is\n //. returned.\n //.\n //. ```javascript\n //. > type (null)\n //. 'Null'\n //.\n //. > type (true)\n //. 'Boolean'\n //.\n //. > type (Identity (0))\n //. 'my-package/Identity@1'\n //. ```\n\n function type(x) {\n return x != null && x.constructor != null && x.constructor.prototype !== x && typeof x[$$type] === 'string' ? x[$$type] : Object.prototype.toString.call(x).slice('[object '.length, -']'.length);\n } //# type.parse :: String -> { namespace :: Nullable String, name :: String, version :: Number }\n //.\n //. Takes any string and parses it according to the [specification][4],\n //. returning an object with `namespace`, `name`, and `version` fields.\n //.\n //. ```javascript\n //. > type.parse ('my-package/List@2')\n //. {namespace: 'my-package', name: 'List', version: 2}\n //.\n //. > type.parse ('nonsense!')\n //. {namespace: null, name: 'nonsense!', version: 0}\n //.\n //. > type.parse (type (Identity (0)))\n //. {namespace: 'my-package', name: 'Identity', version: 1}\n //. ```\n\n\n type.parse = function parse(s) {\n var namespace = null;\n var name = s;\n var version = 0;\n var groups = pattern.exec(s);\n\n if (groups != null) {\n namespace = groups[1];\n name = groups[2];\n if (groups[3] != null) version = Number(groups[3]);\n }\n\n return {\n namespace: namespace,\n name: name,\n version: version\n };\n };\n\n return type;\n}); //. [1]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/typeof\n//. [2]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/toString\n//. [3]: https://docs.npmjs.com/misc/scope\n//. [4]: #specification","/* globals __webpack_amd_options__ */\nmodule.exports = __webpack_amd_options__;\n","//. # sanctuary-show\n//.\n//. Haskell has a `show` function which can be applied to a compatible value to\n//. produce a descriptive string representation of that value. The idea is that\n//. the string representation should, if possible, be an expression which would\n//. produce the original value if evaluated.\n//.\n//. This library provides a similar [`show`](#show) function.\n//.\n//. In general, this property should hold: `eval (show (x)) = x`. In some cases\n//. parens are necessary to ensure correct interpretation (`{}`, for example,\n//. is an empty block rather than an empty object in some contexts). Thus the\n//. property is more accurately stated `eval ('(' + show (x) + ')') = x`.\n//.\n//. One can make values of a custom type compatible with [`show`](#show) by\n//. defining a `@@show` method. For example:\n//.\n//. ```javascript\n//. //# Maybe#@@show :: Maybe a ~> () -> String\n//. //.\n//. //. ```javascript\n//. //. > show (Nothing)\n//. //. 'Nothing'\n//. //.\n//. //. > show (Just (['foo', 'bar', 'baz']))\n//. //. 'Just ([\"foo\", \"bar\", \"baz\"])'\n//. //. ```\n//. Maybe.prototype['@@show'] = function() {\n//. return this.isNothing ? 'Nothing' : 'Just (' + show (this.value) + ')';\n//. };\n//. ```\n(function (f) {\n 'use strict';\n /* istanbul ignore else */\n\n if (typeof module === 'object' && typeof module.exports === 'object') {\n module.exports = f();\n } else if (typeof define === 'function' && define.amd != null) {\n define([], f);\n } else {\n self.sanctuaryShow = f();\n }\n})(function () {\n 'use strict'; // $$show :: String\n\n var $$show = '@@show'; // seen :: Array Any\n\n var seen = []; // entry :: Object -> String -> String\n\n function entry(o) {\n return function (k) {\n return show(k) + ': ' + show(o[k]);\n };\n } // sortedKeys :: Object -> Array String\n\n\n function sortedKeys(o) {\n return Object.keys(o).sort();\n } //# show :: Showable a => a -> String\n //.\n //. Returns a useful string representation of the given value.\n //.\n //. Dispatches to the value's `@@show` method if present.\n //.\n //. Where practical, `show (eval ('(' + show (x) + ')')) = show (x)`.\n //.\n //. ```javascript\n //. > show (null)\n //. 'null'\n //.\n //. > show (undefined)\n //. 'undefined'\n //.\n //. > show (true)\n //. 'true'\n //.\n //. > show (new Boolean (false))\n //. 'new Boolean (false)'\n //.\n //. > show (-0)\n //. '-0'\n //.\n //. > show (NaN)\n //. 'NaN'\n //.\n //. > show (new Number (Infinity))\n //. 'new Number (Infinity)'\n //.\n //. > show ('foo\\n\"bar\"\\nbaz\\n')\n //. '\"foo\\\\n\\\\\"bar\\\\\"\\\\nbaz\\\\n\"'\n //.\n //. > show (new String (''))\n //. 'new String (\"\")'\n //.\n //. > show (['foo', 'bar', 'baz'])\n //. '[\"foo\", \"bar\", \"baz\"]'\n //.\n //. > show ([[[[[0]]]]])\n //. '[[[[[0]]]]]'\n //.\n //. > show ({x: [1, 2], y: [3, 4], z: [5, 6]})\n //. '{\"x\": [1, 2], \"y\": [3, 4], \"z\": [5, 6]}'\n //. ```\n\n\n function show(x) {\n if (seen.indexOf(x) >= 0) return '';\n\n switch (Object.prototype.toString.call(x)) {\n case '[object Boolean]':\n return typeof x === 'object' ? 'new Boolean (' + show(x.valueOf()) + ')' : x.toString();\n\n case '[object Number]':\n return typeof x === 'object' ? 'new Number (' + show(x.valueOf()) + ')' : 1 / x === -Infinity ? '-0' : x.toString(10);\n\n case '[object String]':\n return typeof x === 'object' ? 'new String (' + show(x.valueOf()) + ')' : JSON.stringify(x);\n\n case '[object Date]':\n return 'new Date (' + show(isNaN(x.valueOf()) ? NaN : x.toISOString()) + ')';\n\n case '[object Error]':\n return 'new ' + x.name + ' (' + show(x.message) + ')';\n\n case '[object Arguments]':\n return 'function () { return arguments; } (' + Array.prototype.map.call(x, show).join(', ') + ')';\n\n case '[object Array]':\n seen.push(x);\n\n try {\n return '[' + x.map(show).concat(sortedKeys(x).filter(function (k) {\n return !/^\\d+$/.test(k);\n }).map(entry(x))).join(', ') + ']';\n } finally {\n seen.pop();\n }\n\n case '[object Object]':\n seen.push(x);\n\n try {\n return $$show in x && (x.constructor == null || x.constructor.prototype !== x) ? x[$$show]() : '{' + sortedKeys(x).map(entry(x)).join(', ') + '}';\n } finally {\n seen.pop();\n }\n\n case '[object Set]':\n seen.push(x);\n\n try {\n return 'new Set (' + show(Array.from(x.values())) + ')';\n } finally {\n seen.pop();\n }\n\n case '[object Map]':\n seen.push(x);\n\n try {\n return 'new Map (' + show(Array.from(x.entries())) + ')';\n } finally {\n seen.pop();\n }\n\n default:\n return String(x);\n }\n }\n\n return show;\n});","export var FL = {\n alt: 'fantasy-land/alt',\n ap: 'fantasy-land/ap',\n bimap: 'fantasy-land/bimap',\n chain: 'fantasy-land/chain',\n chainRec: 'fantasy-land/chainRec',\n map: 'fantasy-land/map',\n of: 'fantasy-land/of',\n zero: 'fantasy-land/zero'\n};\nexport var ordinal = ['first', 'second', 'third', 'fourth', 'fifth'];\nexport var namespace = 'fluture';\nexport var name = 'Future';\nexport var version = 5;\nexport var $$type = namespace + '/' + name + '@' + version;","export function List(head, tail) {\n this.head = head;\n this.tail = tail;\n}\n\nList.prototype.toJSON = function () {\n return toArray(this);\n};\n\nexport var nil = new List(null, null);\nnil.tail = nil;\nexport function isNil(list) {\n return list.tail === list;\n} // cons :: (a, List a) -> List a\n// -- O(1) append operation\n\nexport function cons(head, tail) {\n return new List(head, tail);\n} // reverse :: List a -> List a\n// -- O(n) list reversal\n\nexport function reverse(xs) {\n var ys = nil,\n tail = xs;\n\n while (!isNil(tail)) {\n ys = cons(tail.head, ys);\n tail = tail.tail;\n }\n\n return ys;\n} // cat :: (List a, List a) -> List a\n// -- O(n) list concatenation\n\nexport function cat(xs, ys) {\n var zs = ys,\n tail = reverse(xs);\n\n while (!isNil(tail)) {\n zs = cons(tail.head, zs);\n tail = tail.tail;\n }\n\n return zs;\n} // toArray :: List a -> Array a\n// -- O(n) list to Array\n\nexport function toArray(xs) {\n var tail = xs,\n arr = [];\n\n while (!isNil(tail)) {\n arr.push(tail.head);\n tail = tail.tail;\n }\n\n return arr;\n}","import { ordinal } from './const.js';\nimport { cons } from './list.js';\n/* c8 ignore next */\n\nvar captureStackTrace = Error.captureStackTrace || captureStackTraceFallback;\nvar _debug = debugHandleNone;\nexport { captureStackTrace };\nexport function debugMode(debug) {\n _debug = debug ? debugHandleAll : debugHandleNone;\n}\nexport function debugHandleNone(x) {\n return x;\n}\nexport function debugHandleAll(x, fn, a, b, c) {\n return fn(a, b, c);\n}\nexport function debug(x, fn, a, b, c) {\n return _debug(x, fn, a, b, c);\n}\nexport function captureContext(previous, tag, fn) {\n return debug(previous, debugCaptureContext, previous, tag, fn);\n}\nexport function debugCaptureContext(previous, tag, fn) {\n var context = {\n tag: tag,\n name: ' from ' + tag + ':'\n };\n captureStackTrace(context, fn);\n return cons(context, previous);\n}\nexport function captureApplicationContext(context, n, f) {\n return debug(context, debugCaptureApplicationContext, context, n, f);\n}\nexport function debugCaptureApplicationContext(context, n, f) {\n return debugCaptureContext(context, ordinal[n - 1] + ' application of ' + f.name, f);\n}\nexport function captureStackTraceFallback(x) {\n var e = new Error();\n\n if (typeof e.stack === 'string') {\n x.stack = x.name + '\\n' + e.stack.split('\\n').slice(1).join('\\n');\n /* c8 ignore next 3 */\n } else {\n x.stack = x.name;\n }\n}","export { default as show } from 'sanctuary-show';\n/* c8 ignore next */\n\nvar setImmediate = typeof setImmediate === 'undefined' ? setImmediateFallback : setImmediate;\nexport function noop() {}\nexport function moop() {\n return this;\n}\nexport function call(f, x) {\n return f(x);\n}\nexport function setImmediateFallback(f, x) {\n return setTimeout(f, 0, x);\n}\nexport function raise(x) {\n setImmediate(function rethrowErrorDelayedToEscapePromiseCatch() {\n throw x;\n });\n}","import { show } from './utils.js';\nimport { ordinal, namespace, name, version } from './const.js';\nimport type from 'sanctuary-type-identifiers';\nimport { nil, cat } from './list.js';\nimport { captureStackTrace } from './debug.js';\n\nfunction showArg(x) {\n return show(x) + ' :: ' + type.parse(type(x)).name;\n}\n\nexport function error(message) {\n return new Error(message);\n}\nexport function typeError(message) {\n return new TypeError(message);\n}\nexport function invalidArgument(it, at, expected, actual) {\n return typeError(it + '() expects its ' + ordinal[at] + ' argument to ' + expected + '.' + '\\n Actual: ' + showArg(actual));\n}\nexport function invalidArgumentOf(expected) {\n return function (it, at, actual) {\n return invalidArgument(it, at, expected, actual);\n };\n}\nexport function invalidContext(it, actual) {\n return typeError(it + '() was invoked outside the context of a Future. You might want to use' + ' a dispatcher instead\\n Called on: ' + show(actual));\n}\nexport function invalidArity(f, args) {\n return new TypeError(f.name + '() expects to be called with a single argument per invocation\\n' + ' Saw: ' + args.length + ' arguments' + Array.prototype.slice.call(args).map(function (arg, i) {\n return '\\n ' + (ordinal[i] ? ordinal[i].charAt(0).toUpperCase() + ordinal[i].slice(1) : 'Argument ' + String(i + 1)) + ': ' + showArg(arg);\n }).join(''));\n}\n\nfunction invalidNamespace(m, x) {\n return 'The Future was not created by ' + namespace + '. ' + 'Make sure you transform other Futures to ' + namespace + ' Futures. ' + 'Got ' + (x ? 'a Future from ' + x : 'an unscoped Future') + '.' + '\\n See: https://github.com/fluture-js/Fluture#casting-futures';\n}\n\nfunction invalidVersion(m, x) {\n return 'The Future was created by ' + (x < version ? 'an older' : 'a newer') + ' version of ' + namespace + '. ' + 'This means that one of the sources which creates Futures is outdated. ' + 'Update this source, or transform its created Futures to be compatible.' + '\\n See: https://github.com/fluture-js/Fluture#casting-futures';\n}\n\nexport function invalidFuture(desc, m, s) {\n var id = type.parse(type(m));\n var info = id.name === name ? '\\n' + (id.namespace !== namespace ? invalidNamespace(m, id.namespace) : id.version !== version ? invalidVersion(m, id.version) : 'Nothing seems wrong. Contact the Fluture maintainers.') : '';\n return typeError(desc + ' to be a valid Future.' + info + '\\n' + ' Actual: ' + show(m) + ' :: ' + id.name + (s || ''));\n}\nexport function invalidFutureArgument(it, at, m, s) {\n return invalidFuture(it + '() expects its ' + ordinal[at] + ' argument', m, s);\n}\nexport function ensureError(value, fn) {\n var message;\n\n try {\n if (value instanceof Error) return value;\n message = 'A Non-Error was thrown from a Future: ' + show(value);\n } catch (_) {\n message = 'Something was thrown from a Future, but it could not be converted to String';\n }\n\n var e = error(message);\n captureStackTrace(e, fn);\n return e;\n}\nexport function assignUnenumerable(o, prop, value) {\n Object.defineProperty(o, prop, {\n value: value,\n writable: true,\n configurable: true\n });\n}\nexport function wrapException(caught, callingFuture) {\n var origin = ensureError(caught, wrapException);\n var context = cat(origin.context || nil, callingFuture.context);\n var e = error(origin.message);\n assignUnenumerable(e, 'future', origin.future || callingFuture);\n assignUnenumerable(e, 'reason', origin.reason || origin);\n assignUnenumerable(e, 'stack', e.reason.stack);\n return withExtraContext(e, context);\n}\nexport function withExtraContext(e, context) {\n assignUnenumerable(e, 'context', context);\n assignUnenumerable(e, 'stack', e.stack + contextToStackTrace(context));\n return e;\n}\nexport function contextToStackTrace(context) {\n var stack = '',\n tail = context;\n\n while (tail !== nil) {\n stack = stack + '\\n' + tail.head.stack;\n tail = tail.tail;\n }\n\n return stack;\n}","import { FL } from './const.js';\nexport function isFunction(f) {\n return typeof f === 'function';\n}\nexport function isThenable(m) {\n return m instanceof Promise || m != null && isFunction(m.then);\n}\nexport function isBoolean(f) {\n return typeof f === 'boolean';\n}\nexport function isNumber(f) {\n return typeof f === 'number';\n}\nexport function isUnsigned(n) {\n return n === Infinity || isNumber(n) && n > 0 && n % 1 === 0;\n}\nexport function isObject(o) {\n return o !== null && typeof o === 'object';\n}\nexport function isIterator(i) {\n return isObject(i) && isFunction(i.next);\n}\nexport function isArray(x) {\n return Array.isArray(x);\n}\nexport function hasMethod(method, x) {\n return x != null && isFunction(x[method]);\n}\nexport function isFunctor(x) {\n return hasMethod(FL.map, x);\n}\nexport function isAlt(x) {\n return isFunctor(x) && hasMethod(FL.alt, x);\n}\nexport function isApply(x) {\n return isFunctor(x) && hasMethod(FL.ap, x);\n}\nexport function isBifunctor(x) {\n return isFunctor(x) && hasMethod(FL.bimap, x);\n}\nexport function isChain(x) {\n return isApply(x) && hasMethod(FL.chain, x);\n}","import { isObject, isBoolean } from './predicates.js';\nexport function Next(x) {\n return {\n done: false,\n value: x\n };\n}\nexport function Done(x) {\n return {\n done: true,\n value: x\n };\n}\nexport function isIteration(x) {\n return isObject(x) && isBoolean(x.done);\n}","/*eslint no-cond-assign:0, no-constant-condition:0 */\nimport type from 'sanctuary-type-identifiers';\nimport { FL, $$type } from './internal/const.js';\nimport { captureContext, captureApplicationContext, captureStackTrace } from './internal/debug.js';\nimport { invalidArgument, invalidArgumentOf, invalidArity, invalidFuture, invalidFutureArgument, typeError, withExtraContext, wrapException } from './internal/error.js';\nimport { Next, Done } from './internal/iteration.js';\nimport { nil, cons, isNil, reverse, toArray } from './internal/list.js';\nimport { isFunction, isUnsigned } from './internal/predicates.js';\nimport { show, noop, call, moop } from './internal/utils.js';\n\nfunction alwaysTrue() {\n return true;\n}\n\nfunction getArgs(it) {\n var args = new Array(it.arity);\n\n for (var i = 1; i <= it.arity; i++) {\n args[i - 1] = it['$' + String(i)];\n }\n\n return args;\n}\n\nfunction showArg(arg) {\n return ' (' + show(arg) + ')';\n}\n\nexport var any = {\n pred: alwaysTrue,\n error: invalidArgumentOf('be anything')\n};\nexport var func = {\n pred: isFunction,\n error: invalidArgumentOf('be a Function')\n};\nexport var future = {\n pred: isFuture,\n error: invalidFutureArgument\n};\nexport var positiveInteger = {\n pred: isUnsigned,\n error: invalidArgumentOf('be a positive Integer')\n};\nexport function application(n, f, type, args, prev) {\n if (args.length < 2 && type.pred(args[0])) return captureApplicationContext(prev, n, f);\n var e = args.length > 1 ? invalidArity(f, args) : type.error(f.name, n - 1, args[0]);\n captureStackTrace(e, f);\n throw withExtraContext(e, prev);\n}\nexport function application1(f, type, args) {\n return application(1, f, type, args, nil);\n}\nexport function Future(computation) {\n var context = application1(Future, func, arguments);\n return new Computation(context, computation);\n}\nexport function isFuture(x) {\n return x instanceof Future || type(x) === $$type;\n} // Compliance with sanctuary-type-identifiers versions 1 and 2.\n// To prevent sanctuary-type-identifiers version 3 from identifying 'Future'\n// as being of the type denoted by $$type, we ensure that\n// Future.constructor.prototype is equal to Future.\n\nFuture['@@type'] = $$type;\nFuture.constructor = {\n prototype: Future\n};\nFuture[FL.of] = resolve;\nFuture[FL.chainRec] = chainRec;\nFuture.prototype['@@type'] = $$type;\n\nFuture.prototype['@@show'] = function Future$show() {\n return this.toString();\n};\n\nFuture.prototype.pipe = function Future$pipe(f) {\n if (!isFunction(f)) throw invalidArgument('Future#pipe', 0, 'be a Function', f);\n return f(this);\n};\n\nFuture.prototype[FL.ap] = function Future$FL$ap(other) {\n var context = captureContext(nil, 'a Fantasy Land dispatch to ap', Future$FL$ap);\n return other._transform(new ApTransformation(context, this));\n};\n\nFuture.prototype[FL.map] = function Future$FL$map(mapper) {\n var context = captureContext(nil, 'a Fantasy Land dispatch to map', Future$FL$map);\n return this._transform(new MapTransformation(context, mapper));\n};\n\nFuture.prototype[FL.bimap] = function Future$FL$bimap(lmapper, rmapper) {\n var context = captureContext(nil, 'a Fantasy Land dispatch to bimap', Future$FL$bimap);\n return this._transform(new BimapTransformation(context, lmapper, rmapper));\n};\n\nFuture.prototype[FL.chain] = function Future$FL$chain(mapper) {\n var context = captureContext(nil, 'a Fantasy Land dispatch to chain', Future$FL$chain);\n return this._transform(new ChainTransformation(context, mapper));\n};\n\nFuture.prototype[FL.alt] = function Future$FL$alt(other) {\n var context = captureContext(nil, 'a Fantasy Land dispatch to alt', Future$FL$alt);\n return this._transform(new AltTransformation(context, other));\n};\n\nFuture.prototype.extractLeft = function Future$extractLeft() {\n return [];\n};\n\nFuture.prototype.extractRight = function Future$extractRight() {\n return [];\n};\n\nFuture.prototype._transform = function Future$transform(transformation) {\n return new Transformer(transformation.context, this, cons(transformation, nil));\n};\n\nFuture.prototype.isTransformer = false;\nFuture.prototype.context = nil;\nFuture.prototype.arity = 0;\nFuture.prototype.name = 'future';\n\nFuture.prototype.toString = function Future$toString() {\n return this.name + getArgs(this).map(showArg).join('');\n};\n\nFuture.prototype.toJSON = function Future$toJSON() {\n return {\n $: $$type,\n kind: 'interpreter',\n type: this.name,\n args: getArgs(this)\n };\n};\n\nexport function createInterpreter(arity, name, interpret) {\n var Interpreter = function Interpreter(context, $1, $2, $3) {\n this.context = context;\n this.$1 = $1;\n this.$2 = $2;\n this.$3 = $3;\n };\n\n Interpreter.prototype = Object.create(Future.prototype);\n Interpreter.prototype.arity = arity;\n Interpreter.prototype.name = name;\n Interpreter.prototype._interpret = interpret;\n return Interpreter;\n}\nexport var Computation = createInterpreter(1, 'Future', function Computation$interpret(rec, rej, res) {\n var computation = this.$1,\n open = false,\n cancel = noop,\n cont = function cont() {\n open = true;\n };\n\n try {\n cancel = computation(function Computation$rej(x) {\n cont = function Computation$rej$cont() {\n open = false;\n rej(x);\n };\n\n if (open) {\n cont();\n }\n }, function Computation$res(x) {\n cont = function Computation$res$cont() {\n open = false;\n res(x);\n };\n\n if (open) {\n cont();\n }\n });\n } catch (e) {\n rec(wrapException(e, this));\n return noop;\n }\n\n if (!(isFunction(cancel) && cancel.length === 0)) {\n rec(wrapException(typeError('The computation was expected to return a nullary cancellation function\\n' + ' Actual: ' + show(cancel)), this));\n return noop;\n }\n\n cont();\n return function Computation$cancel() {\n if (open) {\n open = false;\n cancel && cancel();\n }\n };\n});\nexport var Never = createInterpreter(0, 'never', function Never$interpret() {\n return noop;\n});\nNever.prototype._isNever = true;\nexport var never = new Never(nil);\nexport function isNever(x) {\n return isFuture(x) && x._isNever === true;\n}\nexport var Crash = createInterpreter(1, 'crash', function Crash$interpret(rec) {\n rec(this.$1);\n return noop;\n});\nexport function crash(x) {\n return new Crash(application1(crash, any, arguments), x);\n}\nexport var Reject = createInterpreter(1, 'reject', function Reject$interpret(rec, rej) {\n rej(this.$1);\n return noop;\n});\n\nReject.prototype.extractLeft = function Reject$extractLeft() {\n return [this.$1];\n};\n\nexport function reject(x) {\n return new Reject(application1(reject, any, arguments), x);\n}\nexport var Resolve = createInterpreter(1, 'resolve', function Resolve$interpret(rec, rej, res) {\n res(this.$1);\n return noop;\n});\n\nResolve.prototype.extractRight = function Resolve$extractRight() {\n return [this.$1];\n};\n\nexport function resolve(x) {\n return new Resolve(application1(resolve, any, arguments), x);\n} //Note: This function is not curried because it's only used to satisfy the\n// Fantasy Land ChainRec specification.\n\nexport function chainRec(step, init) {\n return resolve(Next(init))._transform(new ChainTransformation(nil, function chainRec$recur(o) {\n return o.done ? resolve(o.value) : step(Next, Done, o.value)._transform(new ChainTransformation(nil, chainRec$recur));\n }));\n}\nexport var Transformer = createInterpreter(2, 'transform', function Transformer$interpret(rec, rej, res) {\n //These are the cold, and hot, transformation stacks. The cold actions are those that\n //have yet to run parallel computations, and hot are those that have.\n var cold = nil,\n hot = nil; //These combined variables define our current state.\n // future = the future we are currently forking\n // transformation = the transformation to be informed when the future settles\n // cancel = the cancel function of the current future\n // settled = a boolean indicating whether a new tick should start\n // async = a boolean indicating whether we are awaiting a result asynchronously\n\n var future,\n transformation,\n cancel = noop,\n settled,\n async = true,\n it; //Takes a transformation from the top of the hot stack and returns it.\n\n function nextHot() {\n var x = hot.head;\n hot = hot.tail;\n return x;\n } //Takes a transformation from the top of the cold stack and returns it.\n\n\n function nextCold() {\n var x = cold.head;\n cold = cold.tail;\n return x;\n } //This function is called with a future to use in the next tick.\n //Here we \"flatten\" the actions of another Sequence into our own actions,\n //this is the magic that allows for infinitely stack safe recursion because\n //actions like ChainAction will return a new Sequence.\n //If we settled asynchronously, we call drain() directly to run the next tick.\n\n\n function settle(m) {\n settled = true;\n future = m;\n\n if (future.isTransformer) {\n var tail = future.$2;\n\n while (!isNil(tail)) {\n cold = cons(tail.head, cold);\n tail = tail.tail;\n }\n\n future = future.$1;\n }\n\n if (async) drain();\n } //This function serves as a rejection handler for our current future.\n //It will tell the current transformation that the future rejected, and it will\n //settle the current tick with the transformation's answer to that.\n\n\n function rejected(x) {\n settle(transformation.rejected(x));\n } //This function serves as a resolution handler for our current future.\n //It will tell the current transformation that the future resolved, and it will\n //settle the current tick with the transformation's answer to that.\n\n\n function resolved(x) {\n settle(transformation.resolved(x));\n } //This function is passed into actions when they are \"warmed up\".\n //If the transformation decides that it has its result, without the need to await\n //anything else, then it can call this function to force \"early termination\".\n //When early termination occurs, all actions which were stacked prior to the\n //terminator will be skipped. If they were already hot, they will also be\n //sent a cancel signal so they can cancel their own concurrent computations,\n //as their results are no longer needed.\n\n\n function early(m, terminator) {\n cancel();\n cold = nil;\n\n if (async && transformation !== terminator) {\n transformation.cancel();\n\n while ((it = nextHot()) && it !== terminator) {\n it.cancel();\n }\n }\n\n settle(m);\n } //This will cancel the current Future, the current transformation, and all stacked hot actions.\n\n\n function Sequence$cancel() {\n cancel();\n transformation && transformation.cancel();\n\n while (it = nextHot()) {\n it.cancel();\n }\n } //This function is called when an exception is caught.\n\n\n function exception(e) {\n Sequence$cancel();\n settled = true;\n cold = hot = nil;\n var error = wrapException(e, future);\n future = never;\n rec(error);\n } //This function serves to kickstart concurrent computations.\n //Takes all actions from the cold stack in reverse order, and calls run() on\n //each of them, passing them the \"early\" function. If any of them settles (by\n //calling early()), we abort. After warming up all actions in the cold queue,\n //we warm up the current transformation as well.\n\n\n function warmupActions() {\n cold = reverse(cold);\n\n while (cold !== nil) {\n it = cold.head.run(early);\n if (settled) return;\n hot = cons(it, hot);\n cold = cold.tail;\n }\n\n transformation = transformation.run(early);\n } //This function represents our main execution loop. By \"tick\", we've been\n //referring to the execution of one iteration in the while-loop below.\n\n\n function drain() {\n async = false;\n\n while (true) {\n settled = false;\n\n if (transformation = nextCold()) {\n cancel = future._interpret(exception, rejected, resolved);\n if (!settled) warmupActions();\n } else if (transformation = nextHot()) {\n cancel = future._interpret(exception, rejected, resolved);\n } else break;\n\n if (settled) continue;\n async = true;\n return;\n }\n\n cancel = future._interpret(exception, rej, res);\n } //Start the execution loop.\n\n\n settle(this); //Return the cancellation function.\n\n return Sequence$cancel;\n});\nTransformer.prototype.isTransformer = true;\n\nTransformer.prototype._transform = function Transformer$_transform(transformation) {\n return new Transformer(transformation.context, this.$1, cons(transformation, this.$2));\n};\n\nTransformer.prototype.toString = function Transformer$toString() {\n return toArray(reverse(this.$2)).reduce(function (str, action) {\n return action.name + getArgs(action).map(showArg).join('') + ' (' + str + ')';\n }, this.$1.toString());\n};\n\nfunction BaseTransformation$rejected(x) {\n this.cancel();\n return new Reject(this.context, x);\n}\n\nfunction BaseTransformation$resolved(x) {\n this.cancel();\n return new Resolve(this.context, x);\n}\n\nfunction BaseTransformation$toJSON() {\n return {\n $: $$type,\n kind: 'transformation',\n type: this.name,\n args: getArgs(this)\n };\n}\n\nexport var BaseTransformation = {\n rejected: BaseTransformation$rejected,\n resolved: BaseTransformation$resolved,\n run: moop,\n cancel: noop,\n context: nil,\n arity: 0,\n name: 'transform',\n toJSON: BaseTransformation$toJSON\n};\n\nfunction wrapHandler(handler) {\n return function transformationHandler(x) {\n var m;\n\n try {\n m = handler.call(this, x);\n } catch (e) {\n return new Crash(this.context, e);\n }\n\n if (isFuture(m)) {\n return m;\n }\n\n return new Crash(this.context, invalidFuture(this.name + ' expects the return value from the function it\\'s given', m, '\\n When called with: ' + show(x)));\n };\n}\n\nexport function createTransformation(arity, name, prototype) {\n var Transformation = function Transformation(context, $1, $2) {\n this.context = context;\n this.$1 = $1;\n this.$2 = $2;\n };\n\n Transformation.prototype = Object.create(BaseTransformation);\n Transformation.prototype.arity = arity;\n Transformation.prototype.name = name;\n\n if (typeof prototype.rejected === 'function') {\n Transformation.prototype.rejected = wrapHandler(prototype.rejected);\n }\n\n if (typeof prototype.resolved === 'function') {\n Transformation.prototype.resolved = wrapHandler(prototype.resolved);\n }\n\n if (typeof prototype.run === 'function') {\n Transformation.prototype.run = prototype.run;\n }\n\n return Transformation;\n}\nexport var ApTransformation = createTransformation(1, 'ap', {\n resolved: function ApTransformation$resolved(f) {\n if (isFunction(f)) return this.$1._transform(new MapTransformation(this.context, f));\n throw typeError('ap expects the second Future to resolve to a Function\\n' + ' Actual: ' + show(f));\n }\n});\nexport var AltTransformation = createTransformation(1, 'alt', {\n rejected: function AltTransformation$rejected() {\n return this.$1;\n }\n});\nexport var MapTransformation = createTransformation(1, 'map', {\n resolved: function MapTransformation$resolved(x) {\n return new Resolve(this.context, call(this.$1, x));\n }\n});\nexport var BimapTransformation = createTransformation(2, 'bimap', {\n rejected: function BimapTransformation$rejected(x) {\n return new Reject(this.context, call(this.$1, x));\n },\n resolved: function BimapTransformation$resolved(x) {\n return new Resolve(this.context, call(this.$2, x));\n }\n});\nexport var ChainTransformation = createTransformation(1, 'chain', {\n resolved: function ChainTransformation$resolved(x) {\n return call(this.$1, x);\n }\n});","import { any, application, application1, createInterpreter, never, positiveInteger } from './future.js';\nexport var After = createInterpreter(2, 'after', function After$interpret(rec, rej, res) {\n var id = setTimeout(res, this.$1, this.$2);\n return function After$cancel() {\n clearTimeout(id);\n };\n});\n\nAfter.prototype.extractRight = function After$extractRight() {\n return [this.$2];\n};\n\nfunction alwaysNever(_) {\n return never;\n}\n\nexport function after(time) {\n var context1 = application1(after, positiveInteger, arguments);\n return time === Infinity ? alwaysNever : function after(value) {\n var context2 = application(2, after, any, arguments, context1);\n return new After(context2, time, value);\n };\n}","import { FL } from './internal/const.js';\nimport { invalidArgumentOf } from './internal/error.js';\nimport { isAlt } from './internal/predicates.js';\nimport { AltTransformation, application, application1, future, isFuture } from './future.js';\nexport var alternative = {\n pred: isAlt,\n error: invalidArgumentOf('have Alt implemented')\n};\nexport function alt(left) {\n if (isFuture(left)) {\n var context1 = application1(alt, future, arguments);\n return function alt(right) {\n var context2 = application(2, alt, future, arguments, context1);\n return right._transform(new AltTransformation(context2, left));\n };\n }\n\n var context = application1(alt, alternative, arguments);\n return function alt(right) {\n application(2, alt, alternative, arguments, context);\n return left[FL.alt](right);\n };\n}","import { createTransformation, application1, application, future } from './future.js';\nexport var AndTransformation = createTransformation(1, 'and', {\n resolved: function AndTransformation$resolved() {\n return this.$1;\n }\n});\nexport function and(left) {\n var context1 = application1(and, future, arguments);\n return function and(right) {\n var context2 = application(2, and, future, arguments, context1);\n return right._transform(new AndTransformation(context2, left));\n };\n}","import { FL } from './internal/const.js';\nimport { invalidArgumentOf } from './internal/error.js';\nimport { isApply } from './internal/predicates.js';\nimport { isFuture, ApTransformation, application1, application, future } from './future.js';\nexport var apply = {\n pred: isApply,\n error: invalidArgumentOf('have Apply implemented')\n};\nexport function ap(mx) {\n if (isFuture(mx)) {\n var context1 = application1(ap, future, arguments);\n return function ap(mf) {\n var context2 = application(2, ap, future, arguments, context1);\n return mf._transform(new ApTransformation(context2, mx));\n };\n }\n\n var context = application1(ap, apply, arguments);\n return function ap(mf) {\n application(2, ap, apply, arguments, context);\n return mx[FL.ap](mf);\n };\n}","import { wrapException, typeError } from './internal/error.js';\nimport { isThenable } from './internal/predicates.js';\nimport { noop, show } from './internal/utils.js';\nimport { createInterpreter, application1, application, func, any } from './future.js';\n\nfunction invalidPromise(p, f, a) {\n return typeError('encaseP() expects the function it\\'s given to return a Promise/Thenable' + '\\n Actual: ' + show(p) + '\\n From calling: ' + show(f) + '\\n With: ' + show(a));\n}\n\nexport var EncaseP = createInterpreter(2, 'encaseP', function EncaseP$interpret(rec, rej, res) {\n var open = true,\n fn = this.$1,\n arg = this.$2,\n p;\n\n try {\n p = fn(arg);\n } catch (e) {\n rec(wrapException(e, this));\n return noop;\n }\n\n if (!isThenable(p)) {\n rec(wrapException(invalidPromise(p, fn, arg), this));\n return noop;\n }\n\n p.then(function EncaseP$res(x) {\n if (open) {\n open = false;\n res(x);\n }\n }, function EncaseP$rej(x) {\n if (open) {\n open = false;\n rej(x);\n }\n });\n return function EncaseP$cancel() {\n open = false;\n };\n});\nexport function encaseP(f) {\n var context1 = application1(encaseP, func, arguments);\n return function encaseP(x) {\n var context2 = application(2, encaseP, any, arguments, context1);\n return new EncaseP(context2, f, x);\n };\n}","import { encaseP } from './encase-p.js';\nexport function attemptP(_) {\n return encaseP.apply(this, arguments)(undefined);\n}","import { noop } from './internal/utils.js';\nimport { createInterpreter, application1, application, func, any } from './future.js';\nexport var Encase = createInterpreter(2, 'encase', function Encase$interpret(rec, rej, res) {\n var fn = this.$1,\n r;\n\n try {\n r = fn(this.$2);\n } catch (e) {\n rej(e);\n return noop;\n }\n\n res(r);\n return noop;\n});\nexport function encase(f) {\n var context1 = application1(encase, func, arguments);\n return function encase(x) {\n var context2 = application(2, encase, any, arguments, context1);\n return new Encase(context2, f, x);\n };\n}","import { encase } from './encase.js';\nexport function attempt(_) {\n return encase.apply(this, arguments)(undefined);\n}","import { FL } from './internal/const.js';\nimport { invalidArgumentOf } from './internal/error.js';\nimport { isBifunctor } from './internal/predicates.js';\nimport { isFuture, BimapTransformation, application1, application, func } from './future.js';\nexport var bifunctor = {\n pred: isBifunctor,\n error: invalidArgumentOf('have Bifunctor implemented')\n};\nexport function bimap(f) {\n var context1 = application1(bimap, func, arguments);\n return function bimap(g) {\n var context2 = application(2, bimap, func, arguments, context1);\n return function bimap(m) {\n var context3 = application(3, bimap, bifunctor, arguments, context2);\n return isFuture(m) ? m._transform(new BimapTransformation(context3, f, g)) : m[FL.bimap](f, g);\n };\n };\n}","import { createTransformation, future, application1, application, func } from './future.js';\nimport { call } from './internal/utils.js';\nexport var BichainTransformation = createTransformation(2, 'bichain', {\n rejected: function BichainTransformation$rejected(x) {\n return call(this.$1, x);\n },\n resolved: function BichainTransformation$resolved(x) {\n return call(this.$2, x);\n }\n});\nexport function bichain(f) {\n var context1 = application1(bichain, func, arguments);\n return function bichain(g) {\n var context2 = application(2, bichain, func, arguments, context1);\n return function bichain(m) {\n var context3 = application(3, bichain, future, arguments, context2);\n return m._transform(new BichainTransformation(context3, f, g));\n };\n };\n}","import { noop } from './utils.js';\nimport { createTransformation, Future, crash, reject, resolve } from '../future.js';\n\nfunction Eager(future) {\n var _this = this;\n\n _this.rec = noop;\n _this.rej = noop;\n _this.res = noop;\n _this.crashed = false;\n _this.rejected = false;\n _this.resolved = false;\n _this.value = null;\n _this.cancel = future._interpret(function Eager$crash(x) {\n _this.value = x;\n _this.crashed = true;\n _this.cancel = noop;\n\n _this.rec(x);\n }, function Eager$reject(x) {\n _this.value = x;\n _this.rejected = true;\n _this.cancel = noop;\n\n _this.rej(x);\n }, function Eager$resolve(x) {\n _this.value = x;\n _this.resolved = true;\n _this.cancel = noop;\n\n _this.res(x);\n });\n}\n\nEager.prototype = Object.create(Future.prototype);\n\nEager.prototype._interpret = function Eager$interpret(rec, rej, res) {\n if (this.crashed) rec(this.value);else if (this.rejected) rej(this.value);else if (this.resolved) res(this.value);else {\n this.rec = rec;\n this.rej = rej;\n this.res = res;\n }\n return this.cancel;\n};\n\nexport function earlyCrash(early, x) {\n early(crash(x));\n}\nexport function earlyReject(early, x) {\n early(reject(x));\n}\nexport function earlyResolve(early, x) {\n early(resolve(x));\n}\nexport function createParallelTransformation(name, rec, rej, res, prototype) {\n var ParallelTransformation = createTransformation(1, name, Object.assign({\n run: function Parallel$run(early) {\n var eager = new Eager(this.$1);\n var transformation = new ParallelTransformation(this.context, eager);\n\n function Parallel$early(m) {\n early(m, transformation);\n }\n\n transformation.cancel = eager._interpret(function Parallel$rec(x) {\n rec(Parallel$early, x);\n }, function Parallel$rej(x) {\n rej(Parallel$early, x);\n }, function Parallel$res(x) {\n res(Parallel$early, x);\n });\n return transformation;\n }\n }, prototype));\n return ParallelTransformation;\n}","import { createParallelTransformation, earlyCrash, earlyReject } from './internal/parallel.js';\nimport { noop } from './internal/utils.js';\nimport { createTransformation, Resolve, application1, application, future } from './future.js';\nexport var PairTransformation = createTransformation(1, 'pair', {\n resolved: function PairTransformation$resolved(x) {\n return new Resolve(this.context, [x, this.$1]);\n }\n});\nexport var BothTransformation = createParallelTransformation('both', earlyCrash, earlyReject, noop, {\n resolved: function BothTransformation$resolved(x) {\n return this.$1._transform(new PairTransformation(this.context, x));\n }\n});\nexport function both(left) {\n var context1 = application1(both, future, arguments);\n return function both(right) {\n var context2 = application(2, both, future, arguments, context1);\n return right._transform(new BothTransformation(context2, left));\n };\n}","import { noop } from './internal/utils.js';\nimport { createInterpreter, application1, future } from './future.js';\nexport var Cold = 0;\nexport var Pending = 1;\nexport var Crashed = 2;\nexport var Rejected = 3;\nexport var Resolved = 4;\nexport function Queued(rec, rej, res) {\n this[Crashed] = rec;\n this[Rejected] = rej;\n this[Resolved] = res;\n}\nexport var Cache = createInterpreter(1, 'cache', function Cache$interpret(rec, rej, res) {\n var cancel = noop;\n\n switch (this._state) {\n /* c8 ignore next 4 */\n case Pending:\n cancel = this._addToQueue(rec, rej, res);\n break;\n\n case Crashed:\n rec(this._value);\n break;\n\n case Rejected:\n rej(this._value);\n break;\n\n case Resolved:\n res(this._value);\n break;\n\n default:\n this._queue = [];\n cancel = this._addToQueue(rec, rej, res);\n this.run();\n }\n\n return cancel;\n});\nCache.prototype._cancel = noop;\nCache.prototype._queue = null;\nCache.prototype._queued = 0;\nCache.prototype._value = undefined;\nCache.prototype._state = Cold;\n\nCache.prototype.extractLeft = function Cache$extractLeft() {\n return this._state === Rejected ? [this._value] : [];\n};\n\nCache.prototype.extractRight = function Cache$extractRight() {\n return this._state === Resolved ? [this._value] : [];\n};\n\nCache.prototype._addToQueue = function Cache$addToQueue(rec, rej, res) {\n var _this = this;\n\n if (_this._state > Pending) return noop;\n var i = _this._queue.push(new Queued(rec, rej, res)) - 1;\n _this._queued = _this._queued + 1;\n return function Cache$removeFromQueue() {\n if (_this._state > Pending) return;\n _this._queue[i] = undefined;\n _this._queued = _this._queued - 1;\n if (_this._queued === 0) _this.reset();\n };\n};\n\nCache.prototype._drainQueue = function Cache$drainQueue() {\n if (this._state <= Pending) return;\n if (this._queued === 0) return;\n var queue = this._queue;\n var length = queue.length;\n var state = this._state;\n var value = this._value;\n\n for (var i = 0; i < length; i++) {\n queue[i] && queue[i][state](value);\n queue[i] = undefined;\n }\n\n this._queue = undefined;\n this._queued = 0;\n};\n\nCache.prototype.crash = function Cache$crash(error) {\n if (this._state > Pending) return;\n this._value = error;\n this._state = Crashed;\n\n this._drainQueue();\n};\n\nCache.prototype.reject = function Cache$reject(reason) {\n if (this._state > Pending) return;\n this._value = reason;\n this._state = Rejected;\n\n this._drainQueue();\n};\n\nCache.prototype.resolve = function Cache$resolve(value) {\n if (this._state > Pending) return;\n this._value = value;\n this._state = Resolved;\n\n this._drainQueue();\n};\n\nCache.prototype.run = function Cache$run() {\n var _this = this;\n\n if (_this._state > Cold) return;\n _this._state = Pending;\n _this._cancel = _this.$1._interpret(function Cache$fork$rec(x) {\n _this.crash(x);\n }, function Cache$fork$rej(x) {\n _this.reject(x);\n }, function Cache$fork$res(x) {\n _this.resolve(x);\n });\n};\n\nCache.prototype.reset = function Cache$reset() {\n if (this._state === Cold) return;\n if (this._state === Pending) this._cancel();\n this._cancel = noop;\n this._queue = [];\n this._queued = 0;\n this._value = undefined;\n this._state = Cold;\n};\n\nexport function cache(m) {\n return new Cache(application1(cache, future, arguments), m);\n}","import { call } from './internal/utils.js';\nimport { createTransformation, application1, application, future, func } from './future.js';\nexport var ChainRejTransformation = createTransformation(1, 'chainRej', {\n rejected: function ChainRejTransformation$rejected(x) {\n return call(this.$1, x);\n }\n});\nexport function chainRej(f) {\n var context1 = application1(chainRej, func, arguments);\n return function chainRej(m) {\n var context2 = application(2, chainRej, future, arguments, context1);\n return m._transform(new ChainRejTransformation(context2, f));\n };\n}","import { FL } from './internal/const.js';\nimport { invalidArgumentOf } from './internal/error.js';\nimport { isChain } from './internal/predicates.js';\nimport { isFuture, application1, application, func, ChainTransformation } from './future.js';\nexport var monad = {\n pred: isChain,\n error: invalidArgumentOf('have Chain implemented')\n};\nexport function chain(f) {\n var context1 = application1(chain, func, arguments);\n return function chain(m) {\n var context2 = application(2, chain, monad, arguments, context1);\n return isFuture(m) ? m._transform(new ChainTransformation(context2, f)) : m[FL.chain](f);\n };\n}","import { call } from './internal/utils.js';\nimport { createTransformation, Resolve, application1, application, func, future } from './future.js';\nexport var CoalesceTransformation = createTransformation(2, 'coalesce', {\n rejected: function CoalesceTransformation$rejected(x) {\n return new Resolve(this.context, call(this.$1, x));\n },\n resolved: function CoalesceTransformation$resolved(x) {\n return new Resolve(this.context, call(this.$2, x));\n }\n});\nexport function coalesce(f) {\n var context1 = application1(coalesce, func, arguments);\n return function coalesce(g) {\n var context2 = application(2, coalesce, func, arguments, context1);\n return function coalesce(m) {\n var context3 = application(3, coalesce, future, arguments, context2);\n return m._transform(new CoalesceTransformation(context3, f, g));\n };\n };\n}","import { raise } from './internal/utils.js';\nimport { application, application1, func, future } from './future.js';\nexport function fork(f) {\n var context1 = application1(fork, func, arguments);\n return function fork(g) {\n var context2 = application(2, fork, func, arguments, context1);\n return function fork(m) {\n application(3, fork, future, arguments, context2);\n return m._interpret(raise, f, g);\n };\n };\n}","/*eslint consistent-return: 0 */\nimport { typeError, invalidFuture, invalidArgument, wrapException } from './internal/error.js';\nimport { isIteration } from './internal/iteration.js';\nimport { isIterator } from './internal/predicates.js';\nimport { Undetermined, Synchronous, Asynchronous } from './internal/timing.js';\nimport { show, noop } from './internal/utils.js';\nimport { createInterpreter, isFuture, application1, func } from './future.js';\nexport function invalidIteration(o) {\n return typeError('The iterator did not return a valid iteration from iterator.next()\\n' + ' Actual: ' + show(o));\n}\nexport function invalidState(x) {\n return invalidFuture('go() expects the value produced by the iterator', x, '\\n Tip: If you\\'re using a generator, make sure you always yield a Future');\n}\nexport var Go = createInterpreter(1, 'go', function Go$interpret(rec, rej, res) {\n var _this = this,\n timing = Undetermined,\n cancel = noop,\n state,\n value,\n iterator;\n\n function crash(e) {\n rec(wrapException(e, _this));\n }\n\n try {\n iterator = _this.$1();\n } catch (e) {\n crash(e);\n return noop;\n }\n\n if (!isIterator(iterator)) {\n crash(invalidArgument('go', 0, 'return an iterator, maybe you forgot the \"*\"', iterator));\n return noop;\n }\n\n function resolved(x) {\n value = x;\n if (timing === Asynchronous) return drain();\n timing = Synchronous;\n }\n\n function drain() {\n //eslint-disable-next-line no-constant-condition\n while (true) {\n try {\n state = iterator.next(value);\n } catch (e) {\n return crash(e);\n }\n\n if (!isIteration(state)) return crash(invalidIteration(state));\n if (state.done) break;\n\n if (!isFuture(state.value)) {\n return crash(invalidState(state.value));\n }\n\n timing = Undetermined;\n cancel = state.value._interpret(crash, rej, resolved);\n if (timing === Undetermined) return timing = Asynchronous;\n }\n\n res(state.value);\n }\n\n drain();\n return function Go$cancel() {\n cancel();\n };\n});\nexport function go(generator) {\n return new Go(application1(go, func, arguments), generator);\n}","export var Undetermined = 0;\nexport var Synchronous = 1;\nexport var Asynchronous = 2;","import { noop, show, raise } from './internal/utils.js';\nimport { invalidFuture, wrapException } from './internal/error.js';\nimport { createInterpreter, isFuture, application1, application, func, future } from './future.js';\n\nfunction invalidDisposal(m, f, x) {\n return invalidFuture('hook() expects the return value from the first function it\\'s given', m, '\\n From calling: ' + show(f) + '\\n With: ' + show(x));\n}\n\nfunction invalidConsumption(m, f, x) {\n return invalidFuture('hook() expects the return value from the second function it\\'s given', m, '\\n From calling: ' + show(f) + '\\n With: ' + show(x));\n}\n\nexport var Hook = createInterpreter(3, 'hook', function Hook$interpret(rec, rej, res) {\n var _this = this,\n _acquire = this.$1,\n _dispose = this.$2,\n _consume = this.$3;\n\n var cancel,\n cancelConsume = noop,\n resource,\n value,\n cont = noop;\n\n function Hook$done() {\n cont(value);\n }\n\n function Hook$rec(x) {\n rec(wrapException(x, _this));\n }\n\n function Hook$dispose() {\n var disposal;\n\n try {\n disposal = _dispose(resource);\n } catch (e) {\n return Hook$rec(e);\n }\n\n if (!isFuture(disposal)) {\n return Hook$rec(invalidDisposal(disposal, _dispose, resource));\n }\n\n cancel = Hook$cancelDisposal;\n\n disposal._interpret(Hook$rec, Hook$disposalRejected, Hook$done);\n }\n\n function Hook$cancelConsumption() {\n cancelConsume();\n Hook$dispose();\n Hook$cancelDisposal();\n }\n\n function Hook$cancelDisposal() {\n cont = noop;\n }\n\n function Hook$disposalRejected(x) {\n Hook$rec(new Error('The disposal Future rejected with ' + show(x)));\n }\n\n function Hook$consumptionException(x) {\n cont = Hook$rec;\n value = x;\n Hook$dispose();\n }\n\n function Hook$consumptionRejected(x) {\n cont = rej;\n value = x;\n Hook$dispose();\n }\n\n function Hook$consumptionResolved(x) {\n cont = res;\n value = x;\n Hook$dispose();\n }\n\n function Hook$consume(x) {\n resource = x;\n var consumption;\n\n try {\n consumption = _consume(resource);\n } catch (e) {\n return Hook$consumptionException(e);\n }\n\n if (!isFuture(consumption)) {\n return Hook$consumptionException(invalidConsumption(consumption, _consume, resource));\n }\n\n cancel = Hook$cancelConsumption;\n cancelConsume = consumption._interpret(Hook$consumptionException, Hook$consumptionRejected, Hook$consumptionResolved);\n }\n\n var cancelAcquire = _acquire._interpret(Hook$rec, rej, Hook$consume);\n\n cancel = cancel || cancelAcquire;\n return function Hook$fork$cancel() {\n rec = raise;\n cancel();\n };\n});\nexport function hook(acquire) {\n var context1 = application1(hook, future, arguments);\n return function hook(dispose) {\n var context2 = application(2, hook, func, arguments, context1);\n return function hook(consume) {\n var context3 = application(3, hook, func, arguments, context2);\n return new Hook(context3, acquire, dispose, consume);\n };\n };\n}","import { AndTransformation } from './and.js';\nimport { application, application1, createTransformation, future, Reject, Resolve } from './future.js';\nexport var LastlyTransformation = createTransformation(1, 'lastly', {\n rejected: function LastlyAction$rejected(x) {\n return this.$1._transform(new AndTransformation(this.context, new Reject(this.context, x)));\n },\n resolved: function LastlyAction$resolved(x) {\n return this.$1._transform(new AndTransformation(this.context, new Resolve(this.context, x)));\n }\n});\nexport function lastly(cleanup) {\n var context1 = application1(lastly, future, arguments);\n return function lastly(program) {\n var context2 = application(2, lastly, future, arguments, context1);\n return program._transform(new LastlyTransformation(context2, cleanup));\n };\n}","import { call } from './internal/utils.js';\nimport { createTransformation, Reject, application1, application, future, func } from './future.js';\nexport var MapRejTransformation = createTransformation(1, 'mapRej', {\n rejected: function MapRejTransformation$rejected(x) {\n return new Reject(this.context, call(this.$1, x));\n }\n});\nexport function mapRej(f) {\n var context1 = application1(mapRej, func, arguments);\n return function mapRej(m) {\n var context2 = application(2, mapRej, future, arguments, context1);\n return m._transform(new MapRejTransformation(context2, f));\n };\n}","import { FL } from './internal/const.js';\nimport { invalidArgumentOf } from './internal/error.js';\nimport { isFunctor } from './internal/predicates.js';\nimport { isFuture, MapTransformation, application1, application, func } from './future.js';\nexport var functor = {\n pred: isFunctor,\n error: invalidArgumentOf('have Functor implemented')\n};\nexport function map(f) {\n var context1 = application1(map, func, arguments);\n return function map(m) {\n var context2 = application(2, map, functor, arguments, context1);\n return isFuture(m) ? m._transform(new MapTransformation(context2, f)) : m[FL.map](f);\n };\n}","import { wrapException } from './internal/error.js';\nimport { noop, call } from './internal/utils.js';\nimport { createInterpreter, application1, func } from './future.js';\nexport var Node = createInterpreter(1, 'node', function Node$interpret(rec, rej, res) {\n function Node$done(err, val) {\n cont = err ? function EncaseN3$rej() {\n open = false;\n rej(err);\n } : function EncaseN3$res() {\n open = false;\n res(val);\n };\n\n if (open) {\n cont();\n }\n }\n\n var open = false,\n cont = function cont() {\n open = true;\n };\n\n try {\n call(this.$1, Node$done);\n } catch (e) {\n rec(wrapException(e, this));\n open = false;\n return noop;\n }\n\n cont();\n return function Node$cancel() {\n open = false;\n };\n});\nexport function node(f) {\n return new Node(application1(node, func, arguments), f);\n}","import { createParallelTransformation, earlyCrash, earlyReject } from './internal/parallel.js';\nimport { noop } from './internal/utils.js';\nimport { typeError } from './internal/error.js';\nimport { isFunction } from './internal/predicates.js';\nimport { show } from './internal/utils.js';\nimport { MapTransformation, application1, application, future } from './future.js';\nexport var ParallelApTransformation = createParallelTransformation('pap', earlyCrash, earlyReject, noop, {\n resolved: function ParallelApTransformation$resolved(f) {\n if (isFunction(f)) return this.$1._transform(new MapTransformation(this.context, f));\n throw typeError('pap expects the second Future to resolve to a Function\\n' + ' Actual: ' + show(f));\n }\n});\nexport function pap(mx) {\n var context1 = application1(pap, future, arguments);\n return function pap(mf) {\n var context2 = application(2, pap, future, arguments, context1);\n return mf._transform(new ParallelApTransformation(context2, mx));\n };\n}","import { wrapException, invalidArgumentOf } from './internal/error.js';\nimport { isArray } from './internal/predicates.js';\nimport { noop } from './internal/utils.js';\nimport { createInterpreter, isFuture, resolve, application1, positiveInteger, application } from './future.js';\n\nfunction isFutureArray(xs) {\n if (!isArray(xs)) return false;\n\n for (var i = 0; i < xs.length; i++) {\n if (!isFuture(xs[i])) return false;\n }\n\n return true;\n}\n\nexport var futureArray = {\n pred: isFutureArray,\n error: invalidArgumentOf('be an Array of valid Futures')\n};\nexport var Parallel = createInterpreter(2, 'parallel', function Parallel$interpret(rec, rej, res) {\n var _this = this,\n futures = this.$2,\n length = futures.length;\n\n var max = Math.min(this.$1, length),\n cancels = new Array(length),\n out = new Array(length);\n var cursor = 0,\n running = 0,\n blocked = false,\n cont = noop;\n\n function Parallel$cancel() {\n rec = noop;\n rej = noop;\n res = noop;\n cursor = length;\n\n for (var n = 0; n < length; n++) {\n cancels[n] && cancels[n]();\n }\n }\n\n function Parallel$run(idx) {\n running++;\n cancels[idx] = futures[idx]._interpret(function Parallel$rec(e) {\n cont = rec;\n cancels[idx] = noop;\n Parallel$cancel();\n cont(wrapException(e, _this));\n }, function Parallel$rej(reason) {\n cont = rej;\n cancels[idx] = noop;\n Parallel$cancel();\n cont(reason);\n }, function Parallel$res(value) {\n cancels[idx] = noop;\n out[idx] = value;\n running--;\n if (cursor === length && running === 0) res(out);else if (blocked) Parallel$drain();\n });\n }\n\n function Parallel$drain() {\n blocked = false;\n\n while (cursor < length && running < max) {\n Parallel$run(cursor++);\n }\n\n blocked = true;\n }\n\n Parallel$drain();\n return Parallel$cancel;\n});\nvar emptyArray = resolve([]);\nexport function parallel(max) {\n var context1 = application1(parallel, positiveInteger, arguments);\n return function parallel(ms) {\n var context2 = application(2, parallel, futureArray, arguments, context1);\n return ms.length === 0 ? emptyArray : new Parallel(context2, max, ms);\n };\n}","import { createParallelTransformation, earlyCrash, earlyReject, earlyResolve } from './internal/parallel.js';\nimport { application1, application, future } from './future.js';\nexport var RaceTransformation = createParallelTransformation('race', earlyCrash, earlyReject, earlyResolve, {});\nexport function race(left) {\n var context1 = application1(race, future, arguments);\n return function race(right) {\n var context2 = application(2, race, future, arguments, context1);\n return right._transform(new RaceTransformation(context2, left));\n };\n}","import type from 'sanctuary-type-identifiers';\nimport { FL, namespace, version } from './internal/const.js';\nimport { invalidFutureArgument } from './internal/error.js';\nimport { captureContext } from './internal/debug.js';\nimport { nil } from './internal/list.js';\nimport { never, resolve, isFuture, MapTransformation } from './future.js';\nimport { ParallelApTransformation } from './pap.js';\nimport { RaceTransformation } from './race.js';\nexport function ConcurrentFuture(sequential) {\n this.sequential = sequential;\n}\nConcurrentFuture.prototype = Object.create(Par.prototype);\nexport function Par(sequential) {\n if (!isFuture(sequential)) throw invalidFutureArgument(Par.name, 0, sequential);\n return new ConcurrentFuture(sequential);\n}\nvar $$type = namespace + '/ConcurrentFuture@' + version;\nvar zeroInstance = new ConcurrentFuture(never); // Compliance with sanctuary-type-identifiers versions 1 and 2.\n// To prevent sanctuary-type-identifiers version 3 from identifying\n// 'Par' as being of the type denoted by $$type, we ensure that\n// Par.constructor.prototype is equal to Par.\n\nPar['@@type'] = $$type;\nPar.constructor = {\n prototype: Par\n};\n\nPar[FL.of] = function Par$of(x) {\n return new ConcurrentFuture(resolve(x));\n};\n\nPar[FL.zero] = function Par$zero() {\n return zeroInstance;\n};\n\nPar.prototype['@@type'] = $$type;\n\nPar.prototype['@@show'] = function Par$show() {\n return this.toString();\n};\n\nPar.prototype.toString = function Par$toString() {\n return 'Par (' + this.sequential.toString() + ')';\n};\n\nPar.prototype[FL.map] = function Par$FL$map(f) {\n var context = captureContext(nil, 'a Fantasy Land dispatch to map via ConcurrentFuture', Par$FL$map);\n return new ConcurrentFuture(this.sequential._transform(new MapTransformation(context, f)));\n};\n\nPar.prototype[FL.ap] = function Par$FL$ap(other) {\n var context = captureContext(nil, 'a Fantasy Land dispatch to ap via ConcurrentFuture', Par$FL$ap);\n return new ConcurrentFuture(other.sequential._transform(new ParallelApTransformation(context, this.sequential)));\n};\n\nPar.prototype[FL.alt] = function Par$FL$alt(other) {\n var context = captureContext(nil, 'a Fantasy Land dispatch to alt via ConcurrentFuture', Par$FL$alt);\n return new ConcurrentFuture(other.sequential._transform(new RaceTransformation(context, this.sequential)));\n};\n\nexport function isParallel(x) {\n return x instanceof ConcurrentFuture || type(x) === $$type;\n}","import { any, application, application1, createInterpreter, never, positiveInteger } from './future.js';\nexport var RejectAfter = createInterpreter(2, 'rejectAfter', function RejectAfter$interpret(rec, rej) {\n var id = setTimeout(rej, this.$1, this.$2);\n return function RejectAfter$cancel() {\n clearTimeout(id);\n };\n});\n\nRejectAfter.prototype.extractLeft = function RejectAfter$extractLeft() {\n return [this.$2];\n};\n\nfunction alwaysNever(_) {\n return never;\n}\n\nexport function rejectAfter(time) {\n var context1 = application1(rejectAfter, positiveInteger, arguments);\n return time === Infinity ? alwaysNever : function rejectAfter(value) {\n var context2 = application(2, rejectAfter, any, arguments, context1);\n return new RejectAfter(context2, time, value);\n };\n}","import { invalidArgumentOf } from './internal/error.js';\nimport { application1 } from './future.js';\nimport { isParallel } from './par.js';\nvar parallel = {\n pred: isParallel,\n error: invalidArgumentOf('be a ConcurrentFuture')\n};\nexport function seq(par) {\n application1(seq, parallel, arguments);\n return par.sequential;\n}","import { createTransformation, Reject, Resolve, application1, future } from './future.js';\nexport var SwapTransformation = createTransformation(0, 'swap', {\n resolved: function SwapTransformation$resolved(x) {\n return new Reject(this.context, x);\n },\n rejected: function SwapTransformation$rejected(x) {\n return new Resolve(this.context, x);\n }\n});\nexport function swap(m) {\n var context = application1(swap, future, arguments);\n return m._transform(new SwapTransformation(context));\n}","/**\n * @since 2.0.0\n */\n\n/**\n * @since 2.0.0\n */\nexport function identity(a) {\n return a;\n}\n/**\n * @since 2.0.0\n */\n\nexport var unsafeCoerce = identity;\n/**\n * @since 2.0.0\n */\n\nexport function not(predicate) {\n return function (a) {\n return !predicate(a);\n };\n}\n/**\n * @since 2.0.0\n */\n\nexport function constant(a) {\n return function () {\n return a;\n };\n}\n/**\n * A thunk that returns always `true`.\n *\n * @since 2.0.0\n */\n\nexport var constTrue =\n/*#__PURE__*/\nconstant(true);\n/**\n * A thunk that returns always `false`.\n *\n * @since 2.0.0\n */\n\nexport var constFalse =\n/*#__PURE__*/\nconstant(false);\n/**\n * A thunk that returns always `null`.\n *\n * @since 2.0.0\n */\n\nexport var constNull =\n/*#__PURE__*/\nconstant(null);\n/**\n * A thunk that returns always `undefined`.\n *\n * @since 2.0.0\n */\n\nexport var constUndefined =\n/*#__PURE__*/\nconstant(undefined);\n/**\n * A thunk that returns always `void`.\n *\n * @since 2.0.0\n */\n\nexport var constVoid = constUndefined; // TODO: remove in v3\n\n/**\n * Flips the order of the arguments of a function of two arguments.\n *\n * @since 2.0.0\n */\n\nexport function flip(f) {\n return function (b, a) {\n return f(a, b);\n };\n}\nexport function flow(ab, bc, cd, de, ef, fg, gh, hi, ij) {\n switch (arguments.length) {\n case 1:\n return ab;\n\n case 2:\n return function () {\n return bc(ab.apply(this, arguments));\n };\n\n case 3:\n return function () {\n return cd(bc(ab.apply(this, arguments)));\n };\n\n case 4:\n return function () {\n return de(cd(bc(ab.apply(this, arguments))));\n };\n\n case 5:\n return function () {\n return ef(de(cd(bc(ab.apply(this, arguments)))));\n };\n\n case 6:\n return function () {\n return fg(ef(de(cd(bc(ab.apply(this, arguments))))));\n };\n\n case 7:\n return function () {\n return gh(fg(ef(de(cd(bc(ab.apply(this, arguments)))))));\n };\n\n case 8:\n return function () {\n return hi(gh(fg(ef(de(cd(bc(ab.apply(this, arguments))))))));\n };\n\n case 9:\n return function () {\n return ij(hi(gh(fg(ef(de(cd(bc(ab.apply(this, arguments)))))))));\n };\n }\n\n return;\n}\n/**\n * @since 2.0.0\n */\n\nexport function tuple() {\n var t = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n t[_i] = arguments[_i];\n }\n\n return t;\n}\n/**\n * @since 2.0.0\n */\n\nexport function increment(n) {\n return n + 1;\n}\n/**\n * @since 2.0.0\n */\n\nexport function decrement(n) {\n return n - 1;\n}\n/**\n * @since 2.0.0\n */\n\nexport function absurd(_) {\n throw new Error('Called `absurd` function which should be uncallable');\n}\n/**\n * Creates a tupled version of this function: instead of `n` arguments, it accepts a single tuple argument.\n *\n * @example\n * import { tupled } from 'fp-ts/function'\n *\n * const add = tupled((x: number, y: number): number => x + y)\n *\n * assert.strictEqual(add([1, 2]), 3)\n *\n * @since 2.4.0\n */\n\nexport function tupled(f) {\n return function (a) {\n return f.apply(void 0, a);\n };\n}\n/**\n * Inverse function of `tupled`\n *\n * @since 2.4.0\n */\n\nexport function untupled(f) {\n return function () {\n var a = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n a[_i] = arguments[_i];\n }\n\n return f(a);\n };\n}\nexport function pipe(a, ab, bc, cd, de, ef, fg, gh, hi, ij, jk, kl, lm, mn, no, op, pq, qr, rs, st) {\n switch (arguments.length) {\n case 1:\n return a;\n\n case 2:\n return ab(a);\n\n case 3:\n return bc(ab(a));\n\n case 4:\n return cd(bc(ab(a)));\n\n case 5:\n return de(cd(bc(ab(a))));\n\n case 6:\n return ef(de(cd(bc(ab(a)))));\n\n case 7:\n return fg(ef(de(cd(bc(ab(a))))));\n\n case 8:\n return gh(fg(ef(de(cd(bc(ab(a)))))));\n\n case 9:\n return hi(gh(fg(ef(de(cd(bc(ab(a))))))));\n\n case 10:\n return ij(hi(gh(fg(ef(de(cd(bc(ab(a)))))))));\n\n case 11:\n return jk(ij(hi(gh(fg(ef(de(cd(bc(ab(a))))))))));\n\n case 12:\n return kl(jk(ij(hi(gh(fg(ef(de(cd(bc(ab(a)))))))))));\n\n case 13:\n return lm(kl(jk(ij(hi(gh(fg(ef(de(cd(bc(ab(a))))))))))));\n\n case 14:\n return mn(lm(kl(jk(ij(hi(gh(fg(ef(de(cd(bc(ab(a)))))))))))));\n\n case 15:\n return no(mn(lm(kl(jk(ij(hi(gh(fg(ef(de(cd(bc(ab(a))))))))))))));\n\n case 16:\n return op(no(mn(lm(kl(jk(ij(hi(gh(fg(ef(de(cd(bc(ab(a)))))))))))))));\n\n case 17:\n return pq(op(no(mn(lm(kl(jk(ij(hi(gh(fg(ef(de(cd(bc(ab(a))))))))))))))));\n\n case 18:\n return qr(pq(op(no(mn(lm(kl(jk(ij(hi(gh(fg(ef(de(cd(bc(ab(a)))))))))))))))));\n\n case 19:\n return rs(qr(pq(op(no(mn(lm(kl(jk(ij(hi(gh(fg(ef(de(cd(bc(ab(a))))))))))))))))));\n\n case 20:\n return st(rs(qr(pq(op(no(mn(lm(kl(jk(ij(hi(gh(fg(ef(de(cd(bc(ab(a)))))))))))))))))));\n }\n\n return;\n}\n/**\n * Type hole simulation\n *\n * @since 2.7.0\n */\n\nexport var hole = absurd;\n/**\n * @internal\n */\n\nexport var bind_ = function bind_(a, name, b) {\n var _a;\n\n return Object.assign({}, a, (_a = {}, _a[name] = b, _a));\n};\n/**\n * @internal\n */\n\nexport var bindTo_ = function bindTo_(name) {\n return function (b) {\n var _a;\n\n return _a = {}, _a[name] = b, _a;\n };\n};","import { tailRec } from './ChainRec';\nimport { identity, pipe, bind_, bindTo_, flow } from './function'; // -------------------------------------------------------------------------------------\n// guards\n// -------------------------------------------------------------------------------------\n\n/**\n * Returns `true` if the either is an instance of `Left`, `false` otherwise.\n *\n * @category guards\n * @since 2.0.0\n */\n\nexport var isLeft = function isLeft(ma) {\n return ma._tag === 'Left';\n};\n/**\n * Returns `true` if the either is an instance of `Right`, `false` otherwise.\n *\n * @category guards\n * @since 2.0.0\n */\n\nexport var isRight = function isRight(ma) {\n return ma._tag === 'Right';\n}; // -------------------------------------------------------------------------------------\n// constructors\n// -------------------------------------------------------------------------------------\n\n/**\n * Constructs a new `Either` holding a `Left` value. This usually represents a failure, due to the right-bias of this\n * structure.\n *\n * @category constructors\n * @since 2.0.0\n */\n\nexport var left = function left(e) {\n return {\n _tag: 'Left',\n left: e\n };\n};\n/**\n * Constructs a new `Either` holding a `Right` value. This usually represents a successful value due to the right bias\n * of this structure.\n *\n * @category constructors\n * @since 2.0.0\n */\n\nexport var right = function right(a) {\n return {\n _tag: 'Right',\n right: a\n };\n}; // TODO: make lazy in v3\n\n/**\n * Takes a default and a nullable value, if the value is not nully, turn it into a `Right`, if the value is nully use\n * the provided default as a `Left`.\n *\n * @example\n * import { fromNullable, left, right } from 'fp-ts/Either'\n *\n * const parse = fromNullable('nully')\n *\n * assert.deepStrictEqual(parse(1), right(1))\n * assert.deepStrictEqual(parse(null), left('nully'))\n *\n * @category constructors\n * @since 2.0.0\n */\n\nexport function fromNullable(e) {\n return function (a) {\n return a == null ? left(e) : right(a);\n };\n} // TODO: `onError => Lazy => Either` in v3\n\n/**\n * Constructs a new `Either` from a function that might throw.\n *\n * @example\n * import { Either, left, right, tryCatch } from 'fp-ts/Either'\n *\n * const unsafeHead = (as: Array): A => {\n * if (as.length > 0) {\n * return as[0]\n * } else {\n * throw new Error('empty array')\n * }\n * }\n *\n * const head = (as: Array): Either => {\n * return tryCatch(() => unsafeHead(as), e => (e instanceof Error ? e : new Error('unknown error')))\n * }\n *\n * assert.deepStrictEqual(head([]), left(new Error('empty array')))\n * assert.deepStrictEqual(head([1, 2, 3]), right(1))\n *\n * @category constructors\n * @since 2.0.0\n */\n\nexport function tryCatch(f, onError) {\n try {\n return right(f());\n } catch (e) {\n return left(onError(e));\n }\n} // TODO curry in v3\n\n/**\n * Converts a JavaScript Object Notation (JSON) string into an object.\n *\n * @example\n * import { parseJSON, toError, right, left } from 'fp-ts/Either'\n *\n * assert.deepStrictEqual(parseJSON('{\"a\":1}', toError), right({ a: 1 }))\n * assert.deepStrictEqual(parseJSON('{\"a\":}', toError), left(new SyntaxError('Unexpected token } in JSON at position 5')))\n *\n * @category constructors\n * @since 2.0.0\n */\n\nexport function parseJSON(s, onError) {\n return tryCatch(function () {\n return JSON.parse(s);\n }, onError);\n} // TODO curry in v3\n\n/**\n * Converts a JavaScript value to a JavaScript Object Notation (JSON) string.\n *\n * @example\n * import * as E from 'fp-ts/Either'\n * import { pipe } from 'fp-ts/function'\n *\n * assert.deepStrictEqual(E.stringifyJSON({ a: 1 }, E.toError), E.right('{\"a\":1}'))\n * const circular: any = { ref: null }\n * circular.ref = circular\n * assert.deepStrictEqual(\n * pipe(\n * E.stringifyJSON(circular, E.toError),\n * E.mapLeft(e => e.message.includes('Converting circular structure to JSON'))\n * ),\n * E.left(true)\n * )\n *\n * @category constructors\n * @since 2.0.0\n */\n\nexport function stringifyJSON(u, onError) {\n return tryCatch(function () {\n return JSON.stringify(u);\n }, onError);\n}\n/**\n * Derivable from `MonadThrow`.\n *\n * @example\n * import { fromOption, left, right } from 'fp-ts/Either'\n * import { pipe } from 'fp-ts/function'\n * import { none, some } from 'fp-ts/Option'\n *\n * assert.deepStrictEqual(\n * pipe(\n * some(1),\n * fromOption(() => 'error')\n * ),\n * right(1)\n * )\n * assert.deepStrictEqual(\n * pipe(\n * none,\n * fromOption(() => 'error')\n * ),\n * left('error')\n * )\n *\n * @category constructors\n * @since 2.0.0\n */\n\nexport var fromOption = function fromOption(onNone) {\n return function (ma) {\n return ma._tag === 'None' ? left(onNone()) : right(ma.value);\n };\n};\n/**\n * Derivable from `MonadThrow`.\n *\n * @example\n * import { fromPredicate, left, right } from 'fp-ts/Either'\n * import { pipe } from 'fp-ts/function'\n *\n * assert.deepStrictEqual(\n * pipe(\n * 1,\n * fromPredicate(\n * (n) => n > 0,\n * () => 'error'\n * )\n * ),\n * right(1)\n * )\n * assert.deepStrictEqual(\n * pipe(\n * -1,\n * fromPredicate(\n * (n) => n > 0,\n * () => 'error'\n * )\n * ),\n * left('error')\n * )\n *\n * @category constructors\n * @since 2.0.0\n */\n\nexport var fromPredicate = function fromPredicate(predicate, onFalse) {\n return function (a) {\n return predicate(a) ? right(a) : left(onFalse(a));\n };\n}; // -------------------------------------------------------------------------------------\n// destructors\n// -------------------------------------------------------------------------------------\n\n/**\n * Takes two functions and an `Either` value, if the value is a `Left` the inner value is applied to the first function,\n * if the value is a `Right` the inner value is applied to the second function.\n *\n * @example\n * import { fold, left, right } from 'fp-ts/Either'\n * import { pipe } from 'fp-ts/function'\n *\n * function onLeft(errors: Array): string {\n * return `Errors: ${errors.join(', ')}`\n * }\n *\n * function onRight(value: number): string {\n * return `Ok: ${value}`\n * }\n *\n * assert.strictEqual(\n * pipe(\n * right(1),\n * fold(onLeft, onRight)\n * ),\n * 'Ok: 1'\n * )\n * assert.strictEqual(\n * pipe(\n * left(['error 1', 'error 2']),\n * fold(onLeft, onRight)\n * ),\n * 'Errors: error 1, error 2'\n * )\n *\n * @category destructors\n * @since 2.0.0\n */\n\nexport function fold(onLeft, onRight) {\n return function (ma) {\n return isLeft(ma) ? onLeft(ma.left) : onRight(ma.right);\n };\n}\n/**\n * Less strict version of [`getOrElse`](#getOrElse).\n *\n * @category destructors\n * @since 2.6.0\n */\n\nexport var getOrElseW = function getOrElseW(onLeft) {\n return function (ma) {\n return isLeft(ma) ? onLeft(ma.left) : ma.right;\n };\n};\n/**\n * Returns the wrapped value if it's a `Right` or a default value if is a `Left`.\n *\n * @example\n * import { getOrElse, left, right } from 'fp-ts/Either'\n * import { pipe } from 'fp-ts/function'\n *\n * assert.deepStrictEqual(\n * pipe(\n * right(1),\n * getOrElse(() => 0)\n * ),\n * 1\n * )\n * assert.deepStrictEqual(\n * pipe(\n * left('error'),\n * getOrElse(() => 0)\n * ),\n * 0\n * )\n *\n * @category destructors\n * @since 2.0.0\n */\n\nexport var getOrElse = getOrElseW; // -------------------------------------------------------------------------------------\n// combinators\n// -------------------------------------------------------------------------------------\n\n/**\n * @category combinators\n * @since 2.9.0\n */\n\nexport function fromNullableK(e) {\n var from = fromNullable(e);\n return function (f) {\n return function () {\n var a = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n a[_i] = arguments[_i];\n }\n\n return from(f.apply(void 0, a));\n };\n };\n}\n/**\n * @category combinators\n * @since 2.9.0\n */\n\nexport function chainNullableK(e) {\n var from = fromNullableK(e);\n return function (f) {\n return chain(from(f));\n };\n}\n/**\n * Returns a `Right` if is a `Left` (and vice versa).\n *\n * @category combinators\n * @since 2.0.0\n */\n\nexport function swap(ma) {\n return isLeft(ma) ? right(ma.left) : left(ma.right);\n}\n/**\n * Useful for recovering from errors.\n *\n * @category combinators\n * @since 2.0.0\n */\n\nexport function orElse(onLeft) {\n return function (ma) {\n return isLeft(ma) ? onLeft(ma.left) : ma;\n };\n}\n/**\n * Less strict version of [`filterOrElse`](#filterOrElse).\n *\n * @since 2.9.0\n */\n\nexport var filterOrElseW = function filterOrElseW(predicate, onFalse) {\n return chainW(function (a) {\n return predicate(a) ? right(a) : left(onFalse(a));\n });\n};\n/**\n * Derivable from `MonadThrow`.\n *\n * @example\n * import { filterOrElse, left, right } from 'fp-ts/Either'\n * import { pipe } from 'fp-ts/function'\n *\n * assert.deepStrictEqual(\n * pipe(\n * right(1),\n * filterOrElse(\n * (n) => n > 0,\n * () => 'error'\n * )\n * ),\n * right(1)\n * )\n * assert.deepStrictEqual(\n * pipe(\n * right(-1),\n * filterOrElse(\n * (n) => n > 0,\n * () => 'error'\n * )\n * ),\n * left('error')\n * )\n * assert.deepStrictEqual(\n * pipe(\n * left('a'),\n * filterOrElse(\n * (n) => n > 0,\n * () => 'error'\n * )\n * ),\n * left('a')\n * )\n *\n * @category combinators\n * @since 2.0.0\n */\n\nexport var filterOrElse = filterOrElseW; // -------------------------------------------------------------------------------------\n// non-pipeables\n// -------------------------------------------------------------------------------------\n\nvar map_ = function map_(fa, f) {\n return pipe(fa, map(f));\n};\n\nvar ap_ = function ap_(fab, fa) {\n return pipe(fab, ap(fa));\n};\n/* istanbul ignore next */\n\n\nvar chain_ = function chain_(ma, f) {\n return pipe(ma, chain(f));\n};\n/* istanbul ignore next */\n\n\nvar reduce_ = function reduce_(fa, b, f) {\n return pipe(fa, reduce(b, f));\n};\n/* istanbul ignore next */\n\n\nvar foldMap_ = function foldMap_(M) {\n return function (fa, f) {\n var foldMapM = foldMap(M);\n return pipe(fa, foldMapM(f));\n };\n};\n/* istanbul ignore next */\n\n\nvar reduceRight_ = function reduceRight_(fa, b, f) {\n return pipe(fa, reduceRight(b, f));\n};\n\nvar traverse_ = function traverse_(F) {\n var traverseF = traverse(F);\n return function (ta, f) {\n return pipe(ta, traverseF(f));\n };\n};\n\nvar bimap_ = function bimap_(fa, f, g) {\n return pipe(fa, bimap(f, g));\n};\n\nvar mapLeft_ = function mapLeft_(fa, f) {\n return pipe(fa, mapLeft(f));\n};\n/* istanbul ignore next */\n\n\nvar alt_ = function alt_(fa, that) {\n return pipe(fa, alt(that));\n};\n/* istanbul ignore next */\n\n\nvar extend_ = function extend_(wa, f) {\n return pipe(wa, extend(f));\n};\n\nvar chainRec_ = function chainRec_(a, f) {\n return tailRec(f(a), function (e) {\n return isLeft(e) ? right(left(e.left)) : isLeft(e.right) ? left(f(e.right.left)) : right(right(e.right.right));\n });\n}; // -------------------------------------------------------------------------------------\n// pipeables\n// -------------------------------------------------------------------------------------\n\n/**\n * `map` can be used to turn functions `(a: A) => B` into functions `(fa: F) => F` whose argument and return types\n * use the type constructor `F` to represent some computational context.\n *\n * @category Functor\n * @since 2.0.0\n */\n\n\nexport var map = function map(f) {\n return function (fa) {\n return isLeft(fa) ? fa : right(f(fa.right));\n };\n};\n/**\n * Map a pair of functions over the two type arguments of the bifunctor.\n *\n * @category Bifunctor\n * @since 2.0.0\n */\n\nexport var bimap = function bimap(f, g) {\n return function (fa) {\n return isLeft(fa) ? left(f(fa.left)) : right(g(fa.right));\n };\n};\n/**\n * Map a function over the first type argument of a bifunctor.\n *\n * @category Bifunctor\n * @since 2.0.0\n */\n\nexport var mapLeft = function mapLeft(f) {\n return function (fa) {\n return isLeft(fa) ? left(f(fa.left)) : fa;\n };\n};\n/**\n * Less strict version of [`ap`](#ap).\n *\n * @category Apply\n * @since 2.8.0\n */\n\nexport var apW = function apW(fa) {\n return function (fab) {\n return isLeft(fab) ? fab : isLeft(fa) ? fa : right(fab.right(fa.right));\n };\n};\n/**\n * Apply a function to an argument under a type constructor.\n *\n * @category Apply\n * @since 2.0.0\n */\n\nexport var ap = apW;\n/**\n * Combine two effectful actions, keeping only the result of the first.\n *\n * Derivable from `Apply`.\n *\n * @category combinators\n * @since 2.0.0\n */\n\nexport var apFirst = function apFirst(fb) {\n return flow(map(function (a) {\n return function () {\n return a;\n };\n }), ap(fb));\n};\n/**\n * Combine two effectful actions, keeping only the result of the second.\n *\n * Derivable from `Apply`.\n *\n * @category combinators\n * @since 2.0.0\n */\n\nexport var apSecond = function apSecond(fb) {\n return flow(map(function () {\n return function (b) {\n return b;\n };\n }), ap(fb));\n};\n/**\n * Wrap a value into the type constructor.\n *\n * Equivalent to [`right`](#right).\n *\n * @example\n * import * as E from 'fp-ts/Either'\n *\n * assert.deepStrictEqual(E.of('a'), E.right('a'))\n *\n * @category Applicative\n * @since 2.7.0\n */\n\nexport var of = right;\n/**\n * Less strict version of [`chain`](#chain).\n *\n * @category Monad\n * @since 2.6.0\n */\n\nexport var chainW = function chainW(f) {\n return function (ma) {\n return isLeft(ma) ? ma : f(ma.right);\n };\n};\n/**\n * Composes computations in sequence, using the return value of one computation to determine the next computation.\n *\n * @category Monad\n * @since 2.0.0\n */\n\nexport var chain = chainW;\n/**\n * Less strict version of [`chainFirst`](#chainFirst)\n *\n * Derivable from `Monad`.\n *\n * @category combinators\n * @since 2.8.0\n */\n\nexport var chainFirstW = function chainFirstW(f) {\n return function (ma) {\n return pipe(ma, chainW(function (a) {\n return pipe(f(a), map(function () {\n return a;\n }));\n }));\n };\n};\n/**\n * Composes computations in sequence, using the return value of one computation to determine the next computation and\n * keeping only the result of the first.\n *\n * Derivable from `Monad`.\n *\n * @category combinators\n * @since 2.0.0\n */\n\nexport var chainFirst = chainFirstW;\n/**\n * The `flatten` function is the conventional monad join operator. It is used to remove one level of monadic structure, projecting its bound argument into the outer level.\n *\n * Derivable from `Monad`.\n *\n * @example\n * import * as E from 'fp-ts/Either'\n *\n * assert.deepStrictEqual(E.flatten(E.right(E.right('a'))), E.right('a'))\n * assert.deepStrictEqual(E.flatten(E.right(E.left('e'))), E.left('e'))\n * assert.deepStrictEqual(E.flatten(E.left('e')), E.left('e'))\n *\n * @category combinators\n * @since 2.0.0\n */\n\nexport var flatten =\n/*#__PURE__*/\nchain(identity);\n/**\n * Less strict version of [`alt`](#alt).\n *\n * @category Alt\n * @since 2.9.0\n */\n\nexport var altW = function altW(that) {\n return function (fa) {\n return isLeft(fa) ? that() : fa;\n };\n};\n/**\n * Identifies an associative operation on a type constructor. It is similar to `Semigroup`, except that it applies to\n * types of kind `* -> *`.\n *\n * @category Alt\n * @since 2.0.0\n */\n\nexport var alt = altW;\n/**\n * @category Extend\n * @since 2.0.0\n */\n\nexport var extend = function extend(f) {\n return function (wa) {\n return isLeft(wa) ? wa : right(f(wa));\n };\n};\n/**\n * Derivable from `Extend`.\n *\n * @category combinators\n * @since 2.0.0\n */\n\nexport var duplicate =\n/*#__PURE__*/\nextend(identity);\n/**\n * Left-associative fold of a structure.\n *\n * @example\n * import { pipe } from 'fp-ts/function'\n * import * as E from 'fp-ts/Either'\n *\n * const startWith = 'prefix'\n * const concat = (a: string, b: string) => `${a}:${b}`\n *\n * assert.deepStrictEqual(\n * pipe(E.right('a'), E.reduce(startWith, concat)),\n * 'prefix:a',\n * )\n *\n * assert.deepStrictEqual(\n * pipe(E.left('e'), E.reduce(startWith, concat)),\n * 'prefix',\n * )\n *\n * @category Foldable\n * @since 2.0.0\n */\n\nexport var reduce = function reduce(b, f) {\n return function (fa) {\n return isLeft(fa) ? b : f(b, fa.right);\n };\n};\n/**\n * Map each element of the structure to a monoid, and combine the results.\n *\n * @example\n * import { pipe } from 'fp-ts/function';\n * import * as E from 'fp-ts/Either'\n * import { monoidString } from 'fp-ts/Monoid'\n *\n * const yell = (a: string) => `${a}!`\n *\n * assert.deepStrictEqual(\n * pipe(E.right('a'), E.foldMap(monoidString)(yell)),\n * 'a!',\n * )\n *\n * assert.deepStrictEqual(\n * pipe(E.left('e'), E.foldMap(monoidString)(yell)),\n * monoidString.empty,\n * )\n *\n * @category Foldable\n * @since 2.0.0\n */\n\nexport var foldMap = function foldMap(M) {\n return function (f) {\n return function (fa) {\n return isLeft(fa) ? M.empty : f(fa.right);\n };\n };\n};\n/**\n * Right-associative fold of a structure.\n *\n * @example\n * import { pipe } from 'fp-ts/function'\n * import * as E from 'fp-ts/Either'\n *\n * const startWith = 'postfix'\n * const concat = (a: string, b: string) => `${a}:${b}`\n *\n * assert.deepStrictEqual(\n * pipe(E.right('a'), E.reduceRight(startWith, concat)),\n * 'a:postfix',\n * )\n *\n * assert.deepStrictEqual(\n * pipe(E.left('e'), E.reduceRight(startWith, concat)),\n * 'postfix',\n * )\n *\n * @category Foldable\n * @since 2.0.0\n */\n\nexport var reduceRight = function reduceRight(b, f) {\n return function (fa) {\n return isLeft(fa) ? b : f(fa.right, b);\n };\n};\n/**\n * Map each element of a structure to an action, evaluate these actions from left to right, and collect the results.\n *\n * @example\n * import { pipe } from 'fp-ts/function'\n * import * as A from 'fp-ts/Array'\n * import * as E from 'fp-ts/Either'\n * import * as O from 'fp-ts/Option'\n *\n * assert.deepStrictEqual(\n * pipe(E.right(['a']), E.traverse(O.option)(A.head)),\n * O.some(E.right('a')),\n * )\n *\n * assert.deepStrictEqual(\n * pipe(E.right([]), E.traverse(O.option)(A.head)),\n * O.none,\n * )\n *\n * @category Traversable\n * @since 2.6.3\n */\n\nexport var traverse = function traverse(F) {\n return function (f) {\n return function (ta) {\n return isLeft(ta) ? F.of(left(ta.left)) : F.map(f(ta.right), right);\n };\n };\n};\n/**\n * Evaluate each monadic action in the structure from left to right, and collect the results.\n *\n * @example\n * import { pipe } from 'fp-ts/function'\n * import * as E from 'fp-ts/Either'\n * import * as O from 'fp-ts/Option'\n *\n * assert.deepStrictEqual(\n * pipe(E.right(O.some('a')), E.sequence(O.option)),\n * O.some(E.right('a')),\n * )\n *\n * assert.deepStrictEqual(\n * pipe(E.right(O.none), E.sequence(O.option)),\n * O.none\n * )\n *\n * @category Traversable\n * @since 2.6.3\n */\n\nexport var sequence = function sequence(F) {\n return function (ma) {\n return isLeft(ma) ? F.of(left(ma.left)) : F.map(ma.right, right);\n };\n};\n/**\n * @category MonadThrow\n * @since 2.6.3\n */\n\nexport var throwError = left; // -------------------------------------------------------------------------------------\n// instances\n// -------------------------------------------------------------------------------------\n\n/**\n * @category instances\n * @since 2.0.0\n */\n\nexport var URI = 'Either';\n/**\n * @category instances\n * @since 2.0.0\n */\n\nexport function getShow(SE, SA) {\n return {\n show: function show(ma) {\n return isLeft(ma) ? \"left(\" + SE.show(ma.left) + \")\" : \"right(\" + SA.show(ma.right) + \")\";\n }\n };\n}\n/**\n * @category instances\n * @since 2.0.0\n */\n\nexport function getEq(EL, EA) {\n return {\n equals: function equals(x, y) {\n return x === y || (isLeft(x) ? isLeft(y) && EL.equals(x.left, y.left) : isRight(y) && EA.equals(x.right, y.right));\n }\n };\n}\n/**\n * Semigroup returning the left-most non-`Left` value. If both operands are `Right`s then the inner values are\n * concatenated using the provided `Semigroup`\n *\n * @example\n * import { getSemigroup, left, right } from 'fp-ts/Either'\n * import { semigroupSum } from 'fp-ts/Semigroup'\n *\n * const S = getSemigroup(semigroupSum)\n * assert.deepStrictEqual(S.concat(left('a'), left('b')), left('a'))\n * assert.deepStrictEqual(S.concat(left('a'), right(2)), right(2))\n * assert.deepStrictEqual(S.concat(right(1), left('b')), right(1))\n * assert.deepStrictEqual(S.concat(right(1), right(2)), right(3))\n *\n * @category instances\n * @since 2.0.0\n */\n\nexport function getSemigroup(S) {\n return {\n concat: function concat(x, y) {\n return isLeft(y) ? x : isLeft(x) ? y : right(S.concat(x.right, y.right));\n }\n };\n}\n/**\n * Semigroup returning the left-most `Left` value. If both operands are `Right`s then the inner values\n * are concatenated using the provided `Semigroup`\n *\n * @example\n * import { getApplySemigroup, left, right } from 'fp-ts/Either'\n * import { semigroupSum } from 'fp-ts/Semigroup'\n *\n * const S = getApplySemigroup(semigroupSum)\n * assert.deepStrictEqual(S.concat(left('a'), left('b')), left('a'))\n * assert.deepStrictEqual(S.concat(left('a'), right(2)), left('a'))\n * assert.deepStrictEqual(S.concat(right(1), left('b')), left('b'))\n * assert.deepStrictEqual(S.concat(right(1), right(2)), right(3))\n *\n * @category instances\n * @since 2.0.0\n */\n\nexport function getApplySemigroup(S) {\n return {\n concat: function concat(x, y) {\n return isLeft(x) ? x : isLeft(y) ? y : right(S.concat(x.right, y.right));\n }\n };\n}\n/**\n * @category instances\n * @since 2.0.0\n */\n\nexport function getApplyMonoid(M) {\n return {\n concat: getApplySemigroup(M).concat,\n empty: right(M.empty)\n };\n}\n/**\n * Builds a `Filterable` instance for `Either` given `Monoid` for the left side\n *\n * @category instances\n * @since 3.0.0\n */\n\nexport function getFilterable(M) {\n var empty = left(M.empty);\n\n var compact = function compact(ma) {\n return isLeft(ma) ? ma : ma.right._tag === 'None' ? empty : right(ma.right.value);\n };\n\n var separate = function separate(ma) {\n return isLeft(ma) ? {\n left: ma,\n right: ma\n } : isLeft(ma.right) ? {\n left: right(ma.right.left),\n right: empty\n } : {\n left: empty,\n right: right(ma.right.right)\n };\n };\n\n var partitionMap = function partitionMap(ma, f) {\n if (isLeft(ma)) {\n return {\n left: ma,\n right: ma\n };\n }\n\n var e = f(ma.right);\n return isLeft(e) ? {\n left: right(e.left),\n right: empty\n } : {\n left: empty,\n right: right(e.right)\n };\n };\n\n var partition = function partition(ma, p) {\n return isLeft(ma) ? {\n left: ma,\n right: ma\n } : p(ma.right) ? {\n left: empty,\n right: right(ma.right)\n } : {\n left: right(ma.right),\n right: empty\n };\n };\n\n var filterMap = function filterMap(ma, f) {\n if (isLeft(ma)) {\n return ma;\n }\n\n var ob = f(ma.right);\n return ob._tag === 'None' ? empty : right(ob.value);\n };\n\n var filter = function filter(ma, predicate) {\n return isLeft(ma) ? ma : predicate(ma.right) ? ma : empty;\n };\n\n return {\n URI: URI,\n _E: undefined,\n map: map_,\n compact: compact,\n separate: separate,\n filter: filter,\n filterMap: filterMap,\n partition: partition,\n partitionMap: partitionMap\n };\n}\n/**\n * Builds `Witherable` instance for `Either` given `Monoid` for the left side\n *\n * @category instances\n * @since 2.0.0\n */\n\nexport function getWitherable(M) {\n var F_ = getFilterable(M);\n\n var wither = function wither(F) {\n var traverseF = traverse_(F);\n return function (ma, f) {\n return F.map(traverseF(ma, f), F_.compact);\n };\n };\n\n var wilt = function wilt(F) {\n var traverseF = traverse_(F);\n return function (ma, f) {\n return F.map(traverseF(ma, f), F_.separate);\n };\n };\n\n return {\n URI: URI,\n _E: undefined,\n map: map_,\n compact: F_.compact,\n separate: F_.separate,\n filter: F_.filter,\n filterMap: F_.filterMap,\n partition: F_.partition,\n partitionMap: F_.partitionMap,\n traverse: traverse_,\n sequence: sequence,\n reduce: reduce_,\n foldMap: foldMap_,\n reduceRight: reduceRight_,\n wither: wither,\n wilt: wilt\n };\n}\n/**\n * @category instances\n * @since 2.7.0\n */\n\nexport function getApplicativeValidation(SE) {\n return {\n URI: URI,\n _E: undefined,\n map: map_,\n ap: function ap(fab, fa) {\n return isLeft(fab) ? isLeft(fa) ? left(SE.concat(fab.left, fa.left)) : fab : isLeft(fa) ? fa : right(fab.right(fa.right));\n },\n of: of\n };\n}\n/**\n * @category instances\n * @since 2.7.0\n */\n\nexport function getAltValidation(SE) {\n return {\n URI: URI,\n _E: undefined,\n map: map_,\n alt: function alt(me, that) {\n if (isRight(me)) {\n return me;\n }\n\n var ea = that();\n return isLeft(ea) ? left(SE.concat(me.left, ea.left)) : ea;\n }\n };\n} // TODO: remove in v3\n\n/**\n * @category instances\n * @since 2.0.0\n */\n\nexport function getValidation(SE) {\n var applicativeValidation = getApplicativeValidation(SE);\n var altValidation = getAltValidation(SE);\n return {\n URI: URI,\n _E: undefined,\n map: map_,\n of: of,\n chain: chain_,\n bimap: bimap_,\n mapLeft: mapLeft_,\n reduce: reduce_,\n foldMap: foldMap_,\n reduceRight: reduceRight_,\n extend: extend_,\n traverse: traverse_,\n sequence: sequence,\n chainRec: chainRec_,\n throwError: throwError,\n ap: applicativeValidation.ap,\n alt: altValidation.alt\n };\n}\n/**\n * @category instances\n * @since 2.0.0\n */\n\nexport function getValidationSemigroup(SE, SA) {\n return {\n concat: function concat(x, y) {\n return isLeft(x) ? isLeft(y) ? left(SE.concat(x.left, y.left)) : x : isLeft(y) ? y : right(SA.concat(x.right, y.right));\n }\n };\n}\n/**\n * @category instances\n * @since 2.7.0\n */\n\nexport var Functor = {\n URI: URI,\n map: map_\n};\n/**\n * @category instances\n * @since 2.7.0\n */\n\nexport var Applicative = {\n URI: URI,\n map: map_,\n ap: ap_,\n of: of\n};\n/**\n * @category instances\n * @since 2.7.0\n */\n\nexport var Monad = {\n URI: URI,\n map: map_,\n ap: ap_,\n of: of,\n chain: chain_\n};\n/**\n * @category instances\n * @since 2.7.0\n */\n\nexport var Foldable = {\n URI: URI,\n reduce: reduce_,\n foldMap: foldMap_,\n reduceRight: reduceRight_\n};\n/**\n * @category instances\n * @since 2.7.0\n */\n\nexport var Traversable = {\n URI: URI,\n map: map_,\n reduce: reduce_,\n foldMap: foldMap_,\n reduceRight: reduceRight_,\n traverse: traverse_,\n sequence: sequence\n};\n/**\n * @category instances\n * @since 2.7.0\n */\n\nexport var Bifunctor = {\n URI: URI,\n bimap: bimap_,\n mapLeft: mapLeft_\n};\n/**\n * @category instances\n * @since 2.7.0\n */\n\nexport var Alt = {\n URI: URI,\n map: map_,\n alt: alt_\n};\n/**\n * @category instances\n * @since 2.7.0\n */\n\nexport var Extend = {\n URI: URI,\n map: map_,\n extend: extend_\n};\n/**\n * @category instances\n * @since 2.7.0\n */\n\nexport var ChainRec = {\n URI: URI,\n map: map_,\n ap: ap_,\n chain: chain_,\n chainRec: chainRec_\n};\n/**\n * @category instances\n * @since 2.7.0\n */\n\nexport var MonadThrow = {\n URI: URI,\n map: map_,\n ap: ap_,\n of: of,\n chain: chain_,\n throwError: throwError\n};\n/**\n * @category instances\n * @since 2.0.0\n */\n\nexport function getValidationMonoid(SE, SA) {\n return {\n concat: getValidationSemigroup(SE, SA).concat,\n empty: right(SA.empty)\n };\n}\n/**\n * @category instances\n * @since 2.0.0\n */\n\nexport var either = {\n URI: URI,\n map: map_,\n of: of,\n ap: ap_,\n chain: chain_,\n reduce: reduce_,\n foldMap: foldMap_,\n reduceRight: reduceRight_,\n traverse: traverse_,\n sequence: sequence,\n bimap: bimap_,\n mapLeft: mapLeft_,\n alt: alt_,\n extend: extend_,\n chainRec: chainRec_,\n throwError: throwError\n}; // -------------------------------------------------------------------------------------\n// utils\n// -------------------------------------------------------------------------------------\n\n/**\n * Default value for the `onError` argument of `tryCatch`\n *\n * @since 2.0.0\n */\n\nexport function toError(e) {\n return e instanceof Error ? e : new Error(String(e));\n}\n/**\n * @since 2.0.0\n */\n\nexport function elem(E) {\n return function (a, ma) {\n return isLeft(ma) ? false : E.equals(a, ma.right);\n };\n}\n/**\n * Returns `false` if `Left` or returns the result of the application of the given predicate to the `Right` value.\n *\n * @example\n * import { exists, left, right } from 'fp-ts/Either'\n *\n * const gt2 = exists((n: number) => n > 2)\n *\n * assert.strictEqual(gt2(left('a')), false)\n * assert.strictEqual(gt2(right(1)), false)\n * assert.strictEqual(gt2(right(3)), true)\n *\n * @since 2.0.0\n */\n\nexport function exists(predicate) {\n return function (ma) {\n return isLeft(ma) ? false : predicate(ma.right);\n };\n} // -------------------------------------------------------------------------------------\n// do notation\n// -------------------------------------------------------------------------------------\n\n/**\n * @since 2.9.0\n */\n\nexport var Do =\n/*#__PURE__*/\nof({});\n/**\n * @since 2.8.0\n */\n\nexport var bindTo = function bindTo(name) {\n return map(bindTo_(name));\n};\n/**\n * @since 2.8.0\n */\n\nexport var bindW = function bindW(name, f) {\n return chainW(function (a) {\n return pipe(f(a), map(function (b) {\n return bind_(a, name, b);\n }));\n });\n};\n/**\n * @since 2.8.0\n */\n\nexport var bind = bindW; // -------------------------------------------------------------------------------------\n// pipeable sequence S\n// -------------------------------------------------------------------------------------\n\n/**\n * @since 2.8.0\n */\n\nexport var apSW = function apSW(name, fb) {\n return flow(map(function (a) {\n return function (b) {\n return bind_(a, name, b);\n };\n }), apW(fb));\n};\n/**\n * @since 2.8.0\n */\n\nexport var apS = apSW; // -------------------------------------------------------------------------------------\n// array utils\n// -------------------------------------------------------------------------------------\n\n/**\n *\n * @since 2.9.0\n */\n\nexport var traverseArrayWithIndex = function traverseArrayWithIndex(f) {\n return function (arr) {\n // tslint:disable-next-line: readonly-array\n var result = [];\n\n for (var i = 0; i < arr.length; i++) {\n var e = f(i, arr[i]);\n\n if (e._tag === 'Left') {\n return e;\n }\n\n result.push(e.right);\n }\n\n return right(result);\n };\n};\n/**\n * map an array using provided function to Either then transform to Either of the array\n * this function have the same behavior of `A.traverse(E.either)` but it's optimized and perform better\n *\n * @example\n *\n *\n * import { traverseArray, left, right, fromPredicate } from 'fp-ts/Either'\n * import { pipe } from 'fp-ts/function'\n * import * as A from 'fp-ts/Array'\n *\n * const arr = A.range(0, 10)\n * assert.deepStrictEqual(\n * pipe(\n * arr,\n * traverseArray((x) => right(x))\n * ),\n * right(arr)\n * )\n * assert.deepStrictEqual(\n * pipe(\n * arr,\n * traverseArray(\n * fromPredicate(\n * (x) => x > 5,\n * () => 'a'\n * )\n * )\n * ),\n * left('a')\n * )\n * @since 2.9.0\n */\n\nexport var traverseArray = function traverseArray(f) {\n return traverseArrayWithIndex(function (_, a) {\n return f(a);\n });\n};\n/**\n * convert an array of either to an either of array\n * this function have the same behavior of `A.sequence(E.either)` but it's optimized and perform better\n *\n * @example\n *\n * import { sequenceArray, left, right } from 'fp-ts/Either'\n * import { pipe } from 'fp-ts/function'\n * import * as A from 'fp-ts/Array'\n *\n * const arr = A.range(0, 10)\n * assert.deepStrictEqual(pipe(arr, A.map(right), sequenceArray), right(arr))\n * assert.deepStrictEqual(pipe(arr, A.map(right), A.cons(left('Error')), sequenceArray), left('Error'))\n *\n * @since 2.9.0\n */\n\nexport var sequenceArray =\n/*#__PURE__*/\ntraverseArray(identity);","import { identity, pipe as pipeFromFunctionModule } from './function'; // TODO: remove module in v3\n\n/**\n * Use [`pipe`](https://gcanti.github.io/fp-ts/modules/function.ts.html#flow) from `function` module instead.\n *\n * @since 2.0.0\n */\n\nexport var pipe = pipeFromFunctionModule;\n\nvar isFunctor = function isFunctor(I) {\n return typeof I.map === 'function';\n};\n\nvar isContravariant = function isContravariant(I) {\n return typeof I.contramap === 'function';\n};\n\nvar isFunctorWithIndex = function isFunctorWithIndex(I) {\n return typeof I.mapWithIndex === 'function';\n};\n\nvar isApply = function isApply(I) {\n return typeof I.ap === 'function';\n};\n\nvar isChain = function isChain(I) {\n return typeof I.chain === 'function';\n};\n\nvar isBifunctor = function isBifunctor(I) {\n return typeof I.bimap === 'function';\n};\n\nvar isExtend = function isExtend(I) {\n return typeof I.extend === 'function';\n};\n\nvar isFoldable = function isFoldable(I) {\n return typeof I.reduce === 'function';\n};\n\nvar isFoldableWithIndex = function isFoldableWithIndex(I) {\n return typeof I.reduceWithIndex === 'function';\n};\n\nvar isAlt = function isAlt(I) {\n return typeof I.alt === 'function';\n};\n\nvar isCompactable = function isCompactable(I) {\n return typeof I.compact === 'function';\n};\n\nvar isFilterable = function isFilterable(I) {\n return typeof I.filter === 'function';\n};\n\nvar isFilterableWithIndex = function isFilterableWithIndex(I) {\n return typeof I.filterWithIndex === 'function';\n};\n\nvar isProfunctor = function isProfunctor(I) {\n return typeof I.promap === 'function';\n};\n\nvar isSemigroupoid = function isSemigroupoid(I) {\n return typeof I.compose === 'function';\n};\n\nvar isMonadThrow = function isMonadThrow(I) {\n return typeof I.throwError === 'function';\n};\n\nexport function pipeable(I) {\n var r = {};\n\n if (isFunctor(I)) {\n var map = function map(f) {\n return function (fa) {\n return I.map(fa, f);\n };\n };\n\n r.map = map;\n }\n\n if (isContravariant(I)) {\n var contramap = function contramap(f) {\n return function (fa) {\n return I.contramap(fa, f);\n };\n };\n\n r.contramap = contramap;\n }\n\n if (isFunctorWithIndex(I)) {\n var mapWithIndex = function mapWithIndex(f) {\n return function (fa) {\n return I.mapWithIndex(fa, f);\n };\n };\n\n r.mapWithIndex = mapWithIndex;\n }\n\n if (isApply(I)) {\n var ap = function ap(fa) {\n return function (fab) {\n return I.ap(fab, fa);\n };\n };\n\n var apFirst = function apFirst(fb) {\n return function (fa) {\n return I.ap(I.map(fa, function (a) {\n return function () {\n return a;\n };\n }), fb);\n };\n };\n\n r.ap = ap;\n r.apFirst = apFirst;\n\n r.apSecond = function (fb) {\n return function (fa) {\n return I.ap(I.map(fa, function () {\n return function (b) {\n return b;\n };\n }), fb);\n };\n };\n }\n\n if (isChain(I)) {\n var chain = function chain(f) {\n return function (ma) {\n return I.chain(ma, f);\n };\n };\n\n var chainFirst = function chainFirst(f) {\n return function (ma) {\n return I.chain(ma, function (a) {\n return I.map(f(a), function () {\n return a;\n });\n });\n };\n };\n\n var flatten = function flatten(mma) {\n return I.chain(mma, identity);\n };\n\n r.chain = chain;\n r.chainFirst = chainFirst;\n r.flatten = flatten;\n }\n\n if (isBifunctor(I)) {\n var bimap = function bimap(f, g) {\n return function (fa) {\n return I.bimap(fa, f, g);\n };\n };\n\n var mapLeft = function mapLeft(f) {\n return function (fa) {\n return I.mapLeft(fa, f);\n };\n };\n\n r.bimap = bimap;\n r.mapLeft = mapLeft;\n }\n\n if (isExtend(I)) {\n var extend = function extend(f) {\n return function (wa) {\n return I.extend(wa, f);\n };\n };\n\n var duplicate = function duplicate(wa) {\n return I.extend(wa, identity);\n };\n\n r.extend = extend;\n r.duplicate = duplicate;\n }\n\n if (isFoldable(I)) {\n var reduce = function reduce(b, f) {\n return function (fa) {\n return I.reduce(fa, b, f);\n };\n };\n\n var foldMap = function foldMap(M) {\n var foldMapM = I.foldMap(M);\n return function (f) {\n return function (fa) {\n return foldMapM(fa, f);\n };\n };\n };\n\n var reduceRight = function reduceRight(b, f) {\n return function (fa) {\n return I.reduceRight(fa, b, f);\n };\n };\n\n r.reduce = reduce;\n r.foldMap = foldMap;\n r.reduceRight = reduceRight;\n }\n\n if (isFoldableWithIndex(I)) {\n var reduceWithIndex = function reduceWithIndex(b, f) {\n return function (fa) {\n return I.reduceWithIndex(fa, b, f);\n };\n };\n\n var foldMapWithIndex = function foldMapWithIndex(M) {\n var foldMapM = I.foldMapWithIndex(M);\n return function (f) {\n return function (fa) {\n return foldMapM(fa, f);\n };\n };\n };\n\n var reduceRightWithIndex = function reduceRightWithIndex(b, f) {\n return function (fa) {\n return I.reduceRightWithIndex(fa, b, f);\n };\n };\n\n r.reduceWithIndex = reduceWithIndex;\n r.foldMapWithIndex = foldMapWithIndex;\n r.reduceRightWithIndex = reduceRightWithIndex;\n }\n\n if (isAlt(I)) {\n var alt = function alt(that) {\n return function (fa) {\n return I.alt(fa, that);\n };\n };\n\n r.alt = alt;\n }\n\n if (isCompactable(I)) {\n r.compact = I.compact;\n r.separate = I.separate;\n }\n\n if (isFilterable(I)) {\n var filter = function filter(predicate) {\n return function (fa) {\n return I.filter(fa, predicate);\n };\n };\n\n var filterMap = function filterMap(f) {\n return function (fa) {\n return I.filterMap(fa, f);\n };\n };\n\n var partition = function partition(predicate) {\n return function (fa) {\n return I.partition(fa, predicate);\n };\n };\n\n var partitionMap = function partitionMap(f) {\n return function (fa) {\n return I.partitionMap(fa, f);\n };\n };\n\n r.filter = filter;\n r.filterMap = filterMap;\n r.partition = partition;\n r.partitionMap = partitionMap;\n }\n\n if (isFilterableWithIndex(I)) {\n var filterWithIndex = function filterWithIndex(predicateWithIndex) {\n return function (fa) {\n return I.filterWithIndex(fa, predicateWithIndex);\n };\n };\n\n var filterMapWithIndex = function filterMapWithIndex(f) {\n return function (fa) {\n return I.filterMapWithIndex(fa, f);\n };\n };\n\n var partitionWithIndex = function partitionWithIndex(predicateWithIndex) {\n return function (fa) {\n return I.partitionWithIndex(fa, predicateWithIndex);\n };\n };\n\n var partitionMapWithIndex = function partitionMapWithIndex(f) {\n return function (fa) {\n return I.partitionMapWithIndex(fa, f);\n };\n };\n\n r.filterWithIndex = filterWithIndex;\n r.filterMapWithIndex = filterMapWithIndex;\n r.partitionWithIndex = partitionWithIndex;\n r.partitionMapWithIndex = partitionMapWithIndex;\n }\n\n if (isProfunctor(I)) {\n var promap = function promap(f, g) {\n return function (fa) {\n return I.promap(fa, f, g);\n };\n };\n\n r.promap = promap;\n }\n\n if (isSemigroupoid(I)) {\n var compose = function compose(that) {\n return function (fa) {\n return I.compose(fa, that);\n };\n };\n\n r.compose = compose;\n }\n\n if (isMonadThrow(I)) {\n var fromOption = function fromOption(onNone) {\n return function (ma) {\n return ma._tag === 'None' ? I.throwError(onNone()) : I.of(ma.value);\n };\n };\n\n var fromEither = function fromEither(ma) {\n return ma._tag === 'Left' ? I.throwError(ma.left) : I.of(ma.right);\n };\n\n var fromPredicate = function fromPredicate(predicate, onFalse) {\n return function (a) {\n return predicate(a) ? I.of(a) : I.throwError(onFalse(a));\n };\n };\n\n var filterOrElse = function filterOrElse(predicate, onFalse) {\n return function (ma) {\n return I.chain(ma, function (a) {\n return predicate(a) ? I.of(a) : I.throwError(onFalse(a));\n });\n };\n };\n\n r.fromOption = fromOption;\n r.fromEither = fromEither;\n r.fromPredicate = fromPredicate;\n r.filterOrElse = filterOrElse;\n }\n\n return r;\n}","/**\n * @since 0.5.0\n */\nimport * as F from 'fluture';\nimport * as E from 'fp-ts/es6/Either';\nimport { pipeable } from 'fp-ts/es6/pipeable';\n/**\n * @since 0.5.0\n */\n\nexport var URI = 'Fluture/Future';\n/**\n * @since 0.6.4\n */\n\nexport var left = F.reject;\n/**\n * @since 0.6.4\n */\n\nexport var right = F.resolve;\n/**\n * @since 0.6.4\n */\n\nexport function leftIO(ma) {\n return F.swap(F.attempt(ma));\n}\n/**\n * @since 0.6.4\n */\n\nexport var rightIO = F.attempt;\n/**\n * @since 0.6.4\n */\n\nexport function leftTask(ma) {\n return F.swap(F.attemptP(ma));\n}\n/**\n * @since 0.6.4\n */\n\nexport var rightTask = F.attemptP;\n/**\n * @since 0.6.4\n */\n\nexport function orElse(onLeft) {\n return F.chainRej(onLeft);\n}\n/**\n * @since 0.6.4\n */\n\nexport function fold(onLeft, onRight) {\n return function (ma) {\n return function () {\n return F.promise(F.coalesce(onLeft)(onRight)(ma)).then(function (mb) {\n return mb();\n });\n };\n };\n}\n/**\n * @since 0.6.4\n */\n\nexport var swap = F.swap;\nexport function futurify(f) {\n return function () {\n var args = Array.prototype.slice.call(arguments);\n return F.node(function (done) {\n var cbResolver = function cbResolver(e, r) {\n return e != null ? done(e) : done(null, r);\n };\n\n f.apply(null, args.concat(cbResolver));\n });\n };\n}\n/**\n * @since 0.5.0\n */\n\nexport var future = {\n URI: URI,\n map: function map(fa, f) {\n return F.map(f)(fa);\n },\n of: F.resolve,\n ap: function ap(fab, fa) {\n return F.ap(fa)(fab);\n },\n chain: function chain(fa, f) {\n return F.chain(f)(fa);\n },\n bimap: function bimap(fea, f, g) {\n return F.bimap(f)(g)(fea);\n },\n mapLeft: function mapLeft(fea, f) {\n return F.mapRej(f)(fea);\n },\n alt: function alt(fx, f) {\n return F.alt(f())(fx);\n },\n chainRec: function chainRec(a, f) {\n return function recur(a) {\n return future.chain(f(a), E.fold(recur, F.resolve));\n }(a);\n },\n throwError: left,\n fromTask: F.attemptP,\n fromIO: F.attempt\n};\n/**\n * @since 0.6.4\n */\n\nexport function delay(millis) {\n return chain(F.after(millis));\n}\n\nvar _a = pipeable(future),\n alt = _a.alt,\n ap = _a.ap,\n apFirst = _a.apFirst,\n apSecond = _a.apSecond,\n bimap = _a.bimap,\n chain = _a.chain,\n chainFirst = _a.chainFirst,\n flatten = _a.flatten,\n map = _a.map,\n mapLeft = _a.mapLeft,\n fromEither = _a.fromEither,\n fromOption = _a.fromOption,\n fromPredicate = _a.fromPredicate;\n\nexport {\n/**\n * @since 0.6.4\n */\nalt,\n/**\n * @since 0.6.4\n */\nap,\n/**\n * @since 0.6.4\n */\napFirst,\n/**\n * @since 0.6.4\n */\napSecond,\n/**\n * @since 0.6.4\n */\nbimap,\n/**\n * @since 0.6.4\n */\nchain,\n/**\n * @since 0.6.4\n */\nchainFirst,\n/**\n * @since 0.6.4\n */\nflatten,\n/**\n * @since 0.6.4\n */\nmap,\n/**\n * @since 0.6.4\n */\nmapLeft,\n/**\n * @since 0.6.4\n */\nfromEither,\n/**\n * @since 0.6.4\n */\nfromOption,\n/**\n * @since 0.6.4\n */\nfromPredicate };","import { identity, pipe, bind_, bindTo_, flow } from './function';\nimport * as O from './Option';\nimport { fromCompare, getMonoid as getOrdMonoid, ordNumber } from './Ord'; // -------------------------------------------------------------------------------------\n// model\n// -------------------------------------------------------------------------------------\n\n/**\n * @category constructors\n * @since 2.5.0\n */\n// tslint:disable-next-line: readonly-array\n\nexport function fromArray(as) {\n var l = as.length;\n\n if (l === 0) {\n return empty;\n }\n\n var ras = Array(l);\n\n for (var i = 0; i < l; i++) {\n ras[i] = as[i];\n }\n\n return ras;\n}\n/**\n * @category destructors\n * @since 2.5.0\n */\n// tslint:disable-next-line: readonly-array\n\nexport function toArray(ras) {\n var l = ras.length;\n var as = Array(l);\n\n for (var i = 0; i < l; i++) {\n as[i] = ras[i];\n }\n\n return as;\n}\n/**\n * @category instances\n * @since 2.5.0\n */\n\nexport function getShow(S) {\n return {\n show: function show(as) {\n return \"[\" + as.map(S.show).join(', ') + \"]\";\n }\n };\n}\n\nvar concat = function concat(x, y) {\n var lenx = x.length;\n\n if (lenx === 0) {\n return y;\n }\n\n var leny = y.length;\n\n if (leny === 0) {\n return x;\n }\n\n var r = Array(lenx + leny);\n\n for (var i = 0; i < lenx; i++) {\n r[i] = x[i];\n }\n\n for (var i = 0; i < leny; i++) {\n r[i + lenx] = y[i];\n }\n\n return r;\n};\n/**\n * Returns a `Monoid` for `ReadonlyArray`\n *\n * @example\n * import { getMonoid } from 'fp-ts/ReadonlyArray'\n *\n * const M = getMonoid()\n * assert.deepStrictEqual(M.concat([1, 2], [3, 4]), [1, 2, 3, 4])\n *\n * @category instances\n * @since 2.5.0\n */\n\n\nexport function getMonoid() {\n return {\n concat: concat,\n empty: empty\n };\n}\n/**\n * Derives an `Eq` over the `ReadonlyArray` of a given element type from the `Eq` of that type. The derived `Eq` defines two\n * arrays as equal if all elements of both arrays are compared equal pairwise with the given `E`. In case of arrays of\n * different lengths, the result is non equality.\n *\n * @example\n * import { eqString } from 'fp-ts/Eq'\n * import { getEq } from 'fp-ts/ReadonlyArray'\n *\n * const E = getEq(eqString)\n * assert.strictEqual(E.equals(['a', 'b'], ['a', 'b']), true)\n * assert.strictEqual(E.equals(['a'], []), false)\n *\n * @category instances\n * @since 2.5.0\n */\n\nexport function getEq(E) {\n return {\n equals: function equals(xs, ys) {\n return xs === ys || xs.length === ys.length && xs.every(function (x, i) {\n return E.equals(x, ys[i]);\n });\n }\n };\n}\n/**\n * Derives an `Ord` over the `ReadonlyArray` of a given element type from the `Ord` of that type. The ordering between two such\n * arrays is equal to: the first non equal comparison of each arrays elements taken pairwise in increasing order, in\n * case of equality over all the pairwise elements; the longest array is considered the greatest, if both arrays have\n * the same length, the result is equality.\n *\n * @example\n * import { getOrd } from 'fp-ts/ReadonlyArray'\n * import { ordString } from 'fp-ts/Ord'\n *\n * const O = getOrd(ordString)\n * assert.strictEqual(O.compare(['b'], ['a']), 1)\n * assert.strictEqual(O.compare(['a'], ['a']), 0)\n * assert.strictEqual(O.compare(['a'], ['b']), -1)\n *\n *\n * @category instances\n * @since 2.5.0\n */\n\nexport function getOrd(O) {\n return fromCompare(function (a, b) {\n var aLen = a.length;\n var bLen = b.length;\n var len = Math.min(aLen, bLen);\n\n for (var i = 0; i < len; i++) {\n var ordering = O.compare(a[i], b[i]);\n\n if (ordering !== 0) {\n return ordering;\n }\n }\n\n return ordNumber.compare(aLen, bLen);\n });\n}\n/**\n * Return a list of length `n` with element `i` initialized with `f(i)`\n *\n * @example\n * import { makeBy } from 'fp-ts/ReadonlyArray'\n *\n * const double = (n: number): number => n * 2\n * assert.deepStrictEqual(makeBy(5, double), [0, 2, 4, 6, 8])\n *\n * @category constructors\n * @since 2.5.0\n */\n\nexport function makeBy(n, f) {\n // tslint:disable-next-line: readonly-array\n var r = [];\n\n for (var i = 0; i < n; i++) {\n r.push(f(i));\n }\n\n return r;\n}\n/**\n * Create an array containing a range of integers, including both endpoints\n *\n * @example\n * import { range } from 'fp-ts/ReadonlyArray'\n *\n * assert.deepStrictEqual(range(1, 5), [1, 2, 3, 4, 5])\n *\n * @category constructors\n * @since 2.5.0\n */\n\nexport function range(start, end) {\n return makeBy(end - start + 1, function (i) {\n return start + i;\n });\n}\n/**\n * Create an array containing a value repeated the specified number of times\n *\n * @example\n * import { replicate } from 'fp-ts/ReadonlyArray'\n *\n * assert.deepStrictEqual(replicate(3, 'a'), ['a', 'a', 'a'])\n *\n * @category constructors\n * @since 2.5.0\n */\n\nexport function replicate(n, a) {\n return makeBy(n, function () {\n return a;\n });\n}\n/**\n * Removes one level of nesting\n *\n * Derivable from `Monad`.\n *\n * @example\n * import { flatten } from 'fp-ts/ReadonlyArray'\n *\n * assert.deepStrictEqual(flatten([[1], [2], [3]]), [1, 2, 3])\n *\n * @category combinators\n * @since 2.5.0\n */\n\nexport function flatten(mma) {\n var rLen = 0;\n var len = mma.length;\n\n for (var i = 0; i < len; i++) {\n rLen += mma[i].length;\n }\n\n var r = Array(rLen);\n var start = 0;\n\n for (var i = 0; i < len; i++) {\n var arr = mma[i];\n var l = arr.length;\n\n for (var j = 0; j < l; j++) {\n r[j + start] = arr[j];\n }\n\n start += l;\n }\n\n return r;\n}\n/**\n * Break an array into its first element and remaining elements\n *\n * @example\n * import { foldLeft } from 'fp-ts/ReadonlyArray'\n *\n * const len: (as: ReadonlyArray) => number = foldLeft(() => 0, (_, tail) => 1 + len(tail))\n * assert.strictEqual(len([1, 2, 3]), 3)\n *\n * @category destructors\n * @since 2.5.0\n */\n\nexport function foldLeft(onEmpty, onCons) {\n return function (as) {\n return isEmpty(as) ? onEmpty() : onCons(as[0], as.slice(1));\n };\n}\n/**\n * Break an array into its initial elements and the last element\n *\n * @category destructors\n * @since 2.5.0\n */\n\nexport function foldRight(onEmpty, onCons) {\n return function (as) {\n return isEmpty(as) ? onEmpty() : onCons(as.slice(0, as.length - 1), as[as.length - 1]);\n };\n}\n/**\n * Same as `reduce` but it carries over the intermediate steps\n *\n * @example\n * import { scanLeft } from 'fp-ts/ReadonlyArray'\n *\n * assert.deepStrictEqual(scanLeft(10, (b, a: number) => b - a)([1, 2, 3]), [10, 9, 7, 4])\n *\n * @category combinators\n * @since 2.5.0\n */\n\nexport function scanLeft(b, f) {\n return function (as) {\n var l = as.length; // tslint:disable-next-line: readonly-array\n\n var r = new Array(l + 1);\n r[0] = b;\n\n for (var i = 0; i < l; i++) {\n r[i + 1] = f(r[i], as[i]);\n }\n\n return r;\n };\n}\n/**\n * Fold an array from the right, keeping all intermediate results instead of only the final result\n *\n * @example\n * import { scanRight } from 'fp-ts/ReadonlyArray'\n *\n * assert.deepStrictEqual(scanRight(10, (a: number, b) => b - a)([1, 2, 3]), [4, 5, 7, 10])\n *\n * @category combinators\n * @since 2.5.0\n */\n\nexport function scanRight(b, f) {\n return function (as) {\n var l = as.length; // tslint:disable-next-line: readonly-array\n\n var r = new Array(l + 1);\n r[l] = b;\n\n for (var i = l - 1; i >= 0; i--) {\n r[i] = f(as[i], r[i + 1]);\n }\n\n return r;\n };\n}\n/**\n * Test whether an array is empty\n *\n * @example\n * import { isEmpty } from 'fp-ts/ReadonlyArray'\n *\n * assert.strictEqual(isEmpty([]), true)\n *\n * @since 2.5.0\n */\n\nexport function isEmpty(as) {\n return as.length === 0;\n}\n/**\n * Test whether an array is non empty narrowing down the type to `NonEmptyReadonlyArray`\n *\n * @category guards\n * @since 2.5.0\n */\n\nexport function isNonEmpty(as) {\n return as.length > 0;\n}\n/**\n * Test whether an array contains a particular index\n *\n * @since 2.5.0\n */\n\nexport function isOutOfBound(i, as) {\n return i < 0 || i >= as.length;\n}\nexport function lookup(i, as) {\n return as === undefined ? function (as) {\n return lookup(i, as);\n } : isOutOfBound(i, as) ? O.none : O.some(as[i]);\n}\nexport function cons(head, tail) {\n if (tail === undefined) {\n return function (tail) {\n return cons(head, tail);\n };\n }\n\n var len = tail.length;\n var r = Array(len + 1);\n\n for (var i = 0; i < len; i++) {\n r[i + 1] = tail[i];\n }\n\n r[0] = head;\n return r;\n} // TODO: curry and make data-last in v3\n\n/**\n * Append an element to the end of an array, creating a new non empty array\n *\n * @example\n * import { snoc } from 'fp-ts/ReadonlyArray'\n *\n * assert.deepStrictEqual(snoc([1, 2, 3], 4), [1, 2, 3, 4])\n *\n * @category constructors\n * @since 2.5.0\n */\n\nexport function snoc(init, end) {\n var len = init.length;\n var r = Array(len + 1);\n\n for (var i = 0; i < len; i++) {\n r[i] = init[i];\n }\n\n r[len] = end;\n return r;\n}\n/**\n * Get the first element in an array, or `None` if the array is empty\n *\n * @example\n * import { head } from 'fp-ts/ReadonlyArray'\n * import { some, none } from 'fp-ts/Option'\n *\n * assert.deepStrictEqual(head([1, 2, 3]), some(1))\n * assert.deepStrictEqual(head([]), none)\n *\n * @since 2.5.0\n */\n\nexport function head(as) {\n return isEmpty(as) ? O.none : O.some(as[0]);\n}\n/**\n * Get the last element in an array, or `None` if the array is empty\n *\n * @example\n * import { last } from 'fp-ts/ReadonlyArray'\n * import { some, none } from 'fp-ts/Option'\n *\n * assert.deepStrictEqual(last([1, 2, 3]), some(3))\n * assert.deepStrictEqual(last([]), none)\n *\n * @since 2.5.0\n */\n\nexport function last(as) {\n return lookup(as.length - 1, as);\n}\n/**\n * Get all but the first element of an array, creating a new array, or `None` if the array is empty\n *\n * @example\n * import { tail } from 'fp-ts/ReadonlyArray'\n * import { some, none } from 'fp-ts/Option'\n *\n * assert.deepStrictEqual(tail([1, 2, 3]), some([2, 3]))\n * assert.deepStrictEqual(tail([]), none)\n *\n * @since 2.5.0\n */\n\nexport function tail(as) {\n return isEmpty(as) ? O.none : O.some(as.slice(1));\n}\n/**\n * Get all but the last element of an array, creating a new array, or `None` if the array is empty\n *\n * @example\n * import { init } from 'fp-ts/ReadonlyArray'\n * import { some, none } from 'fp-ts/Option'\n *\n * assert.deepStrictEqual(init([1, 2, 3]), some([1, 2]))\n * assert.deepStrictEqual(init([]), none)\n *\n * @since 2.5.0\n */\n\nexport function init(as) {\n var len = as.length;\n return len === 0 ? O.none : O.some(as.slice(0, len - 1));\n}\n/**\n * Keep only a number of elements from the start of an array, creating a new array.\n * `n` must be a natural number\n *\n * @example\n * import { takeLeft } from 'fp-ts/ReadonlyArray'\n *\n * assert.deepStrictEqual(takeLeft(2)([1, 2, 3]), [1, 2])\n *\n * @category combinators\n * @since 2.5.0\n */\n\nexport function takeLeft(n) {\n return function (as) {\n return as.slice(0, n);\n };\n}\n/**\n * Keep only a number of elements from the end of an array, creating a new array.\n * `n` must be a natural number\n *\n * @example\n * import { takeRight } from 'fp-ts/ReadonlyArray'\n *\n * assert.deepStrictEqual(takeRight(2)([1, 2, 3, 4, 5]), [4, 5])\n *\n * @since 2.5.0\n */\n\nexport function takeRight(n) {\n return function (as) {\n return n === 0 ? empty : as.slice(-n);\n };\n}\nexport function takeLeftWhile(predicate) {\n return function (as) {\n var i = spanIndexUncurry(as, predicate);\n var init = Array(i);\n\n for (var j = 0; j < i; j++) {\n init[j] = as[j];\n }\n\n return init;\n };\n}\n\nvar spanIndexUncurry = function spanIndexUncurry(as, predicate) {\n var l = as.length;\n var i = 0;\n\n for (; i < l; i++) {\n if (!predicate(as[i])) {\n break;\n }\n }\n\n return i;\n};\n\nexport function spanLeft(predicate) {\n return function (as) {\n var i = spanIndexUncurry(as, predicate);\n var init = Array(i);\n\n for (var j = 0; j < i; j++) {\n init[j] = as[j];\n }\n\n var l = as.length;\n var rest = Array(l - i);\n\n for (var j = i; j < l; j++) {\n rest[j - i] = as[j];\n }\n\n return {\n init: init,\n rest: rest\n };\n };\n}\n/**\n * Drop a number of elements from the start of an array, creating a new array\n *\n * @example\n * import { dropLeft } from 'fp-ts/ReadonlyArray'\n *\n * assert.deepStrictEqual(dropLeft(2)([1, 2, 3]), [3])\n *\n * @category combinators\n * @since 2.5.0\n */\n\nexport function dropLeft(n) {\n return function (as) {\n return as.slice(n, as.length);\n };\n}\n/**\n * Drop a number of elements from the end of an array, creating a new array\n *\n * @example\n * import { dropRight } from 'fp-ts/ReadonlyArray'\n *\n * assert.deepStrictEqual(dropRight(2)([1, 2, 3, 4, 5]), [1, 2, 3])\n *\n * @category combinators\n * @since 2.5.0\n */\n\nexport function dropRight(n) {\n return function (as) {\n return as.slice(0, as.length - n);\n };\n}\n/**\n * Remove the longest initial subarray for which all element satisfy the specified predicate, creating a new array\n *\n * @example\n * import { dropLeftWhile } from 'fp-ts/ReadonlyArray'\n *\n * assert.deepStrictEqual(dropLeftWhile((n: number) => n % 2 === 1)([1, 3, 2, 4, 5]), [2, 4, 5])\n *\n * @category combinators\n * @since 2.5.0\n */\n\nexport function dropLeftWhile(predicate) {\n return function (as) {\n var i = spanIndexUncurry(as, predicate);\n var l = as.length;\n var rest = Array(l - i);\n\n for (var j = i; j < l; j++) {\n rest[j - i] = as[j];\n }\n\n return rest;\n };\n}\n/**\n * Find the first index for which a predicate holds\n *\n * @example\n * import { findIndex } from 'fp-ts/ReadonlyArray'\n * import { some, none } from 'fp-ts/Option'\n *\n * assert.deepStrictEqual(findIndex((n: number) => n === 2)([1, 2, 3]), some(1))\n * assert.deepStrictEqual(findIndex((n: number) => n === 2)([]), none)\n *\n * @since 2.5.0\n */\n\nexport function findIndex(predicate) {\n return function (as) {\n var len = as.length;\n\n for (var i = 0; i < len; i++) {\n if (predicate(as[i])) {\n return O.some(i);\n }\n }\n\n return O.none;\n };\n}\nexport function findFirst(predicate) {\n return function (as) {\n var len = as.length;\n\n for (var i = 0; i < len; i++) {\n if (predicate(as[i])) {\n return O.some(as[i]);\n }\n }\n\n return O.none;\n };\n}\n/**\n * Find the first element returned by an option based selector function\n *\n * @example\n * import { findFirstMap } from 'fp-ts/ReadonlyArray'\n * import { some, none } from 'fp-ts/Option'\n *\n * interface Person {\n * name: string\n * age?: number\n * }\n *\n * const persons: ReadonlyArray = [{ name: 'John' }, { name: 'Mary', age: 45 }, { name: 'Joey', age: 28 }]\n *\n * // returns the name of the first person that has an age\n * assert.deepStrictEqual(findFirstMap((p: Person) => (p.age === undefined ? none : some(p.name)))(persons), some('Mary'))\n *\n * @since 2.5.0\n */\n\nexport function findFirstMap(f) {\n return function (as) {\n var len = as.length;\n\n for (var i = 0; i < len; i++) {\n var v = f(as[i]);\n\n if (O.isSome(v)) {\n return v;\n }\n }\n\n return O.none;\n };\n}\nexport function findLast(predicate) {\n return function (as) {\n var len = as.length;\n\n for (var i = len - 1; i >= 0; i--) {\n if (predicate(as[i])) {\n return O.some(as[i]);\n }\n }\n\n return O.none;\n };\n}\n/**\n * Find the last element returned by an option based selector function\n *\n * @example\n * import { findLastMap } from 'fp-ts/ReadonlyArray'\n * import { some, none } from 'fp-ts/Option'\n *\n * interface Person {\n * name: string\n * age?: number\n * }\n *\n * const persons: ReadonlyArray = [{ name: 'John' }, { name: 'Mary', age: 45 }, { name: 'Joey', age: 28 }]\n *\n * // returns the name of the last person that has an age\n * assert.deepStrictEqual(findLastMap((p: Person) => (p.age === undefined ? none : some(p.name)))(persons), some('Joey'))\n *\n * @since 2.5.0\n */\n\nexport function findLastMap(f) {\n return function (as) {\n var len = as.length;\n\n for (var i = len - 1; i >= 0; i--) {\n var v = f(as[i]);\n\n if (O.isSome(v)) {\n return v;\n }\n }\n\n return O.none;\n };\n}\n/**\n * Returns the index of the last element of the list which matches the predicate\n *\n * @example\n * import { findLastIndex } from 'fp-ts/ReadonlyArray'\n * import { some, none } from 'fp-ts/Option'\n *\n * interface X {\n * a: number\n * b: number\n * }\n * const xs: ReadonlyArray = [{ a: 1, b: 0 }, { a: 1, b: 1 }]\n * assert.deepStrictEqual(findLastIndex((x: { a: number }) => x.a === 1)(xs), some(1))\n * assert.deepStrictEqual(findLastIndex((x: { a: number }) => x.a === 4)(xs), none)\n *\n *\n * @since 2.5.0\n */\n\nexport function findLastIndex(predicate) {\n return function (as) {\n var len = as.length;\n\n for (var i = len - 1; i >= 0; i--) {\n if (predicate(as[i])) {\n return O.some(i);\n }\n }\n\n return O.none;\n };\n}\n/**\n * Insert an element at the specified index, creating a new array, or returning `None` if the index is out of bounds\n *\n * @example\n * import { insertAt } from 'fp-ts/ReadonlyArray'\n * import { some } from 'fp-ts/Option'\n *\n * assert.deepStrictEqual(insertAt(2, 5)([1, 2, 3, 4]), some([1, 2, 5, 3, 4]))\n *\n * @since 2.5.0\n */\n\nexport function insertAt(i, a) {\n return function (as) {\n return i < 0 || i > as.length ? O.none : O.some(unsafeInsertAt(i, a, as));\n };\n}\n/**\n * Change the element at the specified index, creating a new array, or returning `None` if the index is out of bounds\n *\n * @example\n * import { updateAt } from 'fp-ts/ReadonlyArray'\n * import { some, none } from 'fp-ts/Option'\n *\n * assert.deepStrictEqual(updateAt(1, 1)([1, 2, 3]), some([1, 1, 3]))\n * assert.deepStrictEqual(updateAt(1, 1)([]), none)\n *\n * @since 2.5.0\n */\n\nexport function updateAt(i, a) {\n return function (as) {\n return isOutOfBound(i, as) ? O.none : O.some(unsafeUpdateAt(i, a, as));\n };\n}\n/**\n * Delete the element at the specified index, creating a new array, or returning `None` if the index is out of bounds\n *\n * @example\n * import { deleteAt } from 'fp-ts/ReadonlyArray'\n * import { some, none } from 'fp-ts/Option'\n *\n * assert.deepStrictEqual(deleteAt(0)([1, 2, 3]), some([2, 3]))\n * assert.deepStrictEqual(deleteAt(1)([]), none)\n *\n * @since 2.5.0\n */\n\nexport function deleteAt(i) {\n return function (as) {\n return isOutOfBound(i, as) ? O.none : O.some(unsafeDeleteAt(i, as));\n };\n}\n/**\n * Apply a function to the element at the specified index, creating a new array, or returning `None` if the index is out\n * of bounds\n *\n * @example\n * import { modifyAt } from 'fp-ts/ReadonlyArray'\n * import { some, none } from 'fp-ts/Option'\n *\n * const double = (x: number): number => x * 2\n * assert.deepStrictEqual(modifyAt(1, double)([1, 2, 3]), some([1, 4, 3]))\n * assert.deepStrictEqual(modifyAt(1, double)([]), none)\n *\n * @since 2.5.0\n */\n\nexport function modifyAt(i, f) {\n return function (as) {\n return isOutOfBound(i, as) ? O.none : O.some(unsafeUpdateAt(i, f(as[i]), as));\n };\n}\n/**\n * Reverse an array, creating a new array\n *\n * @example\n * import { reverse } from 'fp-ts/ReadonlyArray'\n *\n * assert.deepStrictEqual(reverse([1, 2, 3]), [3, 2, 1])\n *\n * @category combinators\n * @since 2.5.0\n */\n\nexport function reverse(as) {\n if (isEmpty(as)) {\n return as;\n }\n\n return as.slice().reverse();\n}\n/**\n * Extracts from an array of `Either` all the `Right` elements. All the `Right` elements are extracted in order\n *\n * @example\n * import { rights } from 'fp-ts/ReadonlyArray'\n * import { right, left } from 'fp-ts/Either'\n *\n * assert.deepStrictEqual(rights([right(1), left('foo'), right(2)]), [1, 2])\n *\n * @category combinators\n * @since 2.5.0\n */\n\nexport function rights(as) {\n // tslint:disable-next-line: readonly-array\n var r = [];\n var len = as.length;\n\n for (var i = 0; i < len; i++) {\n var a = as[i];\n\n if (a._tag === 'Right') {\n r.push(a.right);\n }\n }\n\n return r;\n}\n/**\n * Extracts from an array of `Either` all the `Left` elements. All the `Left` elements are extracted in order\n *\n * @example\n * import { lefts } from 'fp-ts/ReadonlyArray'\n * import { left, right } from 'fp-ts/Either'\n *\n * assert.deepStrictEqual(lefts([right(1), left('foo'), right(2)]), ['foo'])\n *\n * @since 2.5.0\n */\n\nexport function lefts(as) {\n // tslint:disable-next-line: readonly-array\n var r = [];\n var len = as.length;\n\n for (var i = 0; i < len; i++) {\n var a = as[i];\n\n if (a._tag === 'Left') {\n r.push(a.left);\n }\n }\n\n return r;\n}\n/**\n * Sort the elements of an array in increasing order, creating a new array\n *\n * @example\n * import { sort } from 'fp-ts/ReadonlyArray'\n * import { ordNumber } from 'fp-ts/Ord'\n *\n * assert.deepStrictEqual(sort(ordNumber)([3, 2, 1]), [1, 2, 3])\n *\n * @category combinators\n * @since 2.5.0\n */\n\nexport var sort = function sort(O) {\n return function (as) {\n return as.length <= 1 ? as : as.slice().sort(O.compare);\n };\n}; // TODO: curry and make data-last in v3\n\n/**\n * Apply a function to pairs of elements at the same index in two arrays, collecting the results in a new array. If one\n * input array is short, excess elements of the longer array are discarded.\n *\n * @example\n * import { zipWith } from 'fp-ts/ReadonlyArray'\n *\n * assert.deepStrictEqual(zipWith([1, 2, 3], ['a', 'b', 'c', 'd'], (n, s) => s + n), ['a1', 'b2', 'c3'])\n *\n * @category combinators\n * @since 2.5.0\n */\n\nexport function zipWith(fa, fb, f) {\n // tslint:disable-next-line: readonly-array\n var fc = [];\n var len = Math.min(fa.length, fb.length);\n\n for (var i = 0; i < len; i++) {\n fc[i] = f(fa[i], fb[i]);\n }\n\n return fc;\n}\nexport function zip(as, bs) {\n if (bs === undefined) {\n return function (bs) {\n return zip(bs, as);\n };\n }\n\n return zipWith(as, bs, function (a, b) {\n return [a, b];\n });\n}\n/**\n * The function is reverse of `zip`. Takes an array of pairs and return two corresponding arrays\n *\n * @example\n * import { unzip } from 'fp-ts/ReadonlyArray'\n *\n * assert.deepStrictEqual(unzip([[1, 'a'], [2, 'b'], [3, 'c']]), [[1, 2, 3], ['a', 'b', 'c']])\n *\n * @since 2.5.0\n */\n\nexport function unzip(as) {\n // tslint:disable-next-line: readonly-array\n var fa = []; // tslint:disable-next-line: readonly-array\n\n var fb = [];\n\n for (var i = 0; i < as.length; i++) {\n fa[i] = as[i][0];\n fb[i] = as[i][1];\n }\n\n return [fa, fb];\n}\n/**\n * Prepend an element to every member of an array\n *\n * @example\n * import { prependToAll } from 'fp-ts/ReadonlyArray'\n *\n * assert.deepStrictEqual(prependToAll(9)([1, 2, 3, 4]), [9, 1, 9, 2, 9, 3, 9, 4])\n *\n * @category combinators\n * @since 2.9.0\n */\n\nexport var prependToAll = function prependToAll(e) {\n return function (xs) {\n // tslint:disable-next-line: readonly-array\n var ys = [];\n\n for (var _i = 0, xs_1 = xs; _i < xs_1.length; _i++) {\n var x = xs_1[_i];\n ys.push(e, x);\n }\n\n return ys;\n };\n};\n/**\n * Places an element in between members of an array\n *\n * @example\n * import { intersperse } from 'fp-ts/ReadonlyArray'\n *\n * assert.deepStrictEqual(intersperse(9)([1, 2, 3, 4]), [1, 9, 2, 9, 3, 9, 4])\n *\n * @category combinators\n * @since 2.9.0\n */\n\nexport function intersperse(e) {\n return function (as) {\n var length = as.length;\n\n if (length === 0) {\n return as;\n }\n\n return cons(as[0], prependToAll(e)(as.slice(1, as.length)));\n };\n}\n/**\n * Rotate an array to the right by `n` steps\n *\n * @example\n * import { rotate } from 'fp-ts/ReadonlyArray'\n *\n * assert.deepStrictEqual(rotate(2)([1, 2, 3, 4, 5]), [4, 5, 1, 2, 3])\n *\n * @category combinators\n * @since 2.5.0\n */\n\nexport function rotate(n) {\n return function (as) {\n var len = as.length;\n\n if (n === 0 || len <= 1 || len === Math.abs(n)) {\n return as;\n } else if (n < 0) {\n return rotate(len + n)(as);\n } else {\n return as.slice(-n).concat(as.slice(0, len - n));\n }\n };\n}\nexport function elem(E) {\n return function (a, as) {\n if (as === undefined) {\n var elemE_1 = elem(E);\n return function (as) {\n return elemE_1(a, as);\n };\n }\n\n var predicate = function predicate(element) {\n return E.equals(element, a);\n };\n\n var i = 0;\n var len = as.length;\n\n for (; i < len; i++) {\n if (predicate(as[i])) {\n return true;\n }\n }\n\n return false;\n };\n}\n/**\n * Remove duplicates from an array, keeping the first occurrence of an element.\n *\n * @example\n * import { uniq } from 'fp-ts/ReadonlyArray'\n * import { eqNumber } from 'fp-ts/Eq'\n *\n * assert.deepStrictEqual(uniq(eqNumber)([1, 2, 1]), [1, 2])\n *\n * @category combinators\n * @since 2.5.0\n */\n\nexport function uniq(E) {\n var elemS = elem(E);\n return function (as) {\n var len = as.length;\n\n if (len <= 1) {\n return as;\n } // tslint:disable-next-line: readonly-array\n\n\n var r = [];\n var i = 0;\n\n for (; i < len; i++) {\n var a = as[i];\n\n if (!elemS(a, r)) {\n r.push(a);\n }\n }\n\n return len === r.length ? as : r;\n };\n}\n/**\n * Sort the elements of an array in increasing order, where elements are compared using first `ords[0]`, then `ords[1]`,\n * etc...\n *\n * @example\n * import { sortBy } from 'fp-ts/ReadonlyArray'\n * import { ord, ordString, ordNumber } from 'fp-ts/Ord'\n *\n * interface Person {\n * name: string\n * age: number\n * }\n * const byName = ord.contramap(ordString, (p: Person) => p.name)\n * const byAge = ord.contramap(ordNumber, (p: Person) => p.age)\n *\n * const sortByNameByAge = sortBy([byName, byAge])\n *\n * const persons = [{ name: 'a', age: 1 }, { name: 'b', age: 3 }, { name: 'c', age: 2 }, { name: 'b', age: 2 }]\n * assert.deepStrictEqual(sortByNameByAge(persons), [\n * { name: 'a', age: 1 },\n * { name: 'b', age: 2 },\n * { name: 'b', age: 3 },\n * { name: 'c', age: 2 }\n * ])\n *\n * @category combinators\n * @since 2.5.0\n */\n\nexport function sortBy(ords) {\n var M = getOrdMonoid();\n return sort(ords.reduce(M.concat, M.empty));\n}\n/**\n * A useful recursion pattern for processing an array to produce a new array, often used for \"chopping\" up the input\n * array. Typically chop is called with some function that will consume an initial prefix of the array and produce a\n * value and the rest of the array.\n *\n * @example\n * import { Eq, eqNumber } from 'fp-ts/Eq'\n * import { chop, spanLeft } from 'fp-ts/ReadonlyArray'\n *\n * const group = (S: Eq): ((as: ReadonlyArray) => ReadonlyArray>) => {\n * return chop(as => {\n * const { init, rest } = spanLeft((a: A) => S.equals(a, as[0]))(as)\n * return [init, rest]\n * })\n * }\n * assert.deepStrictEqual(group(eqNumber)([1, 1, 2, 3, 3, 4]), [[1, 1], [2], [3, 3], [4]])\n *\n * @category combinators\n * @since 2.5.0\n */\n\nexport var chop = function chop(f) {\n return function (as) {\n // tslint:disable-next-line: readonly-array\n var result = [];\n var cs = as;\n\n while (isNonEmpty(cs)) {\n var _a = f(cs),\n b = _a[0],\n c = _a[1];\n\n result.push(b);\n cs = c;\n }\n\n return result;\n };\n};\n/**\n * Splits an array into two pieces, the first piece has `n` elements.\n *\n * @example\n * import { splitAt } from 'fp-ts/ReadonlyArray'\n *\n * assert.deepStrictEqual(splitAt(2)([1, 2, 3, 4, 5]), [[1, 2], [3, 4, 5]])\n *\n * @since 2.5.0\n */\n\nexport function splitAt(n) {\n return function (as) {\n return [as.slice(0, n), as.slice(n)];\n };\n}\n/**\n * Splits an array into length-`n` pieces. The last piece will be shorter if `n` does not evenly divide the length of\n * the array. Note that `chunksOf(n)([])` is `[]`, not `[[]]`. This is intentional, and is consistent with a recursive\n * definition of `chunksOf`; it satisfies the property that\n *\n * ```ts\n * chunksOf(n)(xs).concat(chunksOf(n)(ys)) == chunksOf(n)(xs.concat(ys)))\n * ```\n *\n * whenever `n` evenly divides the length of `xs`.\n *\n * @example\n * import { chunksOf } from 'fp-ts/ReadonlyArray'\n *\n * assert.deepStrictEqual(chunksOf(2)([1, 2, 3, 4, 5]), [[1, 2], [3, 4], [5]])\n *\n *\n * @since 2.5.0\n */\n\nexport function chunksOf(n) {\n var f = chop(splitAt(n));\n return function (as) {\n return as.length === 0 ? empty : isOutOfBound(n - 1, as) ? [as] : f(as);\n };\n}\nexport function comprehension(input, f, g) {\n if (g === void 0) {\n g = function g() {\n return true;\n };\n }\n\n var go = function go(scope, input) {\n if (input.length === 0) {\n return g.apply(void 0, scope) ? [f.apply(void 0, scope)] : empty;\n } else {\n return chain_(input[0], function (x) {\n return go(snoc(scope, x), input.slice(1));\n });\n }\n };\n\n return go(empty, input);\n}\nexport function union(E) {\n var elemE = elem(E);\n return function (xs, ys) {\n if (ys === undefined) {\n var unionE_1 = union(E);\n return function (ys) {\n return unionE_1(ys, xs);\n };\n }\n\n return concat(xs, ys.filter(function (a) {\n return !elemE(a, xs);\n }));\n };\n}\nexport function intersection(E) {\n var elemE = elem(E);\n return function (xs, ys) {\n if (ys === undefined) {\n var intersectionE_1 = intersection(E);\n return function (ys) {\n return intersectionE_1(ys, xs);\n };\n }\n\n return xs.filter(function (a) {\n return elemE(a, ys);\n });\n };\n}\nexport function difference(E) {\n var elemE = elem(E);\n return function (xs, ys) {\n if (ys === undefined) {\n var differenceE_1 = difference(E);\n return function (ys) {\n return differenceE_1(ys, xs);\n };\n }\n\n return xs.filter(function (a) {\n return !elemE(a, ys);\n });\n };\n}\n/**\n * Wrap a value into the type constructor.\n *\n * @category Applicative\n * @since 2.5.0\n */\n\nexport var of = function of(a) {\n return [a];\n};\n/**\n * @category Alternative\n * @since 2.7.0\n */\n\nexport var zero = function zero() {\n return empty;\n}; // -------------------------------------------------------------------------------------\n// non-pipeables\n// -------------------------------------------------------------------------------------\n\nvar map_ = function map_(fa, f) {\n return pipe(fa, map(f));\n};\n\nvar mapWithIndex_ = function mapWithIndex_(fa, f) {\n return pipe(fa, mapWithIndex(f));\n};\n\nvar ap_ = function ap_(fab, fa) {\n return pipe(fab, ap(fa));\n};\n\nvar chain_ = function chain_(ma, f) {\n return pipe(ma, chain(f));\n};\n\nvar filter_ = function filter_(fa, predicate) {\n return pipe(fa, filter(predicate));\n};\n\nvar filterMap_ = function filterMap_(fa, f) {\n return pipe(fa, filterMap(f));\n};\n\nvar partitionWithIndex_ = function partitionWithIndex_(fa, predicateWithIndex) {\n return pipe(fa, partitionWithIndex(predicateWithIndex));\n};\n\nvar partition_ = function partition_(fa, predicate) {\n return pipe(fa, partition(predicate));\n};\n\nvar partitionMap_ = function partitionMap_(fa, f) {\n return pipe(fa, partitionMap(f));\n};\n\nvar partitionMapWithIndex_ = function partitionMapWithIndex_(fa, f) {\n return pipe(fa, partitionMapWithIndex(f));\n};\n\nvar alt_ = function alt_(fa, that) {\n return pipe(fa, alt(that));\n};\n\nvar reduce_ = function reduce_(fa, b, f) {\n return pipe(fa, reduce(b, f));\n};\n\nvar foldMap_ = function foldMap_(M) {\n var foldMapM = foldMap(M);\n return function (fa, f) {\n return pipe(fa, foldMapM(f));\n };\n};\n\nvar reduceRight_ = function reduceRight_(fa, b, f) {\n return pipe(fa, reduceRight(b, f));\n};\n\nvar reduceWithIndex_ = function reduceWithIndex_(fa, b, f) {\n var l = fa.length;\n var r = b;\n\n for (var i = 0; i < l; i++) {\n r = f(i, r, fa[i]);\n }\n\n return r;\n};\n\nvar foldMapWithIndex_ = function foldMapWithIndex_(M) {\n return function (fa, f) {\n return fa.reduce(function (b, a, i) {\n return M.concat(b, f(i, a));\n }, M.empty);\n };\n};\n\nvar reduceRightWithIndex_ = function reduceRightWithIndex_(fa, b, f) {\n return pipe(fa, reduceRightWithIndex(b, f));\n};\n\nvar filterMapWithIndex_ = function filterMapWithIndex_(fa, f) {\n return pipe(fa, filterMapWithIndex(f));\n};\n\nvar filterWithIndex_ = function filterWithIndex_(fa, predicateWithIndex) {\n return pipe(fa, filterWithIndex(predicateWithIndex));\n};\n\nvar extend_ = function extend_(fa, f) {\n return pipe(fa, extend(f));\n};\n\nvar traverse_ = function traverse_(F) {\n var traverseF = traverse(F);\n return function (ta, f) {\n return pipe(ta, traverseF(f));\n };\n};\n/* istanbul ignore next */\n\n\nvar traverseWithIndex_ = function traverseWithIndex_(F) {\n var traverseWithIndexF = traverseWithIndex(F);\n return function (ta, f) {\n return pipe(ta, traverseWithIndexF(f));\n };\n};\n/* istanbul ignore next */\n\n\nvar wither_ = function wither_(F) {\n var witherF = wither(F);\n return function (fa, f) {\n return pipe(fa, witherF(f));\n };\n};\n/* istanbul ignore next */\n\n\nvar wilt_ = function wilt_(F) {\n var wiltF = wilt(F);\n return function (fa, f) {\n return pipe(fa, wiltF(f));\n };\n}; // -------------------------------------------------------------------------------------\n// pipeables\n// -------------------------------------------------------------------------------------\n\n/**\n * Less strict version of [`alt`](#alt).\n *\n * @category Alt\n * @since 2.9.0\n */\n\n\nexport var altW = function altW(that) {\n return function (fa) {\n return concat(fa, that());\n };\n};\n/**\n * Identifies an associative operation on a type constructor. It is similar to `Semigroup`, except that it applies to\n * types of kind `* -> *`.\n *\n * @category Alt\n * @since 2.5.0\n */\n\nexport var alt = altW;\n/**\n * Apply a function to an argument under a type constructor.\n *\n * @category Apply\n * @since 2.5.0\n */\n\nexport var ap = function ap(fa) {\n return chain(function (f) {\n return pipe(fa, map(f));\n });\n};\n/**\n * Combine two effectful actions, keeping only the result of the first.\n *\n * Derivable from `Apply`.\n *\n * @category combinators\n * @since 2.5.0\n */\n\nexport var apFirst = function apFirst(fb) {\n return flow(map(function (a) {\n return function () {\n return a;\n };\n }), ap(fb));\n};\n/**\n * Combine two effectful actions, keeping only the result of the second.\n *\n * Derivable from `Apply`.\n *\n * @category combinators\n * @since 2.5.0\n */\n\nexport var apSecond = function apSecond(fb) {\n return flow(map(function () {\n return function (b) {\n return b;\n };\n }), ap(fb));\n};\n/**\n * Composes computations in sequence, using the return value of one computation to determine the next computation.\n *\n * @category Monad\n * @since 2.5.0\n */\n\nexport var chain = function chain(f) {\n return function (ma) {\n return pipe(ma, chainWithIndex(function (_, a) {\n return f(a);\n }));\n };\n};\n/**\n * @since 2.7.0\n */\n\nexport var chainWithIndex = function chainWithIndex(f) {\n return function (ma) {\n var outLen = 0;\n var l = ma.length;\n var temp = new Array(l);\n\n for (var i = 0; i < l; i++) {\n var e = ma[i];\n var arr = f(i, e);\n outLen += arr.length;\n temp[i] = arr;\n }\n\n var out = Array(outLen);\n var start = 0;\n\n for (var i = 0; i < l; i++) {\n var arr = temp[i];\n var l_1 = arr.length;\n\n for (var j = 0; j < l_1; j++) {\n out[j + start] = arr[j];\n }\n\n start += l_1;\n }\n\n return out;\n };\n};\n/**\n * Composes computations in sequence, using the return value of one computation to determine the next computation and\n * keeping only the result of the first.\n *\n * Derivable from `Monad`.\n *\n * @category combinators\n * @since 2.5.0\n */\n\nexport var chainFirst = function chainFirst(f) {\n return chain(function (a) {\n return pipe(f(a), map(function () {\n return a;\n }));\n });\n};\n/**\n * `map` can be used to turn functions `(a: A) => B` into functions `(fa: F) => F` whose argument and return types\n * use the type constructor `F` to represent some computational context.\n *\n * @category Functor\n * @since 2.5.0\n */\n\nexport var map = function map(f) {\n return function (fa) {\n return fa.map(function (a) {\n return f(a);\n });\n };\n};\n/**\n * @category FunctorWithIndex\n * @since 2.5.0\n */\n\nexport var mapWithIndex = function mapWithIndex(f) {\n return function (fa) {\n return fa.map(function (a, i) {\n return f(i, a);\n });\n };\n};\n/**\n * @category Compactable\n * @since 2.5.0\n */\n\nexport var separate = function separate(fa) {\n // tslint:disable-next-line: readonly-array\n var left = []; // tslint:disable-next-line: readonly-array\n\n var right = [];\n\n for (var _i = 0, fa_1 = fa; _i < fa_1.length; _i++) {\n var e = fa_1[_i];\n\n if (e._tag === 'Left') {\n left.push(e.left);\n } else {\n right.push(e.right);\n }\n }\n\n return {\n left: left,\n right: right\n };\n};\n/**\n * @category Filterable\n * @since 2.5.0\n */\n\nexport var filter = function filter(predicate) {\n return function (fa) {\n return fa.filter(predicate);\n };\n};\n/**\n * @category FilterableWithIndex\n * @since 2.5.0\n */\n\nexport var filterMapWithIndex = function filterMapWithIndex(f) {\n return function (fa) {\n // tslint:disable-next-line: readonly-array\n var result = [];\n\n for (var i = 0; i < fa.length; i++) {\n var optionB = f(i, fa[i]);\n\n if (O.isSome(optionB)) {\n result.push(optionB.value);\n }\n }\n\n return result;\n };\n};\n/**\n * @category Filterable\n * @since 2.5.0\n */\n\nexport var filterMap = function filterMap(f) {\n return filterMapWithIndex(function (_, a) {\n return f(a);\n });\n};\n/**\n * @category Compactable\n * @since 2.5.0\n */\n\nexport var compact =\n/*#__PURE__*/\nfilterMap(identity);\n/**\n * @category Filterable\n * @since 2.5.0\n */\n\nexport var partition = function partition(predicate) {\n return partitionWithIndex(function (_, a) {\n return predicate(a);\n });\n};\n/**\n * @category FilterableWithIndex\n * @since 2.5.0\n */\n\nexport var partitionWithIndex = function partitionWithIndex(predicateWithIndex) {\n return function (fa) {\n // tslint:disable-next-line: readonly-array\n var left = []; // tslint:disable-next-line: readonly-array\n\n var right = [];\n\n for (var i = 0; i < fa.length; i++) {\n var a = fa[i];\n\n if (predicateWithIndex(i, a)) {\n right.push(a);\n } else {\n left.push(a);\n }\n }\n\n return {\n left: left,\n right: right\n };\n };\n};\n/**\n * @category Filterable\n * @since 2.5.0\n */\n\nexport var partitionMap = function partitionMap(f) {\n return partitionMapWithIndex(function (_, a) {\n return f(a);\n });\n};\n/**\n * @category FilterableWithIndex\n * @since 2.5.0\n */\n\nexport var partitionMapWithIndex = function partitionMapWithIndex(f) {\n return function (fa) {\n // tslint:disable-next-line: readonly-array\n var left = []; // tslint:disable-next-line: readonly-array\n\n var right = [];\n\n for (var i = 0; i < fa.length; i++) {\n var e = f(i, fa[i]);\n\n if (e._tag === 'Left') {\n left.push(e.left);\n } else {\n right.push(e.right);\n }\n }\n\n return {\n left: left,\n right: right\n };\n };\n};\n/**\n * @category FilterableWithIndex\n * @since 2.5.0\n */\n\nexport var filterWithIndex = function filterWithIndex(predicateWithIndex) {\n return function (fa) {\n return fa.filter(function (a, i) {\n return predicateWithIndex(i, a);\n });\n };\n};\n/**\n * @category Extend\n * @since 2.5.0\n */\n\nexport var extend = function extend(f) {\n return function (wa) {\n return wa.map(function (_, i, as) {\n return f(as.slice(i));\n });\n };\n};\n/**\n * Derivable from `Extend`.\n *\n * @category combinators\n * @since 2.5.0\n */\n\nexport var duplicate =\n/*#__PURE__*/\nextend(identity);\n/**\n * @category FoldableWithIndex\n * @since 2.5.0\n */\n\nexport var foldMapWithIndex = function foldMapWithIndex(M) {\n var foldMapWithIndexM = foldMapWithIndex_(M);\n return function (f) {\n return function (fa) {\n return foldMapWithIndexM(fa, f);\n };\n };\n};\n/**\n * @category Foldable\n * @since 2.5.0\n */\n\nexport var reduce = function reduce(b, f) {\n return reduceWithIndex(b, function (_, b, a) {\n return f(b, a);\n });\n};\n/**\n * @category Foldable\n * @since 2.5.0\n */\n\nexport var foldMap = function foldMap(M) {\n var foldMapWithIndexM = foldMapWithIndex(M);\n return function (f) {\n return foldMapWithIndexM(function (_, a) {\n return f(a);\n });\n };\n};\n/**\n * @category FoldableWithIndex\n * @since 2.5.0\n */\n\nexport var reduceWithIndex = function reduceWithIndex(b, f) {\n return function (fa) {\n return reduceWithIndex_(fa, b, f);\n };\n};\n/**\n * @category Foldable\n * @since 2.5.0\n */\n\nexport var reduceRight = function reduceRight(b, f) {\n return reduceRightWithIndex(b, function (_, a, b) {\n return f(a, b);\n });\n};\n/**\n * @category FoldableWithIndex\n * @since 2.5.0\n */\n\nexport var reduceRightWithIndex = function reduceRightWithIndex(b, f) {\n return function (fa) {\n return fa.reduceRight(function (b, a, i) {\n return f(i, a, b);\n }, b);\n };\n};\n/**\n * **for optimized and stack safe version check the data types `traverseArray` function**\n * @category Traversable\n * @since 2.6.3\n */\n\nexport var traverse = function traverse(F) {\n var traverseWithIndexF = traverseWithIndex(F);\n return function (f) {\n return traverseWithIndexF(function (_, a) {\n return f(a);\n });\n };\n};\n/**\n * **for optimized and stack safe version check the data types `sequenceArray` function**\n * @category Traversable\n * @since 2.6.3\n */\n\nexport var sequence = function sequence(F) {\n return function (ta) {\n return reduce_(ta, F.of(zero()), function (fas, fa) {\n return F.ap(F.map(fas, function (as) {\n return function (a) {\n return snoc(as, a);\n };\n }), fa);\n });\n };\n};\n/**\n * **for optimized and stack safe version check the data types `traverseArrayWithIndex` function**\n * @category TraversableWithIndex\n * @since 2.6.3\n */\n\nexport var traverseWithIndex = function traverseWithIndex(F) {\n return function (f) {\n return reduceWithIndex(F.of(zero()), function (i, fbs, a) {\n return F.ap(F.map(fbs, function (bs) {\n return function (b) {\n return snoc(bs, b);\n };\n }), f(i, a));\n });\n };\n};\n/**\n * @category Witherable\n * @since 2.6.5\n */\n\nexport var wither = function wither(F) {\n var traverseF = traverse(F);\n return function (f) {\n return function (fa) {\n return F.map(pipe(fa, traverseF(f)), compact);\n };\n };\n};\n/**\n * @category Witherable\n * @since 2.6.5\n */\n\nexport var wilt = function wilt(F) {\n var traverseF = traverse(F);\n return function (f) {\n return function (fa) {\n return F.map(pipe(fa, traverseF(f)), separate);\n };\n };\n};\n/**\n * @category Unfoldable\n * @since 2.6.6\n */\n\nexport var unfold = function unfold(b, f) {\n // tslint:disable-next-line: readonly-array\n var ret = [];\n var bb = b;\n\n while (true) {\n var mt = f(bb);\n\n if (O.isSome(mt)) {\n var _a = mt.value,\n a = _a[0],\n b_1 = _a[1];\n ret.push(a);\n bb = b_1;\n } else {\n break;\n }\n }\n\n return ret;\n}; // -------------------------------------------------------------------------------------\n// instances\n// -------------------------------------------------------------------------------------\n\n/**\n * @category instances\n * @since 2.5.0\n */\n\nexport var URI = 'ReadonlyArray';\n/**\n * @category instances\n * @since 2.7.0\n */\n\nexport var Functor = {\n URI: URI,\n map: map_\n};\n/**\n * @category instances\n * @since 2.7.0\n */\n\nexport var FunctorWithIndex = {\n URI: URI,\n map: map_,\n mapWithIndex: mapWithIndex_\n};\n/**\n * @category instances\n * @since 2.7.0\n */\n\nexport var Applicative = {\n URI: URI,\n map: map_,\n ap: ap_,\n of: of\n};\n/**\n * @category instances\n * @since 2.7.0\n */\n\nexport var Monad = {\n URI: URI,\n map: map_,\n ap: ap_,\n of: of,\n chain: chain_\n};\n/**\n * @category instances\n * @since 2.7.0\n */\n\nexport var Unfoldable = {\n URI: URI,\n unfold: unfold\n};\n/**\n * @category instances\n * @since 2.7.0\n */\n\nexport var Alt = {\n URI: URI,\n map: map_,\n alt: alt_\n};\n/**\n * @category instances\n * @since 2.7.0\n */\n\nexport var Alternative = {\n URI: URI,\n map: map_,\n ap: ap_,\n of: of,\n alt: alt_,\n zero: zero\n};\n/**\n * @category instances\n * @since 2.7.0\n */\n\nexport var Extend = {\n URI: URI,\n map: map_,\n extend: extend_\n};\n/**\n * @category instances\n * @since 2.7.0\n */\n\nexport var Compactable = {\n URI: URI,\n compact: compact,\n separate: separate\n};\n/**\n * @category instances\n * @since 2.7.0\n */\n\nexport var Filterable = {\n URI: URI,\n map: map_,\n compact: compact,\n separate: separate,\n filter: filter_,\n filterMap: filterMap_,\n partition: partition_,\n partitionMap: partitionMap_\n};\n/**\n * @category instances\n * @since 2.7.0\n */\n\nexport var FilterableWithIndex = {\n URI: URI,\n map: map_,\n mapWithIndex: mapWithIndex_,\n compact: compact,\n separate: separate,\n filter: filter_,\n filterMap: filterMap_,\n partition: partition_,\n partitionMap: partitionMap_,\n partitionMapWithIndex: partitionMapWithIndex_,\n partitionWithIndex: partitionWithIndex_,\n filterMapWithIndex: filterMapWithIndex_,\n filterWithIndex: filterWithIndex_\n};\n/**\n * @category instances\n * @since 2.7.0\n */\n\nexport var Foldable = {\n URI: URI,\n reduce: reduce_,\n foldMap: foldMap_,\n reduceRight: reduceRight_\n};\n/**\n * @category instances\n * @since 2.7.0\n */\n\nexport var FoldableWithIndex = {\n URI: URI,\n reduce: reduce_,\n foldMap: foldMap_,\n reduceRight: reduceRight_,\n reduceWithIndex: reduceWithIndex_,\n foldMapWithIndex: foldMapWithIndex_,\n reduceRightWithIndex: reduceRightWithIndex_\n};\n/**\n * @category instances\n * @since 2.7.0\n */\n\nexport var Traversable = {\n URI: URI,\n map: map_,\n reduce: reduce_,\n foldMap: foldMap_,\n reduceRight: reduceRight_,\n traverse: traverse_,\n sequence: sequence\n};\n/**\n * @category instances\n * @since 2.7.0\n */\n\nexport var TraversableWithIndex = {\n URI: URI,\n map: map_,\n mapWithIndex: mapWithIndex_,\n reduce: reduce_,\n foldMap: foldMap_,\n reduceRight: reduceRight_,\n reduceWithIndex: reduceWithIndex_,\n foldMapWithIndex: foldMapWithIndex_,\n reduceRightWithIndex: reduceRightWithIndex_,\n traverse: traverse_,\n sequence: sequence,\n traverseWithIndex: traverseWithIndex_\n};\n/**\n * @category instances\n * @since 2.7.0\n */\n\nexport var Witherable = {\n URI: URI,\n map: map_,\n compact: compact,\n separate: separate,\n filter: filter_,\n filterMap: filterMap_,\n partition: partition_,\n partitionMap: partitionMap_,\n reduce: reduce_,\n foldMap: foldMap_,\n reduceRight: reduceRight_,\n traverse: traverse_,\n sequence: sequence,\n wither: wither_,\n wilt: wilt_\n}; // TODO: remove in v3\n\n/**\n * @category instances\n * @since 2.5.0\n */\n\nexport var readonlyArray = {\n URI: URI,\n compact: compact,\n separate: separate,\n map: map_,\n ap: ap_,\n of: of,\n chain: chain_,\n filter: filter_,\n filterMap: filterMap_,\n partition: partition_,\n partitionMap: partitionMap_,\n mapWithIndex: mapWithIndex_,\n partitionMapWithIndex: partitionMapWithIndex_,\n partitionWithIndex: partitionWithIndex_,\n filterMapWithIndex: filterMapWithIndex_,\n filterWithIndex: filterWithIndex_,\n alt: alt_,\n zero: zero,\n unfold: unfold,\n reduce: reduce_,\n foldMap: foldMap_,\n reduceRight: reduceRight_,\n traverse: traverse_,\n sequence: sequence,\n reduceWithIndex: reduceWithIndex_,\n foldMapWithIndex: foldMapWithIndex_,\n reduceRightWithIndex: reduceRightWithIndex_,\n traverseWithIndex: traverseWithIndex_,\n extend: extend_,\n wither: wither_,\n wilt: wilt_\n}; // -------------------------------------------------------------------------------------\n// unsafe\n// -------------------------------------------------------------------------------------\n\n/**\n * @category unsafe\n * @since 2.5.0\n */\n\nexport function unsafeInsertAt(i, a, as) {\n var xs = as.slice();\n xs.splice(i, 0, a);\n return xs;\n}\n/**\n * @category unsafe\n * @since 2.5.0\n */\n\nexport function unsafeUpdateAt(i, a, as) {\n if (as[i] === a) {\n return as;\n } else {\n var xs = as.slice();\n xs[i] = a;\n return xs;\n }\n}\n/**\n * @category unsafe\n * @since 2.5.0\n */\n\nexport function unsafeDeleteAt(i, as) {\n var xs = as.slice();\n xs.splice(i, 1);\n return xs;\n} // -------------------------------------------------------------------------------------\n// utils\n// -------------------------------------------------------------------------------------\n\n/**\n * An empty array\n *\n * @since 2.5.0\n */\n\nexport var empty = [];\n/**\n * Check if a predicate holds true for every array member.\n *\n * @example\n * import { every } from 'fp-ts/ReadonlyArray'\n * import { pipe } from 'fp-ts/function'\n *\n * const isPositive = (n: number): boolean => n > 0\n *\n * assert.deepStrictEqual(pipe([1, 2, 3], every(isPositive)), true)\n * assert.deepStrictEqual(pipe([1, 2, -3], every(isPositive)), false)\n *\n * @since 2.9.0\n */\n\nexport var every = function every(predicate) {\n return function (as) {\n return as.every(predicate);\n };\n};\n/**\n * Check if a predicate holds true for any array member.\n *\n * @example\n * import { some } from 'fp-ts/ReadonlyArray'\n * import { pipe } from 'fp-ts/function'\n *\n * const isPositive = (n: number): boolean => n > 0\n *\n * assert.deepStrictEqual(pipe([-1, -2, 3], some(isPositive)), true)\n * assert.deepStrictEqual(pipe([-1, -2, -3], some(isPositive)), false)\n *\n * @since 2.9.0\n */\n\nexport var some = function some(predicate) {\n return function (as) {\n return as.some(predicate);\n };\n}; // -------------------------------------------------------------------------------------\n// do notation\n// -------------------------------------------------------------------------------------\n\n/**\n * @since 2.9.0\n */\n\nexport var Do =\n/*#__PURE__*/\nof({});\n/**\n * @since 2.8.0\n */\n\nexport var bindTo = function bindTo(name) {\n return map(bindTo_(name));\n};\n/**\n * @since 2.8.0\n */\n\nexport var bind = function bind(name, f) {\n return chain(function (a) {\n return pipe(f(a), map(function (b) {\n return bind_(a, name, b);\n }));\n });\n}; // -------------------------------------------------------------------------------------\n// pipeable sequence S\n// -------------------------------------------------------------------------------------\n\n/**\n * @since 2.8.0\n */\n\nexport var apS = function apS(name, fb) {\n return flow(map(function (a) {\n return function (b) {\n return bind_(a, name, b);\n };\n }), ap(fb));\n};","import * as RA from './ReadonlyArray'; // -------------------------------------------------------------------------------------\n// model\n// -------------------------------------------------------------------------------------\n\n/* tslint:disable:readonly-array */\n\n/**\n * @category instances\n * @since 2.0.0\n */\n\nexport var getShow = RA.getShow;\n/**\n * Returns a `Monoid` for `Array`\n *\n * @example\n * import { getMonoid } from 'fp-ts/Array'\n *\n * const M = getMonoid()\n * assert.deepStrictEqual(M.concat([1, 2], [3, 4]), [1, 2, 3, 4])\n *\n * @category instances\n * @since 2.0.0\n */\n\nexport var getMonoid = RA.getMonoid;\n/**\n * Derives an `Eq` over the `Array` of a given element type from the `Eq` of that type. The derived `Eq` defines two\n * arrays as equal if all elements of both arrays are compared equal pairwise with the given `E`. In case of arrays of\n * different lengths, the result is non equality.\n *\n * @example\n * import { eqString } from 'fp-ts/Eq'\n * import { getEq } from 'fp-ts/Array'\n *\n * const E = getEq(eqString)\n * assert.strictEqual(E.equals(['a', 'b'], ['a', 'b']), true)\n * assert.strictEqual(E.equals(['a'], []), false)\n *\n * @category instances\n * @since 2.0.0\n */\n\nexport var getEq = RA.getEq;\n/**\n * Derives an `Ord` over the `Array` of a given element type from the `Ord` of that type. The ordering between two such\n * arrays is equal to: the first non equal comparison of each arrays elements taken pairwise in increasing order, in\n * case of equality over all the pairwise elements; the longest array is considered the greatest, if both arrays have\n * the same length, the result is equality.\n *\n * @example\n * import { getOrd } from 'fp-ts/Array'\n * import { ordString } from 'fp-ts/Ord'\n *\n * const O = getOrd(ordString)\n * assert.strictEqual(O.compare(['b'], ['a']), 1)\n * assert.strictEqual(O.compare(['a'], ['a']), 0)\n * assert.strictEqual(O.compare(['a'], ['b']), -1)\n *\n * @category instances\n * @since 2.0.0\n */\n\nexport var getOrd = RA.getOrd; // -------------------------------------------------------------------------------------\n// constructors\n// -------------------------------------------------------------------------------------\n\n/**\n * Return a list of length `n` with element `i` initialized with `f(i)`\n *\n * @example\n * import { makeBy } from 'fp-ts/Array'\n *\n * const double = (n: number): number => n * 2\n * assert.deepStrictEqual(makeBy(5, double), [0, 2, 4, 6, 8])\n *\n * @category constructors\n * @since 2.0.0\n */\n\nexport var makeBy = RA.makeBy;\n/**\n * Create an array containing a range of integers, including both endpoints\n *\n * @example\n * import { range } from 'fp-ts/Array'\n *\n * assert.deepStrictEqual(range(1, 5), [1, 2, 3, 4, 5])\n *\n * @category constructors\n * @since 2.0.0\n */\n\nexport var range = RA.range;\n/**\n * Create an array containing a value repeated the specified number of times\n *\n * @example\n * import { replicate } from 'fp-ts/Array'\n *\n * assert.deepStrictEqual(replicate(3, 'a'), ['a', 'a', 'a'])\n *\n * @category constructors\n * @since 2.0.0\n */\n\nexport var replicate = RA.replicate;\n/**\n * Removes one level of nesting.\n *\n * Derivable from `Monad`.\n *\n * @example\n * import { flatten } from 'fp-ts/Array'\n *\n * assert.deepStrictEqual(flatten([[1], [2], [3]]), [1, 2, 3])\n *\n * @category combinators\n * @since 2.0.0\n */\n\nexport var flatten = RA.flatten;\n/**\n * Break an array into its first element and remaining elements\n *\n * @example\n * import { foldLeft } from 'fp-ts/Array'\n *\n * const len: (as: Array) => number = foldLeft(() => 0, (_, tail) => 1 + len(tail))\n * assert.strictEqual(len([1, 2, 3]), 3)\n *\n * @category destructors\n * @since 2.0.0\n */\n\nexport var foldLeft = RA.foldLeft;\n/**\n * Break an array into its initial elements and the last element\n *\n * @category destructors\n * @since 2.0.0\n */\n\nexport var foldRight = RA.foldRight;\n/**\n * Same as `reduce` but it carries over the intermediate steps\n *\n * @example\n * import { scanLeft } from 'fp-ts/Array'\n *\n * assert.deepStrictEqual(scanLeft(10, (b, a: number) => b - a)([1, 2, 3]), [10, 9, 7, 4])\n *\n * @category combinators\n * @since 2.0.0\n */\n\nexport var scanLeft = RA.scanLeft;\n/**\n * Fold an array from the right, keeping all intermediate results instead of only the final result\n *\n * @example\n * import { scanRight } from 'fp-ts/Array'\n *\n * assert.deepStrictEqual(scanRight(10, (a: number, b) => b - a)([1, 2, 3]), [4, 5, 7, 10])\n *\n * @category combinators\n * @since 2.0.0\n */\n\nexport var scanRight = RA.scanRight;\n/**\n * Test whether an array is empty\n *\n * @example\n * import { isEmpty } from 'fp-ts/Array'\n *\n * assert.strictEqual(isEmpty([]), true)\n *\n * @since 2.0.0\n */\n\nexport var isEmpty = RA.isEmpty;\n/**\n * Test whether an array is non empty narrowing down the type to `NonEmptyArray`\n *\n * @category guards\n * @since 2.0.0\n */\n\nexport var isNonEmpty = RA.isNonEmpty;\n/**\n * Test whether an array contains a particular index\n *\n * @since 2.0.0\n */\n\nexport var isOutOfBound = RA.isOutOfBound; // TODO: remove non-curried overloading in v3\n\n/**\n * This function provides a safe way to read a value at a particular index from an array\n *\n * @example\n * import { lookup } from 'fp-ts/Array'\n * import { some, none } from 'fp-ts/Option'\n * import { pipe } from 'fp-ts/function'\n *\n * assert.deepStrictEqual(pipe([1, 2, 3], lookup(1)), some(2))\n * assert.deepStrictEqual(pipe([1, 2, 3], lookup(3)), none)\n *\n * @since 2.0.0\n */\n\nexport var lookup = RA.lookup; // TODO: remove non-curried overloading in v3\n\n/**\n * Attaches an element to the front of an array, creating a new non empty array\n *\n * @example\n * import { cons } from 'fp-ts/Array'\n * import { pipe } from 'fp-ts/function'\n *\n * assert.deepStrictEqual(pipe([1, 2, 3], cons(0)), [0, 1, 2, 3])\n *\n * @category constructors\n * @since 2.0.0\n */\n\nexport var cons = RA.cons; // TODO: curry in v3\n\n/**\n * Append an element to the end of an array, creating a new non empty array\n *\n * @example\n * import { snoc } from 'fp-ts/Array'\n *\n * assert.deepStrictEqual(snoc([1, 2, 3], 4), [1, 2, 3, 4])\n *\n * @category constructors\n * @since 2.0.0\n */\n\nexport var snoc = RA.snoc;\n/**\n * Get the first element in an array, or `None` if the array is empty\n *\n * @example\n * import { head } from 'fp-ts/Array'\n * import { some, none } from 'fp-ts/Option'\n *\n * assert.deepStrictEqual(head([1, 2, 3]), some(1))\n * assert.deepStrictEqual(head([]), none)\n *\n * @category destructors\n * @since 2.0.0\n */\n\nexport var head = RA.head;\n/**\n * Get the last element in an array, or `None` if the array is empty\n *\n * @example\n * import { last } from 'fp-ts/Array'\n * import { some, none } from 'fp-ts/Option'\n *\n * assert.deepStrictEqual(last([1, 2, 3]), some(3))\n * assert.deepStrictEqual(last([]), none)\n *\n * @category destructors\n * @since 2.0.0\n */\n\nexport var last = RA.last;\n/**\n * Get all but the first element of an array, creating a new array, or `None` if the array is empty\n *\n * @example\n * import { tail } from 'fp-ts/Array'\n * import { some, none } from 'fp-ts/Option'\n *\n * assert.deepStrictEqual(tail([1, 2, 3]), some([2, 3]))\n * assert.deepStrictEqual(tail([]), none)\n *\n * @category destructors\n * @since 2.0.0\n */\n\nexport var tail = RA.tail;\n/**\n * Get all but the last element of an array, creating a new array, or `None` if the array is empty\n *\n * @example\n * import { init } from 'fp-ts/Array'\n * import { some, none } from 'fp-ts/Option'\n *\n * assert.deepStrictEqual(init([1, 2, 3]), some([1, 2]))\n * assert.deepStrictEqual(init([]), none)\n *\n * @category destructors\n * @since 2.0.0\n */\n\nexport var init = RA.init;\n/**\n * Keep only a number of elements from the start of an array, creating a new array.\n * `n` must be a natural number\n *\n * @example\n * import { takeLeft } from 'fp-ts/Array'\n *\n * assert.deepStrictEqual(takeLeft(2)([1, 2, 3]), [1, 2])\n *\n * @category combinators\n * @since 2.0.0\n */\n\nexport var takeLeft = RA.takeLeft;\n/**\n * Keep only a number of elements from the end of an array, creating a new array.\n * `n` must be a natural number\n *\n * @example\n * import { takeRight } from 'fp-ts/Array'\n *\n * assert.deepStrictEqual(takeRight(2)([1, 2, 3, 4, 5]), [4, 5])\n *\n * @category combinators\n * @since 2.0.0\n */\n\nexport var takeRight = RA.takeRight;\nexport function takeLeftWhile(predicate) {\n return RA.takeLeftWhile(predicate);\n}\nexport function spanLeft(predicate) {\n return RA.spanLeft(predicate);\n}\n/* tslint:enable:readonly-keyword */\n\n/**\n * Drop a number of elements from the start of an array, creating a new array\n *\n * @example\n * import { dropLeft } from 'fp-ts/Array'\n *\n * assert.deepStrictEqual(dropLeft(2)([1, 2, 3]), [3])\n *\n * @category combinators\n * @since 2.0.0\n */\n\nexport var dropLeft = RA.dropLeft;\n/**\n * Drop a number of elements from the end of an array, creating a new array\n *\n * @example\n * import { dropRight } from 'fp-ts/Array'\n *\n * assert.deepStrictEqual(dropRight(2)([1, 2, 3, 4, 5]), [1, 2, 3])\n *\n * @category combinators\n * @since 2.0.0\n */\n\nexport var dropRight = RA.dropRight;\n/**\n * Remove the longest initial subarray for which all element satisfy the specified predicate, creating a new array\n *\n * @example\n * import { dropLeftWhile } from 'fp-ts/Array'\n *\n * assert.deepStrictEqual(dropLeftWhile((n: number) => n % 2 === 1)([1, 3, 2, 4, 5]), [2, 4, 5])\n *\n * @category combinators\n * @since 2.0.0\n */\n\nexport var dropLeftWhile = RA.dropLeftWhile;\n/**\n * Find the first index for which a predicate holds\n *\n * @example\n * import { findIndex } from 'fp-ts/Array'\n * import { some, none } from 'fp-ts/Option'\n *\n * assert.deepStrictEqual(findIndex((n: number) => n === 2)([1, 2, 3]), some(1))\n * assert.deepStrictEqual(findIndex((n: number) => n === 2)([]), none)\n *\n * @since 2.0.0\n */\n\nexport var findIndex = RA.findIndex;\nexport function findFirst(predicate) {\n return RA.findFirst(predicate);\n}\n/**\n * Find the first element returned by an option based selector function\n *\n * @example\n * import { findFirstMap } from 'fp-ts/Array'\n * import { some, none } from 'fp-ts/Option'\n *\n * interface Person {\n * name: string\n * age?: number\n * }\n *\n * const persons: Array = [{ name: 'John' }, { name: 'Mary', age: 45 }, { name: 'Joey', age: 28 }]\n *\n * // returns the name of the first person that has an age\n * assert.deepStrictEqual(findFirstMap((p: Person) => (p.age === undefined ? none : some(p.name)))(persons), some('Mary'))\n *\n * @category destructors\n * @since 2.0.0\n */\n\nexport var findFirstMap = RA.findFirstMap;\nexport function findLast(predicate) {\n return RA.findLast(predicate);\n}\n/**\n * Find the last element returned by an option based selector function\n *\n * @example\n * import { findLastMap } from 'fp-ts/Array'\n * import { some, none } from 'fp-ts/Option'\n *\n * interface Person {\n * name: string\n * age?: number\n * }\n *\n * const persons: Array = [{ name: 'John' }, { name: 'Mary', age: 45 }, { name: 'Joey', age: 28 }]\n *\n * // returns the name of the last person that has an age\n * assert.deepStrictEqual(findLastMap((p: Person) => (p.age === undefined ? none : some(p.name)))(persons), some('Joey'))\n *\n * @category destructors\n * @since 2.0.0\n */\n\nexport var findLastMap = RA.findLastMap;\n/**\n * Returns the index of the last element of the list which matches the predicate\n *\n * @example\n * import { findLastIndex } from 'fp-ts/Array'\n * import { some, none } from 'fp-ts/Option'\n *\n * interface X {\n * a: number\n * b: number\n * }\n * const xs: Array = [{ a: 1, b: 0 }, { a: 1, b: 1 }]\n * assert.deepStrictEqual(findLastIndex((x: { a: number }) => x.a === 1)(xs), some(1))\n * assert.deepStrictEqual(findLastIndex((x: { a: number }) => x.a === 4)(xs), none)\n *\n *\n * @since 2.0.0\n */\n\nexport var findLastIndex = RA.findLastIndex;\n/**\n * @category combinators\n * @since 2.0.0\n */\n\nexport var copy = RA.toArray;\n/**\n * Insert an element at the specified index, creating a new array, or returning `None` if the index is out of bounds\n *\n * @example\n * import { insertAt } from 'fp-ts/Array'\n * import { some } from 'fp-ts/Option'\n *\n * assert.deepStrictEqual(insertAt(2, 5)([1, 2, 3, 4]), some([1, 2, 5, 3, 4]))\n *\n * @since 2.0.0\n */\n\nexport var insertAt = RA.insertAt;\n/**\n * Change the element at the specified index, creating a new array, or returning `None` if the index is out of bounds\n *\n * @example\n * import { updateAt } from 'fp-ts/Array'\n * import { some, none } from 'fp-ts/Option'\n *\n * assert.deepStrictEqual(updateAt(1, 1)([1, 2, 3]), some([1, 1, 3]))\n * assert.deepStrictEqual(updateAt(1, 1)([]), none)\n *\n * @since 2.0.0\n */\n\nexport var updateAt = RA.updateAt;\n/**\n * Delete the element at the specified index, creating a new array, or returning `None` if the index is out of bounds\n *\n * @example\n * import { deleteAt } from 'fp-ts/Array'\n * import { some, none } from 'fp-ts/Option'\n *\n * assert.deepStrictEqual(deleteAt(0)([1, 2, 3]), some([2, 3]))\n * assert.deepStrictEqual(deleteAt(1)([]), none)\n *\n * @since 2.0.0\n */\n\nexport var deleteAt = RA.deleteAt;\n/**\n * Apply a function to the element at the specified index, creating a new array, or returning `None` if the index is out\n * of bounds\n *\n * @example\n * import { modifyAt } from 'fp-ts/Array'\n * import { some, none } from 'fp-ts/Option'\n *\n * const double = (x: number): number => x * 2\n * assert.deepStrictEqual(modifyAt(1, double)([1, 2, 3]), some([1, 4, 3]))\n * assert.deepStrictEqual(modifyAt(1, double)([]), none)\n *\n * @since 2.0.0\n */\n\nexport var modifyAt = RA.modifyAt;\n/**\n * Reverse an array, creating a new array\n *\n * @example\n * import { reverse } from 'fp-ts/Array'\n *\n * assert.deepStrictEqual(reverse([1, 2, 3]), [3, 2, 1])\n *\n * @category combinators\n * @since 2.0.0\n */\n\nexport var reverse = RA.reverse;\n/**\n * Extracts from an array of `Either` all the `Right` elements. All the `Right` elements are extracted in order\n *\n * @example\n * import { rights } from 'fp-ts/Array'\n * import { right, left } from 'fp-ts/Either'\n *\n * assert.deepStrictEqual(rights([right(1), left('foo'), right(2)]), [1, 2])\n *\n * @category combinators\n * @since 2.0.0\n */\n\nexport var rights = RA.rights;\n/**\n * Extracts from an array of `Either` all the `Left` elements. All the `Left` elements are extracted in order\n *\n * @example\n * import { lefts } from 'fp-ts/Array'\n * import { left, right } from 'fp-ts/Either'\n *\n * assert.deepStrictEqual(lefts([right(1), left('foo'), right(2)]), ['foo'])\n *\n * @category combinators\n * @since 2.0.0\n */\n\nexport var lefts = RA.lefts;\n/**\n * Sort the elements of an array in increasing order, creating a new array\n *\n * @example\n * import { sort } from 'fp-ts/Array'\n * import { ordNumber } from 'fp-ts/Ord'\n *\n * assert.deepStrictEqual(sort(ordNumber)([3, 2, 1]), [1, 2, 3])\n *\n * @category combinators\n * @since 2.0.0\n */\n\nexport var sort = RA.sort;\n/**\n * Apply a function to pairs of elements at the same index in two arrays, collecting the results in a new array. If one\n * input array is short, excess elements of the longer array are discarded.\n *\n * @example\n * import { zipWith } from 'fp-ts/Array'\n *\n * assert.deepStrictEqual(zipWith([1, 2, 3], ['a', 'b', 'c', 'd'], (n, s) => s + n), ['a1', 'b2', 'c3'])\n *\n * @category combinators\n * @since 2.0.0\n */\n\nexport var zipWith = RA.zipWith; // TODO: remove non-curried overloading in v3\n\n/**\n * Takes two arrays and returns an array of corresponding pairs. If one input array is short, excess elements of the\n * longer array are discarded\n *\n * @example\n * import { zip } from 'fp-ts/Array'\n * import { pipe } from 'fp-ts/function'\n *\n * assert.deepStrictEqual(pipe([1, 2, 3], zip(['a', 'b', 'c', 'd'])), [[1, 'a'], [2, 'b'], [3, 'c']])\n *\n * @category combinators\n * @since 2.0.0\n */\n\nexport var zip = RA.zip;\n/**\n * The function is reverse of `zip`. Takes an array of pairs and return two corresponding arrays\n *\n * @example\n * import { unzip } from 'fp-ts/Array'\n *\n * assert.deepStrictEqual(unzip([[1, 'a'], [2, 'b'], [3, 'c']]), [[1, 2, 3], ['a', 'b', 'c']])\n *\n * @since 2.0.0\n */\n\nexport var unzip = RA.unzip;\n/**\n * Prepend an element to every member of an array\n *\n * @example\n * import { prependToAll } from 'fp-ts/Array'\n *\n * assert.deepStrictEqual(prependToAll(9)([1, 2, 3, 4]), [9, 1, 9, 2, 9, 3, 9, 4])\n *\n * @category combinators\n * @since 2.9.0\n */\n\nexport var prependToAll = RA.prependToAll;\n/**\n * Places an element in between members of an array\n *\n * @example\n * import { intersperse } from 'fp-ts/Array'\n *\n * assert.deepStrictEqual(intersperse(9)([1, 2, 3, 4]), [1, 9, 2, 9, 3, 9, 4])\n *\n * @category combinators\n * @since 2.9.0\n */\n\nexport var intersperse = RA.intersperse;\n/**\n * Rotate an array to the right by `n` steps\n *\n * @example\n * import { rotate } from 'fp-ts/Array'\n *\n * assert.deepStrictEqual(rotate(2)([1, 2, 3, 4, 5]), [4, 5, 1, 2, 3])\n *\n * @category combinators\n * @since 2.0.0\n */\n\nexport var rotate = RA.rotate; // TODO: remove non-curried overloading in v3\n\n/**\n * Test if a value is a member of an array. Takes a `Eq` as a single\n * argument which returns the function to use to search for a value of type `A` in\n * an array of type `Array`.\n *\n * @example\n * import { elem } from 'fp-ts/Array'\n * import { eqNumber } from 'fp-ts/Eq'\n * import { pipe } from 'fp-ts/function'\n *\n * assert.strictEqual(pipe([1, 2, 3], elem(eqNumber)(2)), true)\n * assert.strictEqual(pipe([1, 2, 3], elem(eqNumber)(0)), false)\n *\n * @since 2.0.0\n */\n\nexport var elem = RA.elem;\n/**\n * Remove duplicates from an array, keeping the first occurrence of an element.\n *\n * @example\n * import { uniq } from 'fp-ts/Array'\n * import { eqNumber } from 'fp-ts/Eq'\n *\n * assert.deepStrictEqual(uniq(eqNumber)([1, 2, 1]), [1, 2])\n *\n * @category combinators\n * @since 2.0.0\n */\n\nexport var uniq = RA.uniq;\n/**\n * Sort the elements of an array in increasing order, where elements are compared using first `ords[0]`, then `ords[1]`,\n * etc...\n *\n * @example\n * import { sortBy } from 'fp-ts/Array'\n * import { ord, ordString, ordNumber } from 'fp-ts/Ord'\n *\n * interface Person {\n * name: string\n * age: number\n * }\n * const byName = ord.contramap(ordString, (p: Person) => p.name)\n * const byAge = ord.contramap(ordNumber, (p: Person) => p.age)\n *\n * const sortByNameByAge = sortBy([byName, byAge])\n *\n * const persons = [{ name: 'a', age: 1 }, { name: 'b', age: 3 }, { name: 'c', age: 2 }, { name: 'b', age: 2 }]\n * assert.deepStrictEqual(sortByNameByAge(persons), [\n * { name: 'a', age: 1 },\n * { name: 'b', age: 2 },\n * { name: 'b', age: 3 },\n * { name: 'c', age: 2 }\n * ])\n *\n * @category combinators\n * @since 2.0.0\n */\n\nexport var sortBy = RA.sortBy;\n/**\n * A useful recursion pattern for processing an array to produce a new array, often used for \"chopping\" up the input\n * array. Typically chop is called with some function that will consume an initial prefix of the array and produce a\n * value and the rest of the array.\n *\n * @example\n * import { Eq, eqNumber } from 'fp-ts/Eq'\n * import { chop, spanLeft } from 'fp-ts/Array'\n *\n * const group = (S: Eq): ((as: Array) => Array>) => {\n * return chop(as => {\n * const { init, rest } = spanLeft((a: A) => S.equals(a, as[0]))(as)\n * return [init, rest]\n * })\n * }\n * assert.deepStrictEqual(group(eqNumber)([1, 1, 2, 3, 3, 4]), [[1, 1], [2], [3, 3], [4]])\n *\n * @category combinators\n * @since 2.0.0\n */\n\nexport var chop = RA.chop;\n/**\n * Splits an array into two pieces, the first piece has `n` elements.\n *\n * @example\n * import { splitAt } from 'fp-ts/Array'\n *\n * assert.deepStrictEqual(splitAt(2)([1, 2, 3, 4, 5]), [[1, 2], [3, 4, 5]])\n *\n * @since 2.0.0\n */\n\nexport var splitAt = RA.splitAt;\n/**\n * Splits an array into length-`n` pieces. The last piece will be shorter if `n` does not evenly divide the length of\n * the array. Note that `chunksOf(n)([])` is `[]`, not `[[]]`. This is intentional, and is consistent with a recursive\n * definition of `chunksOf`; it satisfies the property that\n *\n * ```ts\n * chunksOf(n)(xs).concat(chunksOf(n)(ys)) == chunksOf(n)(xs.concat(ys)))\n * ```\n *\n * whenever `n` evenly divides the length of `xs`.\n *\n * @example\n * import { chunksOf } from 'fp-ts/Array'\n *\n * assert.deepStrictEqual(chunksOf(2)([1, 2, 3, 4, 5]), [[1, 2], [3, 4], [5]])\n *\n * @since 2.0.0\n */\n\nexport var chunksOf = RA.chunksOf;\nexport function comprehension(input, f, g) {\n if (g === void 0) {\n g = function g() {\n return true;\n };\n }\n\n return RA.comprehension(input, f, g);\n} // TODO: remove non-curried overloading in v3\n\n/**\n * Creates an array of unique values, in order, from all given arrays using a `Eq` for equality comparisons\n *\n * @example\n * import { union } from 'fp-ts/Array'\n * import { eqNumber } from 'fp-ts/Eq'\n * import { pipe } from 'fp-ts/function'\n *\n * assert.deepStrictEqual(pipe([1, 2], union(eqNumber)([2, 3])), [1, 2, 3])\n *\n * @category combinators\n * @since 2.0.0\n */\n\nexport var union = RA.union; // TODO: remove non-curried overloading in v3\n\n/**\n * Creates an array of unique values that are included in all given arrays using a `Eq` for equality\n * comparisons. The order and references of result values are determined by the first array.\n *\n * @example\n * import { intersection } from 'fp-ts/Array'\n * import { eqNumber } from 'fp-ts/Eq'\n * import { pipe } from 'fp-ts/function'\n *\n * assert.deepStrictEqual(pipe([1, 2], intersection(eqNumber)([2, 3])), [2])\n *\n * @category combinators\n * @since 2.0.0\n */\n\nexport var intersection = RA.intersection; // TODO: remove non-curried overloading in v3\n\n/**\n * Creates an array of array values not included in the other given array using a `Eq` for equality\n * comparisons. The order and references of result values are determined by the first array.\n *\n * @example\n * import { difference } from 'fp-ts/Array'\n * import { eqNumber } from 'fp-ts/Eq'\n * import { pipe } from 'fp-ts/function'\n *\n * assert.deepStrictEqual(pipe([1, 2], difference(eqNumber)([2, 3])), [1])\n *\n * @category combinators\n * @since 2.0.0\n */\n\nexport var difference = RA.difference;\n/**\n * Wrap a value into the type constructor.\n *\n * @category Applicative\n * @since 2.0.0\n */\n\nexport var of = RA.of; // -------------------------------------------------------------------------------------\n// non-pipeables\n// -------------------------------------------------------------------------------------\n\nvar map_ = RA.Monad.map;\nvar ap_ = RA.Monad.ap;\nvar chain_ = RA.Monad.chain;\nvar mapWithIndex_ = RA.FunctorWithIndex.mapWithIndex;\nvar filter_ = RA.Filterable.filter;\nvar filterMap_ = RA.Filterable.filterMap;\nvar partition_ = RA.Filterable.partition;\nvar partitionMap_ = RA.Filterable.partitionMap;\nvar filterWithIndex_ = RA.FilterableWithIndex.filterWithIndex;\nvar filterMapWithIndex_ = RA.FilterableWithIndex.filterMapWithIndex;\nvar partitionWithIndex_ = RA.FilterableWithIndex.partitionWithIndex;\nvar partitionMapWithIndex_ = RA.FilterableWithIndex.partitionMapWithIndex;\nvar reduce_ = RA.Foldable.reduce;\nvar foldMap_ = RA.Foldable.foldMap;\nvar reduceRight_ = RA.Foldable.reduceRight;\nvar traverse_ = RA.Traversable.traverse;\nvar alt_ = RA.Alternative.alt;\nvar reduceWithIndex_ = RA.FoldableWithIndex.reduceWithIndex;\nvar foldMapWithIndex_ = RA.FoldableWithIndex.foldMapWithIndex;\nvar reduceRightWithIndex_ = RA.FoldableWithIndex.reduceRightWithIndex;\nvar traverseWithIndex_ = RA.TraversableWithIndex.traverseWithIndex;\nvar extend_ = RA.Extend.extend;\nvar wither_ = RA.Witherable.wither;\nvar wilt_ = RA.Witherable.wilt; // -------------------------------------------------------------------------------------\n// pipeables\n// -------------------------------------------------------------------------------------\n\n/**\n * `map` can be used to turn functions `(a: A) => B` into functions `(fa: F) => F` whose argument and return types\n * use the type constructor `F` to represent some computational context.\n *\n * @category Functor\n * @since 2.0.0\n */\n\nexport var map = RA.map;\n/**\n * Apply a function to an argument under a type constructor.\n *\n * @category Apply\n * @since 2.0.0\n */\n\nexport var ap = RA.ap;\n/**\n * Combine two effectful actions, keeping only the result of the first.\n *\n * Derivable from `Apply`.\n *\n * @category combinators\n * @since 2.0.0\n */\n\nexport var apFirst = RA.apFirst;\n/**\n * Combine two effectful actions, keeping only the result of the second.\n *\n * Derivable from `Apply`.\n *\n * @category combinators\n * @since 2.0.0\n */\n\nexport var apSecond = RA.apSecond;\n/**\n * Composes computations in sequence, using the return value of one computation to determine the next computation.\n *\n * @category Monad\n * @since 2.0.0\n */\n\nexport var chain = RA.chain;\n/**\n * @since 2.7.0\n */\n\nexport var chainWithIndex = RA.chainWithIndex;\n/**\n * Composes computations in sequence, using the return value of one computation to determine the next computation and\n * keeping only the result of the first.\n *\n * Derivable from `Monad`.\n *\n * @category combinators\n * @since 2.0.0\n */\n\nexport var chainFirst = RA.chainFirst;\n/**\n * @category FunctorWithIndex\n * @since 2.0.0\n */\n\nexport var mapWithIndex = RA.mapWithIndex;\n/**\n * @category Compactable\n * @since 2.0.0\n */\n\nexport var compact = RA.compact;\n/**\n * @category Compactable\n * @since 2.0.0\n */\n\nexport var separate = RA.separate;\n/**\n * @category Filterable\n * @since 2.0.0\n */\n\nexport var filter = RA.filter;\n/**\n * @category Filterable\n * @since 2.0.0\n */\n\nexport var filterMap = RA.filterMap;\n/**\n * @category Filterable\n * @since 2.0.0\n */\n\nexport var partition = RA.partition;\n/**\n * @category FilterableWithIndex\n * @since 2.0.0\n */\n\nexport var partitionWithIndex = RA.partitionWithIndex;\n/**\n * @category Filterable\n * @since 2.0.0\n */\n\nexport var partitionMap = RA.partitionMap;\n/**\n * @category FilterableWithIndex\n * @since 2.0.0\n */\n\nexport var partitionMapWithIndex = RA.partitionMapWithIndex;\n/**\n * Less strict version of [`alt`](#alt).\n *\n * @category Alt\n * @since 2.9.0\n */\n\nexport var altW = RA.altW;\n/**\n * Identifies an associative operation on a type constructor. It is similar to `Semigroup`, except that it applies to\n * types of kind `* -> *`.\n *\n * @category Alt\n * @since 2.0.0\n */\n\nexport var alt = RA.alt;\n/**\n * @category FilterableWithIndex\n * @since 2.0.0\n */\n\nexport var filterMapWithIndex = RA.filterMapWithIndex;\n/**\n * @category FilterableWithIndex\n * @since 2.0.0\n */\n\nexport var filterWithIndex = RA.filterWithIndex;\n/**\n * @category Extend\n * @since 2.0.0\n */\n\nexport var extend = RA.extend;\n/**\n * Derivable from `Extend`.\n *\n * @category combinators\n * @since 2.0.0\n */\n\nexport var duplicate = RA.duplicate;\n/**\n * @category Foldable\n * @since 2.0.0\n */\n\nexport var foldMap = RA.foldMap;\n/**\n * @category FoldableWithIndex\n * @since 2.0.0\n */\n\nexport var foldMapWithIndex = RA.foldMapWithIndex;\n/**\n * @category Foldable\n * @since 2.0.0\n */\n\nexport var reduce = RA.reduce;\n/**\n * @category FoldableWithIndex\n * @since 2.0.0\n */\n\nexport var reduceWithIndex = RA.reduceWithIndex;\n/**\n * @category Foldable\n * @since 2.0.0\n */\n\nexport var reduceRight = RA.reduceRight;\n/**\n * @category FoldableWithIndex\n * @since 2.0.0\n */\n\nexport var reduceRightWithIndex = RA.reduceRightWithIndex;\n/**\n * **for optimized and stack safe version check the data types `traverseArray` function**\n * @category Traversable\n * @since 2.6.3\n */\n\nexport var traverse = RA.traverse;\n/**\n * **for optimized and stack safe version check the data types `sequenceArray` function**\n * @category Traversable\n * @since 2.6.3\n */\n\nexport var sequence = RA.sequence;\n/**\n * **for optimized and stack safe version check the data types `traverseArrayWithIndex` function**\n * @category TraversableWithIndex\n * @since 2.6.3\n */\n\nexport var traverseWithIndex = RA.traverseWithIndex;\n/**\n * @category Witherable\n * @since 2.6.5\n */\n\nexport var wither = RA.wither;\n/**\n * @category Witherable\n * @since 2.6.5\n */\n\nexport var wilt = RA.wilt;\n/**\n * @category Unfoldable\n * @since 2.6.6\n */\n\nexport var unfold = RA.unfold;\n/**\n * @category Alternative\n * @since 2.7.0\n */\n\nexport var zero = RA.Alternative.zero; // -------------------------------------------------------------------------------------\n// instances\n// -------------------------------------------------------------------------------------\n\n/**\n * @category instances\n * @since 2.0.0\n */\n\nexport var URI = 'Array';\n/**\n * @category instances\n * @since 2.7.0\n */\n\nexport var Functor = {\n URI: URI,\n map: map_\n};\n/**\n * @category instances\n * @since 2.7.0\n */\n\nexport var FunctorWithIndex = {\n URI: URI,\n map: map_,\n mapWithIndex: mapWithIndex_\n};\n/**\n * @category instances\n * @since 2.7.0\n */\n\nexport var Applicative = {\n URI: URI,\n map: map_,\n ap: ap_,\n of: of\n};\n/**\n * @category instances\n * @since 2.7.0\n */\n\nexport var Monad = {\n URI: URI,\n map: map_,\n ap: ap_,\n of: of,\n chain: chain_\n};\n/**\n * @category instances\n * @since 2.7.0\n */\n\nexport var Unfoldable = {\n URI: URI,\n unfold: unfold\n};\n/**\n * @category instances\n * @since 2.7.0\n */\n\nexport var Alt = {\n URI: URI,\n map: map_,\n alt: alt_\n};\n/**\n * @category instances\n * @since 2.7.0\n */\n\nexport var Alternative = {\n URI: URI,\n map: map_,\n ap: ap_,\n of: of,\n alt: alt_,\n zero: zero\n};\n/**\n * @category instances\n * @since 2.7.0\n */\n\nexport var Extend = {\n URI: URI,\n map: map_,\n extend: extend_\n};\n/**\n * @category instances\n * @since 2.7.0\n */\n\nexport var Compactable = {\n URI: URI,\n compact: compact,\n separate: separate\n};\n/**\n * @category instances\n * @since 2.7.0\n */\n\nexport var Filterable = {\n URI: URI,\n map: map_,\n compact: compact,\n separate: separate,\n filter: filter_,\n filterMap: filterMap_,\n partition: partition_,\n partitionMap: partitionMap_\n};\n/**\n * @category instances\n * @since 2.7.0\n */\n\nexport var FilterableWithIndex = {\n URI: URI,\n map: map_,\n mapWithIndex: mapWithIndex_,\n compact: compact,\n separate: separate,\n filter: filter_,\n filterMap: filterMap_,\n partition: partition_,\n partitionMap: partitionMap_,\n partitionMapWithIndex: partitionMapWithIndex_,\n partitionWithIndex: partitionWithIndex_,\n filterMapWithIndex: filterMapWithIndex_,\n filterWithIndex: filterWithIndex_\n};\n/**\n * @category instances\n * @since 2.7.0\n */\n\nexport var Foldable = {\n URI: URI,\n reduce: reduce_,\n foldMap: foldMap_,\n reduceRight: reduceRight_\n};\n/**\n * @category instances\n * @since 2.7.0\n */\n\nexport var FoldableWithIndex = {\n URI: URI,\n reduce: reduce_,\n foldMap: foldMap_,\n reduceRight: reduceRight_,\n reduceWithIndex: reduceWithIndex_,\n foldMapWithIndex: foldMapWithIndex_,\n reduceRightWithIndex: reduceRightWithIndex_\n};\n/**\n * @category instances\n * @since 2.7.0\n */\n\nexport var Traversable = {\n URI: URI,\n map: map_,\n reduce: reduce_,\n foldMap: foldMap_,\n reduceRight: reduceRight_,\n traverse: traverse_,\n sequence: sequence\n};\n/**\n * @category instances\n * @since 2.7.0\n */\n\nexport var TraversableWithIndex = {\n URI: URI,\n map: map_,\n mapWithIndex: mapWithIndex_,\n reduce: reduce_,\n foldMap: foldMap_,\n reduceRight: reduceRight_,\n reduceWithIndex: reduceWithIndex_,\n foldMapWithIndex: foldMapWithIndex_,\n reduceRightWithIndex: reduceRightWithIndex_,\n traverse: traverse_,\n sequence: sequence,\n traverseWithIndex: traverseWithIndex_\n};\n/**\n * @category instances\n * @since 2.7.0\n */\n\nexport var Witherable = {\n URI: URI,\n map: map_,\n compact: compact,\n separate: separate,\n filter: filter_,\n filterMap: filterMap_,\n partition: partition_,\n partitionMap: partitionMap_,\n reduce: reduce_,\n foldMap: foldMap_,\n reduceRight: reduceRight_,\n traverse: traverse_,\n sequence: sequence,\n wither: wither_,\n wilt: wilt_\n}; // TODO: remove in v3\n\n/**\n * @category instances\n * @since 2.0.0\n */\n\nexport var array = {\n URI: URI,\n compact: compact,\n separate: separate,\n map: map_,\n ap: ap_,\n of: of,\n chain: chain_,\n filter: filter_,\n filterMap: filterMap_,\n partition: partition_,\n partitionMap: partitionMap_,\n mapWithIndex: mapWithIndex_,\n partitionMapWithIndex: partitionMapWithIndex_,\n partitionWithIndex: partitionWithIndex_,\n filterMapWithIndex: filterMapWithIndex_,\n filterWithIndex: filterWithIndex_,\n alt: alt_,\n zero: zero,\n unfold: unfold,\n reduce: reduce_,\n foldMap: foldMap_,\n reduceRight: reduceRight_,\n traverse: traverse_,\n sequence: sequence,\n reduceWithIndex: reduceWithIndex_,\n foldMapWithIndex: foldMapWithIndex_,\n reduceRightWithIndex: reduceRightWithIndex_,\n traverseWithIndex: traverseWithIndex_,\n extend: extend_,\n wither: wither_,\n wilt: wilt_\n}; // -------------------------------------------------------------------------------------\n// unsafe\n// -------------------------------------------------------------------------------------\n\n/**\n * @category unsafe\n * @since 2.0.0\n */\n\nexport var unsafeInsertAt = RA.unsafeInsertAt;\n/**\n * @category unsafe\n * @since 2.0.0\n */\n\nexport var unsafeUpdateAt = RA.unsafeUpdateAt;\n/**\n * @category unsafe\n * @since 2.0.0\n */\n\nexport var unsafeDeleteAt = RA.unsafeDeleteAt; // -------------------------------------------------------------------------------------\n// utils\n// -------------------------------------------------------------------------------------\n\n/**\n * An empty array\n *\n * @since 2.0.0\n */\n\nexport var empty = [];\n/**\n * @since 2.9.0\n */\n\nexport var every = RA.every;\n/**\n * @since 2.9.0\n */\n\nexport var some = RA.some; // -------------------------------------------------------------------------------------\n// do notation\n// -------------------------------------------------------------------------------------\n\n/**\n * @since 2.9.0\n */\n\nexport var Do =\n/*#__PURE__*/\nof({});\n/**\n * @since 2.8.0\n */\n\nexport var bindTo = RA.bindTo;\n/**\n * @since 2.8.0\n */\n\nexport var bind = RA.bind; // -------------------------------------------------------------------------------------\n// pipeable sequence S\n// -------------------------------------------------------------------------------------\n\n/**\n * @since 2.8.0\n */\n\nexport var apS = RA.apS;","// Mark , and \n \n \n \n \n \n `;\n document.body.appendChild(elem);\n\n // poweredByHidden\n\n const privacyPolicyContainer = document.querySelector(\n \".bugbattle--feedback-inputgroup--privacy-policy\"\n );\n const privacyPolicyInputLabel = document.querySelector(\n \".bugbattle--feedback-inputgroup--privacy-policy-label\"\n );\n const privacyPolicyInput = document.querySelector(\n \".bugbattle--feedback-inputgroup--privacy-policy input\"\n );\n if (this.privacyPolicyCheckEnabled) {\n privacyPolicyContainer.style.display = \"block\";\n document.querySelector(\n \"#bugbattle-privacy-policy-link\"\n ).href = this.privacyPolicyUrl;\n } else {\n privacyPolicyContainer.style.display = \"none\";\n }\n\n privacyPolicyInputLabel.onclick = function () {\n privacyPolicyInput.checked = !privacyPolicyInput.checked;\n };\n\n const poweredByContainer = document.querySelector(\n \".bugbattle--feedback-poweredbycontainer\"\n );\n if (this.poweredByHidden) {\n poweredByContainer.style.display = \"none\";\n } else {\n poweredByContainer.onclick = function () {\n window.open(\"https://www.bugbattle.io/\", \"_blank\");\n };\n }\n\n const sendButton = document.querySelector(\n \".bugbattle--feedback-send-button\"\n );\n const cancelButton = document.querySelector(\n \".bugbattle--feedback-dialog-header-button-cancel\"\n );\n\n const emailField = document.querySelector(\".bugbattle--feedback-email\");\n const textArea = document.querySelector(\".bugbattle--feedback-description\");\n\n textArea.oninput = function () {\n textArea.style.height = \"inherit\";\n textArea.style.height = textArea.scrollHeight + \"px\";\n };\n\n cancelButton.onclick = function () {\n self.hide();\n };\n\n emailField.value = this.email;\n\n sendButton.onclick = function () {\n self.email = emailField.value;\n\n if (!self.email || self.email.length === 0) {\n alert(\"Please provide an email address.\");\n return;\n }\n\n if (self.privacyPolicyCheckEnabled && !privacyPolicyInput.checked) {\n alert(\"Please read and accept the privacy policy.\");\n return;\n }\n\n self.description = textArea.value;\n\n localStorage.setItem(\"bugbattle-sender-email\", self.email);\n\n self.toggleLoading(true);\n\n if (!self.sdkKey) {\n return alert(\"BUGBATTLE: Please provide a valid API key!\");\n }\n\n self.preScreenshotCleanup();\n\n window.scrollTo(self.snapshotPosition.x, self.snapshotPosition.y);\n\n dataURL(window, {\n ignore: ['[data-ignore-bb~=\"true\"]'],\n })\n .then((screen) => {\n if (screen && screen.value) {\n self.screenshot = screen.value;\n self.prepareScreenshot();\n } else {\n self.showError();\n }\n })\n .catch((exp) => {\n self.showError();\n });\n };\n }\n\n preScreenshotCleanup() {\n const imgElements = document.body.querySelectorAll(\"img, svg, video\");\n imgElements.forEach(function (item) {\n item.setAttribute(\"width\", item.getBoundingClientRect().width);\n item.setAttribute(\"height\", item.getBoundingClientRect().height);\n });\n }\n\n hide() {\n const editorContainer = document.querySelector(\n \".bugbattle-screenshot-editor-container\"\n );\n if (editorContainer) {\n editorContainer.remove();\n }\n const dialogContainer = document.querySelector(\n \".bugbattle--feedback-dialog-container\"\n );\n if (dialogContainer) {\n dialogContainer.remove();\n }\n\n const feedbackBtn = document.querySelector(\".bugbattle--feedback-button\");\n if (feedbackBtn) {\n feedbackBtn.style.display = \"block\";\n }\n\n this.bugReportingRunning = false;\n this.crashDetected = false;\n this.enableScroll();\n }\n\n init() {\n this.overwriteConsoleLog();\n this.startCrashDetection();\n\n const self = this;\n if (\n document.readyState === \"complete\" ||\n document.readyState === \"loaded\" ||\n document.readyState === \"interactive\"\n ) {\n self.checkForInitType();\n } else {\n document.addEventListener(\"DOMContentLoaded\", function (event) {\n self.checkForInitType();\n });\n }\n }\n\n checkForInitType() {\n if (this.activation === BugBattle.FEEDBACK_BUTTON) {\n this.injectFeedbackButton();\n }\n }\n\n injectFeedbackButton() {\n var elem = document.createElement(\"div\");\n elem.className = \"bugbattle--feedback-button\";\n elem.innerHTML =\n '';\n elem.onclick = function () {\n BugBattle.startBugReporting();\n };\n document.body.appendChild(elem);\n }\n\n toggleLoading(loading) {\n const header = document.querySelector(\".bugbattle--feedback-dialog-header\");\n const body = document.querySelector(\".bugbattle--feedback-dialog-body\");\n const loader = document.querySelector(\n \".bugbattle--feedback-dialog-loading\"\n );\n if (loading) {\n body.style.display = \"none\";\n loader.style.display = \"block\";\n header.style.display = \"none\";\n } else {\n body.style.display = \"block\";\n loader.style.display = \"none\";\n header.style.display = \"block\";\n }\n }\n\n showSuccessMessage() {\n const success = document.querySelector(\n \".bugbattle--feedback-dialog-success\"\n );\n const body = document.querySelector(\".bugbattle--feedback-dialog-body\");\n const loader = document.querySelector(\n \".bugbattle--feedback-dialog-loading\"\n );\n body.style.display = \"none\";\n loader.style.display = \"none\";\n success.style.display = \"flex\";\n }\n\n dataURItoBlob(dataURI) {\n var byteString = atob(dataURI.split(\",\")[1]);\n var mimeString = dataURI.split(\",\")[0].split(\":\")[1].split(\";\")[0];\n var ab = new ArrayBuffer(byteString.length);\n var ia = new Uint8Array(ab);\n for (var i = 0; i < byteString.length; i++) {\n ia[i] = byteString.charCodeAt(i);\n }\n var blob = new Blob([ab], { type: mimeString });\n return blob;\n }\n\n prepareScreenshot() {\n const self = this;\n const imageObj = new Image();\n imageObj.onload = function () {\n const pixelRatio = window.devicePixelRatio;\n const canvas = document.createElement(\"canvas\");\n\n canvas.width = this.width;\n canvas.height = this.height;\n const context = canvas.getContext(\"2d\");\n\n // Draw image\n context.drawImage(imageObj, 0, 0, this.width, this.height);\n\n // Draw markers\n const editorDot = document.querySelector(\n \".bugbattle-screenshot-editor-dot\"\n );\n const editorRectangle = document.querySelector(\n \".bugbattle-screenshot-editor-rectangle\"\n );\n\n if (editorDot && editorRectangle) {\n context.beginPath();\n context.arc(\n (editorDot.offsetLeft + editorDot.offsetWidth / 2) * pixelRatio,\n (editorDot.offsetTop + editorDot.offsetHeight / 2) * pixelRatio,\n 6 * pixelRatio,\n 0,\n 2 * Math.PI,\n false\n );\n context.fillStyle = self.mainColor;\n context.fill();\n context.closePath();\n\n context.lineWidth = 3 * pixelRatio;\n context.strokeStyle = self.mainColor;\n context.stroke();\n if (editorRectangle.offsetTop > 0 || editorRectangle.offsetLeft) {\n context.strokeRect(\n editorRectangle.offsetLeft * pixelRatio,\n editorRectangle.offsetTop * pixelRatio,\n editorRectangle.offsetWidth * pixelRatio,\n editorRectangle.offsetHeight * pixelRatio\n );\n }\n }\n\n // Upload screenshot\n self.uploadScreenshot(canvas.toDataURL(\"image/jpeg\", 0.5));\n self.screenshot = null;\n };\n imageObj.onerror = function () {\n self.hide();\n };\n imageObj.src = this.screenshot;\n }\n\n uploadScreenshot(screenshot) {\n const self = this;\n const http = new XMLHttpRequest();\n http.open(\"POST\", this.apiUrl + \"/uploads/sdk\");\n http.setRequestHeader(\"Api-Token\", this.sdkKey);\n http.onreadystatechange = function (e) {\n if (http.readyState === XMLHttpRequest.DONE) {\n try {\n const response = JSON.parse(http.responseText);\n if (response && response.fileUrl) {\n self.screenshotURL = response.fileUrl;\n self.sendBugReportToServer();\n } else {\n self.showError();\n }\n } catch (e) {\n self.showError();\n }\n }\n };\n\n const canvas = document.querySelector(\n \".bugbattle-screenshot-editor-canvas\"\n );\n const file = this.dataURItoBlob(screenshot);\n const formData = new FormData();\n formData.append(\"file\", file, \"screenshot.jpg\");\n http.send(formData);\n }\n\n sendBugReportToServer() {\n const self = this;\n const http = new XMLHttpRequest();\n http.open(\"POST\", this.apiUrl + \"/bugs\");\n http.setRequestHeader(\"Content-Type\", \"application/json;charset=UTF-8\");\n http.setRequestHeader(\"Api-Token\", this.sdkKey);\n http.onreadystatechange = function (e) {\n if (\n http.readyState === XMLHttpRequest.DONE &&\n (http.status === 200 || http.status === 201)\n ) {\n self.showSuccessMessage();\n setTimeout(function () {\n self.hide();\n }, 1500);\n }\n };\n\n const bugReportData = {\n reportedBy: this.email,\n description: this.description,\n priority: this.severity,\n screenshotUrl: this.screenshotURL,\n customData: this.customData,\n metaData: this.getMetaData(),\n consoleLog: this.logArray,\n type: this.crashDetected ? \"CRASHREPORT\" : \"BUG\",\n };\n http.send(JSON.stringify(bugReportData));\n }\n\n showError() {\n this.toggleLoading(false);\n }\n\n getMetaData() {\n var nAgt = navigator.userAgent;\n var browserName = navigator.appName;\n var fullVersion = \"\" + parseFloat(navigator.appVersion);\n var majorVersion = parseInt(navigator.appVersion, 10);\n var nameOffset, verOffset, ix;\n\n // In Opera, the true version is after \"Opera\" or after \"Version\"\n if ((verOffset = nAgt.indexOf(\"Opera\")) !== -1) {\n browserName = \"Opera\";\n fullVersion = nAgt.substring(verOffset + 6);\n if ((verOffset = nAgt.indexOf(\"Version\")) !== -1)\n fullVersion = nAgt.substring(verOffset + 8);\n }\n // In MSIE, the true version is after \"MSIE\" in userAgent\n else if ((verOffset = nAgt.indexOf(\"MSIE\")) !== -1) {\n browserName = \"Microsoft Internet Explorer\";\n fullVersion = nAgt.substring(verOffset + 5);\n }\n // In Chrome, the true version is after \"Chrome\"\n else if ((verOffset = nAgt.indexOf(\"Chrome\")) !== -1) {\n browserName = \"Chrome\";\n fullVersion = nAgt.substring(verOffset + 7);\n }\n // In Safari, the true version is after \"Safari\" or after \"Version\"\n else if ((verOffset = nAgt.indexOf(\"Safari\")) !== -1) {\n browserName = \"Safari\";\n fullVersion = nAgt.substring(verOffset + 7);\n if ((verOffset = nAgt.indexOf(\"Version\")) !== -1)\n fullVersion = nAgt.substring(verOffset + 8);\n }\n // In Firefox, the true version is after \"Firefox\"\n else if ((verOffset = nAgt.indexOf(\"Firefox\")) !== -1) {\n browserName = \"Firefox\";\n fullVersion = nAgt.substring(verOffset + 8);\n }\n // In most other browsers, \"name/version\" is at the end of userAgent\n else if (\n (nameOffset = nAgt.lastIndexOf(\" \") + 1) <\n (verOffset = nAgt.lastIndexOf(\"/\"))\n ) {\n browserName = nAgt.substring(nameOffset, verOffset);\n fullVersion = nAgt.substring(verOffset + 1);\n if (browserName.toLowerCase() === browserName.toUpperCase()) {\n browserName = navigator.appName;\n }\n }\n // trim the fullVersion string at semicolon/space if present\n if ((ix = fullVersion.indexOf(\";\")) !== -1)\n fullVersion = fullVersion.substring(0, ix);\n if ((ix = fullVersion.indexOf(\" \")) !== -1)\n fullVersion = fullVersion.substring(0, ix);\n\n majorVersion = parseInt(\"\" + fullVersion, 10);\n if (isNaN(majorVersion)) {\n fullVersion = \"\" + parseFloat(navigator.appVersion);\n majorVersion = parseInt(navigator.appVersion, 10);\n }\n\n var OSName = \"Unknown OS\";\n if (navigator.appVersion.indexOf(\"Win\") !== -1) OSName = \"Windows\";\n if (navigator.appVersion.indexOf(\"Mac\") !== -1) OSName = \"MacOS\";\n if (navigator.appVersion.indexOf(\"X11\") !== -1) OSName = \"UNIX\";\n if (navigator.appVersion.indexOf(\"Linux\") !== -1) OSName = \"Linux\";\n if (navigator.appVersion.indexOf(\"iPad\") !== -1) OSName = \"iPad\";\n if (navigator.appVersion.indexOf(\"iPhone\") !== -1) OSName = \"iPhone\";\n if (navigator.appVersion.indexOf(\"Android\") !== -1) OSName = \"Android\";\n\n const now = new Date();\n const sessionDuration =\n (now.getTime() - this.sessionStart.getTime()) / 1000;\n\n return {\n browserName: browserName + \"(\" + fullVersion + \")\",\n userAgent: nAgt,\n browser: navigator.appName,\n systemName: OSName,\n buildVersionNumber: this.appBuildNumber,\n releaseVersionNumber: this.appVersionCode,\n sessionDuration: sessionDuration,\n devicePixelRatio: window.devicePixelRatio,\n screenWidth: window.screen.width,\n screenHeight: window.screen.height,\n innerWidth: window.innerWidth,\n innerHeight: window.innerHeight,\n currentUrl: window.location.href,\n language: navigator.language || navigator.userLanguage,\n };\n }\n\n showBugReportEditor() {\n const self = this;\n var bugReportingEditor = document.createElement(\"div\");\n bugReportingEditor.className = \"bugbattle-screenshot-editor-container\";\n bugReportingEditor.setAttribute(\"data-ignore-bb\", \"true\");\n bugReportingEditor.innerHTML = `\n
\n
\n
\n
\n
Click or drag to create a comment
\n
\n `;\n document.body.appendChild(bugReportingEditor);\n\n const editorRectangle = document.querySelector(\n \".bugbattle-screenshot-editor-borderlayer\"\n );\n if (editorRectangle) {\n editorRectangle.style.height = `${window.innerHeight}px`;\n }\n\n var addedMarker = false;\n var clickStartX = -1;\n var clickStartY = -1;\n\n function setStartPoint(x, y) {\n if (addedMarker) {\n return;\n }\n\n const editorDot = document.querySelector(\n \".bugbattle-screenshot-editor-dot\"\n );\n editorDot.style.left = x - editorDot.offsetWidth / 2 + \"px\";\n editorDot.style.top = y - editorDot.offsetHeight / 2 + \"px\";\n }\n\n function setMouseMove(x, y) {\n const dragInfo = document.querySelector(\n \".bugbattle-screenshot-editor-drag-info\"\n );\n dragInfo.style.left = `${x + 20}px`;\n dragInfo.style.top = `${y - dragInfo.offsetHeight / 2}px`;\n dragInfo.style.right = null;\n\n if (addedMarker || clickStartX < 0) {\n return;\n }\n\n const width = x - clickStartX;\n const height = y - clickStartY;\n\n const editorRectangle = document.querySelector(\n \".bugbattle-screenshot-editor-rectangle\"\n );\n\n var left = width < 0 ? clickStartX + width : clickStartX;\n var top = height < 0 ? clickStartY + height : clickStartY;\n var heightAbs = height < 0 ? height * -1 : height;\n var widthAbs = width < 0 ? width * -1 : width;\n\n editorRectangle.style.left = `${left}px`;\n editorRectangle.style.top = `${top}px`;\n editorRectangle.style.width = `${widthAbs}px`;\n editorRectangle.style.height = `${heightAbs}px`;\n }\n\n function mouseDownEventHandler(e) {\n clickStartX = e.pageX - document.documentElement.scrollLeft;\n clickStartY = e.pageY - document.documentElement.scrollTop;\n setStartPoint(clickStartX, clickStartY);\n }\n\n function touchstartEventHandler(e) {\n clickStartX = e.touches[0].pageX - document.documentElement.scrollLeft;\n clickStartY = e.touches[0].pageY - document.documentElement.scrollTop;\n setStartPoint(clickStartX, clickStartY);\n }\n\n function mouseUpEventHandler(e) {\n const dragInfo = document.querySelector(\n \".bugbattle-screenshot-editor-drag-info\"\n );\n dragInfo.style.display = \"none\";\n\n addedMarker = true;\n\n self.createBugReportingDialog();\n }\n\n function mouseMoveEventHandler(e) {\n const x = e.pageX - document.documentElement.scrollLeft;\n const y = e.pageY - document.documentElement.scrollTop;\n setMouseMove(x, y);\n }\n\n function touchMoveEventHandler(e) {\n const x = e.touches[0].pageX - document.documentElement.scrollLeft;\n const y = e.touches[0].pageY - document.documentElement.scrollTop;\n setMouseMove(x, y);\n e.preventDefault();\n }\n\n bugReportingEditor.addEventListener(\"mouseup\", mouseUpEventHandler);\n bugReportingEditor.addEventListener(\"mousemove\", mouseMoveEventHandler);\n bugReportingEditor.addEventListener(\"mousedown\", mouseDownEventHandler);\n bugReportingEditor.addEventListener(\"touchstart\", touchstartEventHandler);\n bugReportingEditor.addEventListener(\"touchmove\", touchMoveEventHandler);\n bugReportingEditor.addEventListener(\"touchend\", mouseUpEventHandler);\n }\n}\n\nexport default BugBattle;\n","import BugBattle from './BugBattle';\nexport default BugBattle;"],"sourceRoot":""} \ No newline at end of file diff --git a/demo/index.html b/demo/index.html index e097c73b..5bd6faef 100644 --- a/demo/index.html +++ b/demo/index.html @@ -1 +1 @@ -Bugbattle

JavaScript Demo

Bugbattle SDK for the Web

The Bugbattle SDK for JavScript is the easiest way to integrate Bugbattle into your apps! Achieve better app quality & ratings with comprehensive in-app bug reporting. BugBattle offers affordable In-App Bug Reporting for Apps, WebApps & Websites.

No more wasting time trying to reproduce a bug. Bugbattle reports automatically contain a replay video, session data, logs and more. Even better: You can add custom data to your bug details.

In less than a minute you can add our Bugbattle SDK to your App or WebApp. Install our SDK, build and run. A piece of cake.

Report feedback Fake critical error
What are you waiting for?
Get started
\ No newline at end of file +Bugbattle

JavaScript Demo

Bugbattle SDK for the Web

The Bugbattle SDK for JavScript is the easiest way to integrate Bugbattle into your apps! Achieve better app quality & ratings with comprehensive in-app bug reporting. BugBattle offers affordable In-App Bug Reporting for Apps, WebApps & Websites.

No more wasting time trying to reproduce a bug. Bugbattle reports automatically contain a replay video, session data, logs and more. Even better: You can add custom data to your bug details.

In less than a minute you can add our Bugbattle SDK to your App or WebApp. Install our SDK, build and run. A piece of cake.

Report feedback Fake critical error
What are you waiting for?
Get started
\ No newline at end of file diff --git a/demo/index.js b/demo/index.js index 1df54073..04d585f5 100644 --- a/demo/index.js +++ b/demo/index.js @@ -1,2 +1,2 @@ -!function(A){var e={};function t(r){if(e[r])return e[r].exports;var n=e[r]={i:r,l:!1,exports:{}};return A[r].call(n.exports,n,n.exports,t),n.l=!0,n.exports}t.m=A,t.c=e,t.d=function(A,e,r){t.o(A,e)||Object.defineProperty(A,e,{enumerable:!0,get:r})},t.r=function(A){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(A,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(A,"__esModule",{value:!0})},t.t=function(A,e){if(1&e&&(A=t(A)),8&e)return A;if(4&e&&"object"===typeof A&&A&&A.__esModule)return A;var r=Object.create(null);if(t.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:A}),2&e&&"string"!=typeof A)for(var n in A)t.d(r,n,function(e){return A[e]}.bind(null,n));return r},t.n=function(A){var e=A&&A.__esModule?function(){return A.default}:function(){return A};return t.d(e,"a",e),e},t.o=function(A,e){return Object.prototype.hasOwnProperty.call(A,e)},t.p="",t(t.s=1)}([function(A,e,t){A.exports=function(){"use strict";var A=function(e,t){return(A=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(A,e){A.__proto__=e}||function(A,e){for(var t in e)e.hasOwnProperty(t)&&(A[t]=e[t])})(e,t)};function e(e,t){function r(){this.constructor=e}A(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}var t=function(){return(t=Object.assign||function(A){for(var e,t=1,r=arguments.length;t0&&n[n.length-1])&&(6===o[0]||2===o[0])){s=0;continue}if(3===o[0]&&(!n||o[1]>n[0]&&o[1]=55296&&n<=56319&&t>10),s%1024+56320)),(n+1===t||r.length>16384)&&(o+=String.fromCharCode.apply(String,r),r.length=0)}return o},a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",c="undefined"===typeof Uint8Array?[]:new Uint8Array(256),u=0;u=0){if(A<55296||A>56319&&A<=65535)return e=((e=this.index[A>>5])<<2)+(31&A),this.data[e];if(A<=65535)return e=((e=this.index[2048+(A-55296>>5)])<<2)+(31&A),this.data[e];if(A>11),e=this.index[e],e+=A>>5&63,e=((e=this.index[e])<<2)+(31&A),this.data[e];if(A<=1114111)return this.data[this.highValueIndex]}return this.errorValue},A}(),g=10,U=13,C=15,d=17,h=18,E=19,F=20,f=21,p=22,H=24,N=25,K=26,b=27,m=28,I=30,v=32,T=33,y=34,L=35,R=37,O=38,S=39,D=40,M=42,_=function(A){var e,t,r,n=function(A){var e,t,r,n,o,s=.75*A.length,B=A.length,i=0;"="===A[A.length-1]&&(s--,"="===A[A.length-2]&&s--);var a="undefined"!==typeof ArrayBuffer&&"undefined"!==typeof Uint8Array&&"undefined"!==typeof Uint8Array.prototype.slice?new ArrayBuffer(s):new Array(s),u=Array.isArray(a)?a:new Uint8Array(a);for(e=0;e>4,u[i++]=(15&r)<<4|n>>2,u[i++]=(3&n)<<6|63&o;return a}(A),o=Array.isArray(n)?function(A){for(var e=A.length,t=[],r=0;r0;){var s=r[--o];if(Array.isArray(A)?-1!==A.indexOf(s):A===s)for(var B=t;B<=r.length;){var i;if((i=r[++B])===e)return!0;if(i!==g)break}if(s!==g)break}return!1},W=function(A,e){for(var t=A;t>=0;){var r=e[t];if(r!==g)return r;t--}return 0},Y=function(A,e,t,r,n){if(0===t[r])return"\xd7";var o=r-1;if(Array.isArray(n)&&!0===n[o])return"\xd7";var s=o-1,B=o+1,i=e[o],a=s>=0?e[s]:0,c=e[B];if(2===i&&3===c)return"\xd7";if(-1!==P.indexOf(i))return"!";if(-1!==P.indexOf(c))return"\xd7";if(-1!==k.indexOf(c))return"\xd7";if(8===W(o,e))return"\xf7";if(11===_.get(A[o])&&(c===R||c===v||c===T))return"\xd7";if(7===i||7===c)return"\xd7";if(9===i)return"\xd7";if(-1===[g,U,C].indexOf(i)&&9===c)return"\xd7";if(-1!==[d,h,E,H,m].indexOf(c))return"\xd7";if(W(o,e)===p)return"\xd7";if(G(23,p,o,e))return"\xd7";if(G([d,h],f,o,e))return"\xd7";if(G(12,12,o,e))return"\xd7";if(i===g)return"\xf7";if(23===i||23===c)return"\xd7";if(16===c||16===i)return"\xf7";if(-1!==[U,C,f].indexOf(c)||14===i)return"\xd7";if(36===a&&-1!==J.indexOf(i))return"\xd7";if(i===m&&36===c)return"\xd7";if(c===F&&-1!==x.concat(F,E,N,R,v,T).indexOf(i))return"\xd7";if(-1!==x.indexOf(c)&&i===N||-1!==x.indexOf(i)&&c===N)return"\xd7";if(i===b&&-1!==[R,v,T].indexOf(c)||-1!==[R,v,T].indexOf(i)&&c===K)return"\xd7";if(-1!==x.indexOf(i)&&-1!==V.indexOf(c)||-1!==V.indexOf(i)&&-1!==x.indexOf(c))return"\xd7";if(-1!==[b,K].indexOf(i)&&(c===N||-1!==[p,C].indexOf(c)&&e[B+1]===N)||-1!==[p,C].indexOf(i)&&c===N||i===N&&-1!==[N,m,H].indexOf(c))return"\xd7";if(-1!==[N,m,H,d,h].indexOf(c))for(var u=o;u>=0;){if((l=e[u])===N)return"\xd7";if(-1===[m,H].indexOf(l))break;u--}if(-1!==[b,K].indexOf(c))for(u=-1!==[d,h].indexOf(i)?s:o;u>=0;){var l;if((l=e[u])===N)return"\xd7";if(-1===[m,H].indexOf(l))break;u--}if(O===i&&-1!==[O,S,y,L].indexOf(c)||-1!==[S,y].indexOf(i)&&-1!==[S,D].indexOf(c)||-1!==[D,L].indexOf(i)&&c===D)return"\xd7";if(-1!==X.indexOf(i)&&-1!==[F,K].indexOf(c)||-1!==X.indexOf(c)&&i===b)return"\xd7";if(-1!==x.indexOf(i)&&-1!==x.indexOf(c))return"\xd7";if(i===H&&-1!==x.indexOf(c))return"\xd7";if(-1!==x.concat(N).indexOf(i)&&c===p||-1!==x.concat(N).indexOf(c)&&i===h)return"\xd7";if(41===i&&41===c){for(var Q=t[o],w=1;Q>0&&41===e[--Q];)w++;if(w%2!==0)return"\xd7"}return i===v&&c===T?"\xd7":"\xf7"},q=function(A,e){e||(e={lineBreak:"normal",wordBreak:"normal"});var t=function(A,e){void 0===e&&(e="strict");var t=[],r=[],n=[];return A.forEach((function(A,o){var s=_.get(A);if(s>50?(n.push(!0),s-=50):n.push(!1),-1!==["normal","auto","loose"].indexOf(e)&&-1!==[8208,8211,12316,12448].indexOf(A))return r.push(o),t.push(16);if(4===s||11===s){if(0===o)return r.push(o),t.push(I);var B=t[o-1];return-1===z.indexOf(B)?(r.push(r[o-1]),t.push(B)):(r.push(o),t.push(I))}return r.push(o),31===s?t.push("strict"===e?f:R):s===M||29===s?t.push(I):43===s?A>=131072&&A<=196605||A>=196608&&A<=262141?t.push(R):t.push(I):void t.push(s)})),[r,t,n]}(A,e.lineBreak),r=t[0],n=t[1],o=t[2];return"break-all"!==e.wordBreak&&"break-word"!==e.wordBreak||(n=n.map((function(A){return-1!==[N,I,M].indexOf(A)?R:A}))),[r,n,"keep-all"===e.wordBreak?o.map((function(e,t){return e&&A[t]>=19968&&A[t]<=40959})):void 0]},Z=function(){function A(A,e,t,r){this.codePoints=A,this.required="!"===e,this.start=t,this.end=r}return A.prototype.slice=function(){return i.apply(void 0,this.codePoints.slice(this.start,this.end))},A}();!function(A){A[A.STRING_TOKEN=0]="STRING_TOKEN",A[A.BAD_STRING_TOKEN=1]="BAD_STRING_TOKEN",A[A.LEFT_PARENTHESIS_TOKEN=2]="LEFT_PARENTHESIS_TOKEN",A[A.RIGHT_PARENTHESIS_TOKEN=3]="RIGHT_PARENTHESIS_TOKEN",A[A.COMMA_TOKEN=4]="COMMA_TOKEN",A[A.HASH_TOKEN=5]="HASH_TOKEN",A[A.DELIM_TOKEN=6]="DELIM_TOKEN",A[A.AT_KEYWORD_TOKEN=7]="AT_KEYWORD_TOKEN",A[A.PREFIX_MATCH_TOKEN=8]="PREFIX_MATCH_TOKEN",A[A.DASH_MATCH_TOKEN=9]="DASH_MATCH_TOKEN",A[A.INCLUDE_MATCH_TOKEN=10]="INCLUDE_MATCH_TOKEN",A[A.LEFT_CURLY_BRACKET_TOKEN=11]="LEFT_CURLY_BRACKET_TOKEN",A[A.RIGHT_CURLY_BRACKET_TOKEN=12]="RIGHT_CURLY_BRACKET_TOKEN",A[A.SUFFIX_MATCH_TOKEN=13]="SUFFIX_MATCH_TOKEN",A[A.SUBSTRING_MATCH_TOKEN=14]="SUBSTRING_MATCH_TOKEN",A[A.DIMENSION_TOKEN=15]="DIMENSION_TOKEN",A[A.PERCENTAGE_TOKEN=16]="PERCENTAGE_TOKEN",A[A.NUMBER_TOKEN=17]="NUMBER_TOKEN",A[A.FUNCTION=18]="FUNCTION",A[A.FUNCTION_TOKEN=19]="FUNCTION_TOKEN",A[A.IDENT_TOKEN=20]="IDENT_TOKEN",A[A.COLUMN_TOKEN=21]="COLUMN_TOKEN",A[A.URL_TOKEN=22]="URL_TOKEN",A[A.BAD_URL_TOKEN=23]="BAD_URL_TOKEN",A[A.CDC_TOKEN=24]="CDC_TOKEN",A[A.CDO_TOKEN=25]="CDO_TOKEN",A[A.COLON_TOKEN=26]="COLON_TOKEN",A[A.SEMICOLON_TOKEN=27]="SEMICOLON_TOKEN",A[A.LEFT_SQUARE_BRACKET_TOKEN=28]="LEFT_SQUARE_BRACKET_TOKEN",A[A.RIGHT_SQUARE_BRACKET_TOKEN=29]="RIGHT_SQUARE_BRACKET_TOKEN",A[A.UNICODE_RANGE_TOKEN=30]="UNICODE_RANGE_TOKEN",A[A.WHITESPACE_TOKEN=31]="WHITESPACE_TOKEN",A[A.EOF_TOKEN=32]="EOF_TOKEN"}(l||(l={}));var j=function(A){return A>=48&&A<=57},$=function(A){return j(A)||A>=65&&A<=70||A>=97&&A<=102},AA=function(A){return 10===A||9===A||32===A},eA=function(A){return function(A){return function(A){return A>=97&&A<=122}(A)||function(A){return A>=65&&A<=90}(A)}(A)||function(A){return A>=128}(A)||95===A},tA=function(A){return eA(A)||j(A)||45===A},rA=function(A){return A>=0&&A<=8||11===A||A>=14&&A<=31||127===A},nA=function(A,e){return 92===A&&10!==e},oA=function(A,e,t){return 45===A?eA(e)||nA(e,t):!!eA(A)||!(92!==A||!nA(A,e))},sA=function(A,e,t){return 43===A||45===A?!!j(e)||46===e&&j(t):j(46===A?e:A)},BA=function(A){var e=0,t=1;43!==A[e]&&45!==A[e]||(45===A[e]&&(t=-1),e++);for(var r=[];j(A[e]);)r.push(A[e++]);var n=r.length?parseInt(i.apply(void 0,r),10):0;46===A[e]&&e++;for(var o=[];j(A[e]);)o.push(A[e++]);var s=o.length,B=s?parseInt(i.apply(void 0,o),10):0;69!==A[e]&&101!==A[e]||e++;var a=1;43!==A[e]&&45!==A[e]||(45===A[e]&&(a=-1),e++);for(var c=[];j(A[e]);)c.push(A[e++]);var u=c.length?parseInt(i.apply(void 0,c),10):0;return t*(n+B*Math.pow(10,-s))*Math.pow(10,a*u)},iA={type:l.LEFT_PARENTHESIS_TOKEN},aA={type:l.RIGHT_PARENTHESIS_TOKEN},cA={type:l.COMMA_TOKEN},uA={type:l.SUFFIX_MATCH_TOKEN},lA={type:l.PREFIX_MATCH_TOKEN},QA={type:l.COLUMN_TOKEN},wA={type:l.DASH_MATCH_TOKEN},gA={type:l.INCLUDE_MATCH_TOKEN},UA={type:l.LEFT_CURLY_BRACKET_TOKEN},CA={type:l.RIGHT_CURLY_BRACKET_TOKEN},dA={type:l.SUBSTRING_MATCH_TOKEN},hA={type:l.BAD_URL_TOKEN},EA={type:l.BAD_STRING_TOKEN},FA={type:l.CDO_TOKEN},fA={type:l.CDC_TOKEN},pA={type:l.COLON_TOKEN},HA={type:l.SEMICOLON_TOKEN},NA={type:l.LEFT_SQUARE_BRACKET_TOKEN},KA={type:l.RIGHT_SQUARE_BRACKET_TOKEN},bA={type:l.WHITESPACE_TOKEN},mA={type:l.EOF_TOKEN},IA=function(){function A(){this._value=[]}return A.prototype.write=function(A){this._value=this._value.concat(B(A))},A.prototype.read=function(){for(var A=[],e=this.consumeToken();e!==mA;)A.push(e),e=this.consumeToken();return A},A.prototype.consumeToken=function(){var A=this.consumeCodePoint();switch(A){case 34:return this.consumeStringToken(34);case 35:var e=this.peekCodePoint(0),t=this.peekCodePoint(1),r=this.peekCodePoint(2);if(tA(e)||nA(t,r)){var n=oA(e,t,r)?2:1,o=this.consumeName();return{type:l.HASH_TOKEN,value:o,flags:n}}break;case 36:if(61===this.peekCodePoint(0))return this.consumeCodePoint(),uA;break;case 39:return this.consumeStringToken(39);case 40:return iA;case 41:return aA;case 42:if(61===this.peekCodePoint(0))return this.consumeCodePoint(),dA;break;case 43:if(sA(A,this.peekCodePoint(0),this.peekCodePoint(1)))return this.reconsumeCodePoint(A),this.consumeNumericToken();break;case 44:return cA;case 45:var s=A,B=this.peekCodePoint(0),a=this.peekCodePoint(1);if(sA(s,B,a))return this.reconsumeCodePoint(A),this.consumeNumericToken();if(oA(s,B,a))return this.reconsumeCodePoint(A),this.consumeIdentLikeToken();if(45===B&&62===a)return this.consumeCodePoint(),this.consumeCodePoint(),fA;break;case 46:if(sA(A,this.peekCodePoint(0),this.peekCodePoint(1)))return this.reconsumeCodePoint(A),this.consumeNumericToken();break;case 47:if(42===this.peekCodePoint(0))for(this.consumeCodePoint();;){var c=this.consumeCodePoint();if(42===c&&47===(c=this.consumeCodePoint()))return this.consumeToken();if(-1===c)return this.consumeToken()}break;case 58:return pA;case 59:return HA;case 60:if(33===this.peekCodePoint(0)&&45===this.peekCodePoint(1)&&45===this.peekCodePoint(2))return this.consumeCodePoint(),this.consumeCodePoint(),FA;break;case 64:var u=this.peekCodePoint(0),Q=this.peekCodePoint(1),w=this.peekCodePoint(2);if(oA(u,Q,w))return o=this.consumeName(),{type:l.AT_KEYWORD_TOKEN,value:o};break;case 91:return NA;case 92:if(nA(A,this.peekCodePoint(0)))return this.reconsumeCodePoint(A),this.consumeIdentLikeToken();break;case 93:return KA;case 61:if(61===this.peekCodePoint(0))return this.consumeCodePoint(),lA;break;case 123:return UA;case 125:return CA;case 117:case 85:var g=this.peekCodePoint(0),U=this.peekCodePoint(1);return 43!==g||!$(U)&&63!==U||(this.consumeCodePoint(),this.consumeUnicodeRangeToken()),this.reconsumeCodePoint(A),this.consumeIdentLikeToken();case 124:if(61===this.peekCodePoint(0))return this.consumeCodePoint(),wA;if(124===this.peekCodePoint(0))return this.consumeCodePoint(),QA;break;case 126:if(61===this.peekCodePoint(0))return this.consumeCodePoint(),gA;break;case-1:return mA}return AA(A)?(this.consumeWhiteSpace(),bA):j(A)?(this.reconsumeCodePoint(A),this.consumeNumericToken()):eA(A)?(this.reconsumeCodePoint(A),this.consumeIdentLikeToken()):{type:l.DELIM_TOKEN,value:i(A)}},A.prototype.consumeCodePoint=function(){var A=this._value.shift();return"undefined"===typeof A?-1:A},A.prototype.reconsumeCodePoint=function(A){this._value.unshift(A)},A.prototype.peekCodePoint=function(A){return A>=this._value.length?-1:this._value[A]},A.prototype.consumeUnicodeRangeToken=function(){for(var A=[],e=this.consumeCodePoint();$(e)&&A.length<6;)A.push(e),e=this.consumeCodePoint();for(var t=!1;63===e&&A.length<6;)A.push(e),e=this.consumeCodePoint(),t=!0;if(t){var r=parseInt(i.apply(void 0,A.map((function(A){return 63===A?48:A}))),16),n=parseInt(i.apply(void 0,A.map((function(A){return 63===A?70:A}))),16);return{type:l.UNICODE_RANGE_TOKEN,start:r,end:n}}var o=parseInt(i.apply(void 0,A),16);if(45===this.peekCodePoint(0)&&$(this.peekCodePoint(1))){this.consumeCodePoint(),e=this.consumeCodePoint();for(var s=[];$(e)&&s.length<6;)s.push(e),e=this.consumeCodePoint();return n=parseInt(i.apply(void 0,s),16),{type:l.UNICODE_RANGE_TOKEN,start:o,end:n}}return{type:l.UNICODE_RANGE_TOKEN,start:o,end:o}},A.prototype.consumeIdentLikeToken=function(){var A=this.consumeName();return"url"===A.toLowerCase()&&40===this.peekCodePoint(0)?(this.consumeCodePoint(),this.consumeUrlToken()):40===this.peekCodePoint(0)?(this.consumeCodePoint(),{type:l.FUNCTION_TOKEN,value:A}):{type:l.IDENT_TOKEN,value:A}},A.prototype.consumeUrlToken=function(){var A=[];if(this.consumeWhiteSpace(),-1===this.peekCodePoint(0))return{type:l.URL_TOKEN,value:""};var e=this.peekCodePoint(0);if(39===e||34===e){var t=this.consumeStringToken(this.consumeCodePoint());return t.type===l.STRING_TOKEN&&(this.consumeWhiteSpace(),-1===this.peekCodePoint(0)||41===this.peekCodePoint(0))?(this.consumeCodePoint(),{type:l.URL_TOKEN,value:t.value}):(this.consumeBadUrlRemnants(),hA)}for(;;){var r=this.consumeCodePoint();if(-1===r||41===r)return{type:l.URL_TOKEN,value:i.apply(void 0,A)};if(AA(r))return this.consumeWhiteSpace(),-1===this.peekCodePoint(0)||41===this.peekCodePoint(0)?(this.consumeCodePoint(),{type:l.URL_TOKEN,value:i.apply(void 0,A)}):(this.consumeBadUrlRemnants(),hA);if(34===r||39===r||40===r||rA(r))return this.consumeBadUrlRemnants(),hA;if(92===r){if(!nA(r,this.peekCodePoint(0)))return this.consumeBadUrlRemnants(),hA;A.push(this.consumeEscapedCodePoint())}else A.push(r)}},A.prototype.consumeWhiteSpace=function(){for(;AA(this.peekCodePoint(0));)this.consumeCodePoint()},A.prototype.consumeBadUrlRemnants=function(){for(;;){var A=this.consumeCodePoint();if(41===A||-1===A)return;nA(A,this.peekCodePoint(0))&&this.consumeEscapedCodePoint()}},A.prototype.consumeStringSlice=function(A){for(var e="";A>0;){var t=Math.min(6e4,A);e+=i.apply(void 0,this._value.splice(0,t)),A-=t}return this._value.shift(),e},A.prototype.consumeStringToken=function(A){for(var e="",t=0;;){var r=this._value[t];if(-1===r||void 0===r||r===A)return e+=this.consumeStringSlice(t),{type:l.STRING_TOKEN,value:e};if(10===r)return this._value.splice(0,t),EA;if(92===r){var n=this._value[t+1];-1!==n&&void 0!==n&&(10===n?(e+=this.consumeStringSlice(t),t=-1,this._value.shift()):nA(r,n)&&(e+=this.consumeStringSlice(t),e+=i(this.consumeEscapedCodePoint()),t=-1))}t++}},A.prototype.consumeNumber=function(){var A=[],e=4,t=this.peekCodePoint(0);for(43!==t&&45!==t||A.push(this.consumeCodePoint());j(this.peekCodePoint(0));)A.push(this.consumeCodePoint());t=this.peekCodePoint(0);var r=this.peekCodePoint(1);if(46===t&&j(r))for(A.push(this.consumeCodePoint(),this.consumeCodePoint()),e=8;j(this.peekCodePoint(0));)A.push(this.consumeCodePoint());t=this.peekCodePoint(0),r=this.peekCodePoint(1);var n=this.peekCodePoint(2);if((69===t||101===t)&&((43===r||45===r)&&j(n)||j(r)))for(A.push(this.consumeCodePoint(),this.consumeCodePoint()),e=8;j(this.peekCodePoint(0));)A.push(this.consumeCodePoint());return[BA(A),e]},A.prototype.consumeNumericToken=function(){var A=this.consumeNumber(),e=A[0],t=A[1],r=this.peekCodePoint(0),n=this.peekCodePoint(1),o=this.peekCodePoint(2);if(oA(r,n,o)){var s=this.consumeName();return{type:l.DIMENSION_TOKEN,number:e,flags:t,unit:s}}return 37===r?(this.consumeCodePoint(),{type:l.PERCENTAGE_TOKEN,number:e,flags:t}):{type:l.NUMBER_TOKEN,number:e,flags:t}},A.prototype.consumeEscapedCodePoint=function(){var A=this.consumeCodePoint();if($(A)){for(var e=i(A);$(this.peekCodePoint(0))&&e.length<6;)e+=i(this.consumeCodePoint());AA(this.peekCodePoint(0))&&this.consumeCodePoint();var t=parseInt(e,16);return 0===t||function(A){return A>=55296&&A<=57343}(t)||t>1114111?65533:t}return-1===A?65533:A},A.prototype.consumeName=function(){for(var A="";;){var e=this.consumeCodePoint();if(tA(e))A+=i(e);else{if(!nA(e,this.peekCodePoint(0)))return this.reconsumeCodePoint(e),A;A+=i(this.consumeEscapedCodePoint())}}},A}(),vA=function(){function A(A){this._tokens=A}return A.create=function(e){var t=new IA;return t.write(e),new A(t.read())},A.parseValue=function(e){return A.create(e).parseComponentValue()},A.parseValues=function(e){return A.create(e).parseComponentValues()},A.prototype.parseComponentValue=function(){for(var A=this.consumeToken();A.type===l.WHITESPACE_TOKEN;)A=this.consumeToken();if(A.type===l.EOF_TOKEN)throw new SyntaxError("Error parsing CSS component value, unexpected EOF");this.reconsumeToken(A);var e=this.consumeComponentValue();do{A=this.consumeToken()}while(A.type===l.WHITESPACE_TOKEN);if(A.type===l.EOF_TOKEN)return e;throw new SyntaxError("Error parsing CSS component value, multiple values found when expecting only one")},A.prototype.parseComponentValues=function(){for(var A=[];;){var e=this.consumeComponentValue();if(e.type===l.EOF_TOKEN)return A;A.push(e),A.push()}},A.prototype.consumeComponentValue=function(){var A=this.consumeToken();switch(A.type){case l.LEFT_CURLY_BRACKET_TOKEN:case l.LEFT_SQUARE_BRACKET_TOKEN:case l.LEFT_PARENTHESIS_TOKEN:return this.consumeSimpleBlock(A.type);case l.FUNCTION_TOKEN:return this.consumeFunction(A)}return A},A.prototype.consumeSimpleBlock=function(A){for(var e={type:A,values:[]},t=this.consumeToken();;){if(t.type===l.EOF_TOKEN||_A(t,A))return e;this.reconsumeToken(t),e.values.push(this.consumeComponentValue()),t=this.consumeToken()}},A.prototype.consumeFunction=function(A){for(var e={name:A.value,values:[],type:l.FUNCTION};;){var t=this.consumeToken();if(t.type===l.EOF_TOKEN||t.type===l.RIGHT_PARENTHESIS_TOKEN)return e;this.reconsumeToken(t),e.values.push(this.consumeComponentValue())}},A.prototype.consumeToken=function(){var A=this._tokens.shift();return"undefined"===typeof A?mA:A},A.prototype.reconsumeToken=function(A){this._tokens.unshift(A)},A}(),TA=function(A){return A.type===l.DIMENSION_TOKEN},yA=function(A){return A.type===l.NUMBER_TOKEN},LA=function(A){return A.type===l.IDENT_TOKEN},RA=function(A){return A.type===l.STRING_TOKEN},OA=function(A,e){return LA(A)&&A.value===e},SA=function(A){return A.type!==l.WHITESPACE_TOKEN},DA=function(A){return A.type!==l.WHITESPACE_TOKEN&&A.type!==l.COMMA_TOKEN},MA=function(A){var e=[],t=[];return A.forEach((function(A){if(A.type===l.COMMA_TOKEN){if(0===t.length)throw new Error("Error parsing function args, zero tokens for arg");return e.push(t),void(t=[])}A.type!==l.WHITESPACE_TOKEN&&t.push(A)})),t.length&&e.push(t),e},_A=function(A,e){return e===l.LEFT_CURLY_BRACKET_TOKEN&&A.type===l.RIGHT_CURLY_BRACKET_TOKEN||e===l.LEFT_SQUARE_BRACKET_TOKEN&&A.type===l.RIGHT_SQUARE_BRACKET_TOKEN||e===l.LEFT_PARENTHESIS_TOKEN&&A.type===l.RIGHT_PARENTHESIS_TOKEN},xA=function(A){return A.type===l.NUMBER_TOKEN||A.type===l.DIMENSION_TOKEN},PA=function(A){return A.type===l.PERCENTAGE_TOKEN||xA(A)},kA=function(A){return A.length>1?[A[0],A[1]]:[A[0]]},VA={type:l.NUMBER_TOKEN,number:0,flags:4},zA={type:l.PERCENTAGE_TOKEN,number:50,flags:4},XA={type:l.PERCENTAGE_TOKEN,number:100,flags:4},JA=function(A,e,t){var r=A[0],n=A[1];return[GA(r,e),GA("undefined"!==typeof n?n:r,t)]},GA=function(A,e){if(A.type===l.PERCENTAGE_TOKEN)return A.number/100*e;if(TA(A))switch(A.unit){case"rem":case"em":return 16*A.number;case"px":default:return A.number}return A.number},WA=function(A){if(A.type===l.DIMENSION_TOKEN)switch(A.unit){case"deg":return Math.PI*A.number/180;case"grad":return Math.PI/200*A.number;case"rad":return A.number;case"turn":return 2*Math.PI*A.number}throw new Error("Unsupported angle type")},YA=function(A){return A.type===l.DIMENSION_TOKEN&&("deg"===A.unit||"grad"===A.unit||"rad"===A.unit||"turn"===A.unit)},qA=function(A){switch(A.filter(LA).map((function(A){return A.value})).join(" ")){case"to bottom right":case"to right bottom":case"left top":case"top left":return[VA,VA];case"to top":case"bottom":return ZA(0);case"to bottom left":case"to left bottom":case"right top":case"top right":return[VA,XA];case"to right":case"left":return ZA(90);case"to top left":case"to left top":case"right bottom":case"bottom right":return[XA,XA];case"to bottom":case"top":return ZA(180);case"to top right":case"to right top":case"left bottom":case"bottom left":return[XA,VA];case"to left":case"right":return ZA(270)}return 0},ZA=function(A){return Math.PI*A/180},jA=function(A){if(A.type===l.FUNCTION){var e=ie[A.name];if("undefined"===typeof e)throw new Error('Attempting to parse an unsupported color function "'+A.name+'"');return e(A.values)}if(A.type===l.HASH_TOKEN){if(3===A.value.length){var t=A.value.substring(0,1),r=A.value.substring(1,2),n=A.value.substring(2,3);return ee(parseInt(t+t,16),parseInt(r+r,16),parseInt(n+n,16),1)}if(4===A.value.length){t=A.value.substring(0,1),r=A.value.substring(1,2),n=A.value.substring(2,3);var o=A.value.substring(3,4);return ee(parseInt(t+t,16),parseInt(r+r,16),parseInt(n+n,16),parseInt(o+o,16)/255)}if(6===A.value.length)return t=A.value.substring(0,2),r=A.value.substring(2,4),n=A.value.substring(4,6),ee(parseInt(t,16),parseInt(r,16),parseInt(n,16),1);if(8===A.value.length)return t=A.value.substring(0,2),r=A.value.substring(2,4),n=A.value.substring(4,6),o=A.value.substring(6,8),ee(parseInt(t,16),parseInt(r,16),parseInt(n,16),parseInt(o,16)/255)}if(A.type===l.IDENT_TOKEN){var s=ae[A.value.toUpperCase()];if("undefined"!==typeof s)return s}return ae.TRANSPARENT},$A=function(A){return 0===(255&A)},Ae=function(A){var e=255&A,t=255&A>>8,r=255&A>>16,n=255&A>>24;return e<255?"rgba("+n+","+r+","+t+","+e/255+")":"rgb("+n+","+r+","+t+")"},ee=function(A,e,t,r){return(A<<24|e<<16|t<<8|Math.round(255*r)<<0)>>>0},te=function(A,e){if(A.type===l.NUMBER_TOKEN)return A.number;if(A.type===l.PERCENTAGE_TOKEN){var t=3===e?1:255;return 3===e?A.number/100*t:Math.round(A.number/100*t)}return 0},re=function(A){var e=A.filter(DA);if(3===e.length){var t=e.map(te),r=t[0],n=t[1],o=t[2];return ee(r,n,o,1)}if(4===e.length){var s=e.map(te),B=(r=s[0],n=s[1],o=s[2],s[3]);return ee(r,n,o,B)}return 0};function ne(A,e,t){return t<0&&(t+=1),t>=1&&(t-=1),t<1/6?(e-A)*t*6+A:t<.5?e:t<2/3?6*(e-A)*(2/3-t)+A:A}var oe,se,Be=function(A){var e=A.filter(DA),t=e[0],r=e[1],n=e[2],o=e[3],s=(t.type===l.NUMBER_TOKEN?ZA(t.number):WA(t))/(2*Math.PI),B=PA(r)?r.number/100:0,i=PA(n)?n.number/100:0,a="undefined"!==typeof o&&PA(o)?GA(o,1):1;if(0===B)return ee(255*i,255*i,255*i,1);var c=i<=.5?i*(B+1):i+B-i*B,u=2*i-c,Q=ne(u,c,s+1/3),w=ne(u,c,s),g=ne(u,c,s-1/3);return ee(255*Q,255*w,255*g,a)},ie={hsl:Be,hsla:Be,rgb:re,rgba:re},ae={ALICEBLUE:4042850303,ANTIQUEWHITE:4209760255,AQUA:16777215,AQUAMARINE:2147472639,AZURE:4043309055,BEIGE:4126530815,BISQUE:4293182719,BLACK:255,BLANCHEDALMOND:4293643775,BLUE:65535,BLUEVIOLET:2318131967,BROWN:2771004159,BURLYWOOD:3736635391,CADETBLUE:1604231423,CHARTREUSE:2147418367,CHOCOLATE:3530104575,CORAL:4286533887,CORNFLOWERBLUE:1687547391,CORNSILK:4294499583,CRIMSON:3692313855,CYAN:16777215,DARKBLUE:35839,DARKCYAN:9145343,DARKGOLDENROD:3095837695,DARKGRAY:2846468607,DARKGREEN:6553855,DARKGREY:2846468607,DARKKHAKI:3182914559,DARKMAGENTA:2332068863,DARKOLIVEGREEN:1433087999,DARKORANGE:4287365375,DARKORCHID:2570243327,DARKRED:2332033279,DARKSALMON:3918953215,DARKSEAGREEN:2411499519,DARKSLATEBLUE:1211993087,DARKSLATEGRAY:793726975,DARKSLATEGREY:793726975,DARKTURQUOISE:13554175,DARKVIOLET:2483082239,DEEPPINK:4279538687,DEEPSKYBLUE:12582911,DIMGRAY:1768516095,DIMGREY:1768516095,DODGERBLUE:512819199,FIREBRICK:2988581631,FLORALWHITE:4294635775,FORESTGREEN:579543807,FUCHSIA:4278255615,GAINSBORO:3705462015,GHOSTWHITE:4177068031,GOLD:4292280575,GOLDENROD:3668254975,GRAY:2155905279,GREEN:8388863,GREENYELLOW:2919182335,GREY:2155905279,HONEYDEW:4043305215,HOTPINK:4285117695,INDIANRED:3445382399,INDIGO:1258324735,IVORY:4294963455,KHAKI:4041641215,LAVENDER:3873897215,LAVENDERBLUSH:4293981695,LAWNGREEN:2096890111,LEMONCHIFFON:4294626815,LIGHTBLUE:2916673279,LIGHTCORAL:4034953471,LIGHTCYAN:3774873599,LIGHTGOLDENRODYELLOW:4210742015,LIGHTGRAY:3553874943,LIGHTGREEN:2431553791,LIGHTGREY:3553874943,LIGHTPINK:4290167295,LIGHTSALMON:4288707327,LIGHTSEAGREEN:548580095,LIGHTSKYBLUE:2278488831,LIGHTSLATEGRAY:2005441023,LIGHTSLATEGREY:2005441023,LIGHTSTEELBLUE:2965692159,LIGHTYELLOW:4294959359,LIME:16711935,LIMEGREEN:852308735,LINEN:4210091775,MAGENTA:4278255615,MAROON:2147483903,MEDIUMAQUAMARINE:1724754687,MEDIUMBLUE:52735,MEDIUMORCHID:3126187007,MEDIUMPURPLE:2473647103,MEDIUMSEAGREEN:1018393087,MEDIUMSLATEBLUE:2070474495,MEDIUMSPRINGGREEN:16423679,MEDIUMTURQUOISE:1221709055,MEDIUMVIOLETRED:3340076543,MIDNIGHTBLUE:421097727,MINTCREAM:4127193855,MISTYROSE:4293190143,MOCCASIN:4293178879,NAVAJOWHITE:4292783615,NAVY:33023,OLDLACE:4260751103,OLIVE:2155872511,OLIVEDRAB:1804477439,ORANGE:4289003775,ORANGERED:4282712319,ORCHID:3664828159,PALEGOLDENROD:4008225535,PALEGREEN:2566625535,PALETURQUOISE:2951671551,PALEVIOLETRED:3681588223,PAPAYAWHIP:4293907967,PEACHPUFF:4292524543,PERU:3448061951,PINK:4290825215,PLUM:3718307327,POWDERBLUE:2967529215,PURPLE:2147516671,REBECCAPURPLE:1714657791,RED:4278190335,ROSYBROWN:3163525119,ROYALBLUE:1097458175,SADDLEBROWN:2336560127,SALMON:4202722047,SANDYBROWN:4104413439,SEAGREEN:780883967,SEASHELL:4294307583,SIENNA:2689740287,SILVER:3233857791,SKYBLUE:2278484991,SLATEBLUE:1784335871,SLATEGRAY:1887473919,SLATEGREY:1887473919,SNOW:4294638335,SPRINGGREEN:16744447,STEELBLUE:1182971135,TAN:3535047935,TEAL:8421631,THISTLE:3636451583,TOMATO:4284696575,TRANSPARENT:0,TURQUOISE:1088475391,VIOLET:4001558271,WHEAT:4125012991,WHITE:4294967295,WHITESMOKE:4126537215,YELLOW:4294902015,YELLOWGREEN:2597139199};(function(A){A[A.VALUE=0]="VALUE",A[A.LIST=1]="LIST",A[A.IDENT_VALUE=2]="IDENT_VALUE",A[A.TYPE_VALUE=3]="TYPE_VALUE",A[A.TOKEN_VALUE=4]="TOKEN_VALUE"})(oe||(oe={})),function(A){A[A.BORDER_BOX=0]="BORDER_BOX",A[A.PADDING_BOX=1]="PADDING_BOX",A[A.CONTENT_BOX=2]="CONTENT_BOX"}(se||(se={}));var ce,ue,le,Qe={name:"background-clip",initialValue:"border-box",prefix:!1,type:oe.LIST,parse:function(A){return A.map((function(A){if(LA(A))switch(A.value){case"padding-box":return se.PADDING_BOX;case"content-box":return se.CONTENT_BOX}return se.BORDER_BOX}))}},we={name:"background-color",initialValue:"transparent",prefix:!1,type:oe.TYPE_VALUE,format:"color"},ge=function(A){var e=jA(A[0]),t=A[1];return t&&PA(t)?{color:e,stop:t}:{color:e,stop:null}},Ue=function(A,e){var t=A[0],r=A[A.length-1];null===t.stop&&(t.stop=VA),null===r.stop&&(r.stop=XA);for(var n=[],o=0,s=0;so?n.push(i):n.push(o),o=i}else n.push(null)}var a=null;for(s=0;sA.optimumDistance)?{optimumCorner:e,optimumDistance:B}:A}),{optimumDistance:n?1/0:-1/0,optimumCorner:null}).optimumCorner},Ee=function(A){var e=ZA(180),t=[];return MA(A).forEach((function(A,r){if(0===r){var n=A[0];if(n.type===l.IDENT_TOKEN&&-1!==["top","left","right","bottom"].indexOf(n.value))return void(e=qA(A));if(YA(n))return void(e=(WA(n)+ZA(270))%ZA(360))}var o=ge(A);t.push(o)})),{angle:e,stops:t,type:ce.LINEAR_GRADIENT}},Fe=function(A){return 0===A[0]&&255===A[1]&&0===A[2]&&255===A[3]},fe=function(A,e,t,r,n){var o="http://www.w3.org/2000/svg",s=document.createElementNS(o,"svg"),B=document.createElementNS(o,"foreignObject");return s.setAttributeNS(null,"width",A.toString()),s.setAttributeNS(null,"height",e.toString()),B.setAttributeNS(null,"width","100%"),B.setAttributeNS(null,"height","100%"),B.setAttributeNS(null,"x",t.toString()),B.setAttributeNS(null,"y",r.toString()),B.setAttributeNS(null,"externalResourcesRequired","true"),s.appendChild(B),B.appendChild(n),s},pe=function(A){return new Promise((function(e,t){var r=new Image;r.onload=function(){return e(r)},r.onerror=t,r.src="data:image/svg+xml;charset=utf-8,"+encodeURIComponent((new XMLSerializer).serializeToString(A))}))},He={get SUPPORT_RANGE_BOUNDS(){var A=function(A){if(A.createRange){var e=A.createRange();if(e.getBoundingClientRect){var t=A.createElement("boundtest");t.style.height="123px",t.style.display="block",A.body.appendChild(t),e.selectNode(t);var r=e.getBoundingClientRect(),n=Math.round(r.height);if(A.body.removeChild(t),123===n)return!0}}return!1}(document);return Object.defineProperty(He,"SUPPORT_RANGE_BOUNDS",{value:A}),A},get SUPPORT_SVG_DRAWING(){var A=function(A){var e=new Image,t=A.createElement("canvas"),r=t.getContext("2d");if(!r)return!1;e.src="data:image/svg+xml,";try{r.drawImage(e,0,0),t.toDataURL()}catch(n){return!1}return!0}(document);return Object.defineProperty(He,"SUPPORT_SVG_DRAWING",{value:A}),A},get SUPPORT_FOREIGNOBJECT_DRAWING(){var A="function"===typeof Array.from&&"function"===typeof window.fetch?function(A){var e=A.createElement("canvas");e.width=100,e.height=100;var t=e.getContext("2d");if(!t)return Promise.reject(!1);t.fillStyle="rgb(0, 255, 0)",t.fillRect(0,0,100,100);var r=new Image,n=e.toDataURL();r.src=n;var o=fe(100,100,0,0,r);return t.fillStyle="red",t.fillRect(0,0,100,100),pe(o).then((function(e){t.drawImage(e,0,0);var r=t.getImageData(0,0,100,100).data;t.fillStyle="red",t.fillRect(0,0,100,100);var o=A.createElement("div");return o.style.backgroundImage="url("+n+")",o.style.height="100px",Fe(r)?pe(fe(100,100,0,0,o)):Promise.reject(!1)})).then((function(A){return t.drawImage(A,0,0),Fe(t.getImageData(0,0,100,100).data)})).catch((function(){return!1}))}(document):Promise.resolve(!1);return Object.defineProperty(He,"SUPPORT_FOREIGNOBJECT_DRAWING",{value:A}),A},get SUPPORT_CORS_IMAGES(){var A="undefined"!==typeof(new Image).crossOrigin;return Object.defineProperty(He,"SUPPORT_CORS_IMAGES",{value:A}),A},get SUPPORT_RESPONSE_TYPE(){var A="string"===typeof(new XMLHttpRequest).responseType;return Object.defineProperty(He,"SUPPORT_RESPONSE_TYPE",{value:A}),A},get SUPPORT_CORS_XHR(){var A="withCredentials"in new XMLHttpRequest;return Object.defineProperty(He,"SUPPORT_CORS_XHR",{value:A}),A}},Ne=function(){function A(A){var e=A.id,t=A.enabled;this.id=e,this.enabled=t,this.start=Date.now()}return A.prototype.debug=function(){for(var A=[],e=0;e0&&setTimeout((function(){return e("Timed out ("+s._options.imageTimeout+"ms) loading image")}),s._options.imageTimeout)}))];case 3:return[2,n.sent()]}}))}))},A.prototype.has=function(A){return"undefined"!==typeof this._cache[A]},A.prototype.keys=function(){return Promise.resolve(Object.keys(this._cache))},A.prototype.proxy=function(A){var e=this,t=this._options.proxy;if(!t)throw new Error("No proxy defined");var r=A.substring(0,256);return new Promise((function(n,o){var s=He.SUPPORT_RESPONSE_TYPE?"blob":"text",B=new XMLHttpRequest;if(B.onload=function(){if(200===B.status)if("text"===s)n(B.response);else{var A=new FileReader;A.addEventListener("load",(function(){return n(A.result)}),!1),A.addEventListener("error",(function(A){return o(A)}),!1),A.readAsDataURL(B.response)}else o("Failed to proxy resource "+r+" with status code "+B.status)},B.onerror=o,B.open("GET",t+"?url="+encodeURIComponent(A)+"&responseType="+s),"text"!==s&&B instanceof XMLHttpRequest&&(B.responseType=s),e._options.imageTimeout){var i=e._options.imageTimeout;B.timeout=i,B.ontimeout=function(){return o("Timed out ("+i+"ms) proxying "+r)}}B.send()}))},A}(),me=/^data:image\/svg\+xml/i,Ie=/^data:image\/.*;base64,/i,ve=/^data:image\/.*/i,Te=function(A){return He.SUPPORT_SVG_DRAWING||!Oe(A)},ye=function(A){return ve.test(A)},Le=function(A){return Ie.test(A)},Re=function(A){return"blob"===A.substr(0,4)},Oe=function(A){return"svg"===A.substr(-3).toLowerCase()||me.test(A)},Se=function(A){var e=ue.CIRCLE,t=le.FARTHEST_CORNER,r=[],n=[];return MA(A).forEach((function(A,o){var s=!0;if(0===o?s=A.reduce((function(A,e){if(LA(e))switch(e.value){case"center":return n.push(zA),!1;case"top":case"left":return n.push(VA),!1;case"right":case"bottom":return n.push(XA),!1}else if(PA(e)||xA(e))return n.push(e),!1;return A}),s):1===o&&(s=A.reduce((function(A,r){if(LA(r))switch(r.value){case"circle":return e=ue.CIRCLE,!1;case"ellipse":return e=ue.ELLIPSE,!1;case"contain":case"closest-side":return t=le.CLOSEST_SIDE,!1;case"farthest-side":return t=le.FARTHEST_SIDE,!1;case"closest-corner":return t=le.CLOSEST_CORNER,!1;case"cover":case"farthest-corner":return t=le.FARTHEST_CORNER,!1}else if(xA(r)||PA(r))return Array.isArray(t)||(t=[]),t.push(r),!1;return A}),s)),s){var B=ge(A);r.push(B)}})),{size:t,shape:e,stops:r,position:n,type:ce.RADIAL_GRADIENT}};!function(A){A[A.URL=0]="URL",A[A.LINEAR_GRADIENT=1]="LINEAR_GRADIENT",A[A.RADIAL_GRADIENT=2]="RADIAL_GRADIENT"}(ce||(ce={})),function(A){A[A.CIRCLE=0]="CIRCLE",A[A.ELLIPSE=1]="ELLIPSE"}(ue||(ue={})),function(A){A[A.CLOSEST_SIDE=0]="CLOSEST_SIDE",A[A.FARTHEST_SIDE=1]="FARTHEST_SIDE",A[A.CLOSEST_CORNER=2]="CLOSEST_CORNER",A[A.FARTHEST_CORNER=3]="FARTHEST_CORNER"}(le||(le={}));var De,Me=function(A){if(A.type===l.URL_TOKEN){var e={url:A.value,type:ce.URL};return Ke.getInstance().addImage(A.value),e}if(A.type===l.FUNCTION){var t=_e[A.name];if("undefined"===typeof t)throw new Error('Attempting to parse an unsupported image function "'+A.name+'"');return t(A.values)}throw new Error("Unsupported image type")},_e={"linear-gradient":function(A){var e=ZA(180),t=[];return MA(A).forEach((function(A,r){if(0===r){var n=A[0];if(n.type===l.IDENT_TOKEN&&"to"===n.value)return void(e=qA(A));if(YA(n))return void(e=WA(n))}var o=ge(A);t.push(o)})),{angle:e,stops:t,type:ce.LINEAR_GRADIENT}},"-moz-linear-gradient":Ee,"-ms-linear-gradient":Ee,"-o-linear-gradient":Ee,"-webkit-linear-gradient":Ee,"radial-gradient":function(A){var e=ue.CIRCLE,t=le.FARTHEST_CORNER,r=[],n=[];return MA(A).forEach((function(A,o){var s=!0;if(0===o){var B=!1;s=A.reduce((function(A,r){if(B)if(LA(r))switch(r.value){case"center":return n.push(zA),A;case"top":case"left":return n.push(VA),A;case"right":case"bottom":return n.push(XA),A}else(PA(r)||xA(r))&&n.push(r);else if(LA(r))switch(r.value){case"circle":return e=ue.CIRCLE,!1;case"ellipse":return e=ue.ELLIPSE,!1;case"at":return B=!0,!1;case"closest-side":return t=le.CLOSEST_SIDE,!1;case"cover":case"farthest-side":return t=le.FARTHEST_SIDE,!1;case"contain":case"closest-corner":return t=le.CLOSEST_CORNER,!1;case"farthest-corner":return t=le.FARTHEST_CORNER,!1}else if(xA(r)||PA(r))return Array.isArray(t)||(t=[]),t.push(r),!1;return A}),s)}if(s){var i=ge(A);r.push(i)}})),{size:t,shape:e,stops:r,position:n,type:ce.RADIAL_GRADIENT}},"-moz-radial-gradient":Se,"-ms-radial-gradient":Se,"-o-radial-gradient":Se,"-webkit-radial-gradient":Se,"-webkit-gradient":function(A){var e=ZA(180),t=[],r=ce.LINEAR_GRADIENT,n=ue.CIRCLE,o=le.FARTHEST_CORNER;return MA(A).forEach((function(A,e){var n=A[0];if(0===e){if(LA(n)&&"linear"===n.value)return void(r=ce.LINEAR_GRADIENT);if(LA(n)&&"radial"===n.value)return void(r=ce.RADIAL_GRADIENT)}if(n.type===l.FUNCTION)if("from"===n.name){var o=jA(n.values[0]);t.push({stop:VA,color:o})}else if("to"===n.name)o=jA(n.values[0]),t.push({stop:XA,color:o});else if("color-stop"===n.name){var s=n.values.filter(DA);if(2===s.length){o=jA(s[1]);var B=s[0];yA(B)&&t.push({stop:{type:l.PERCENTAGE_TOKEN,number:100*B.number,flags:B.flags},color:o})}}})),r===ce.LINEAR_GRADIENT?{angle:(e+ZA(180))%ZA(360),stops:t,type:r}:{size:o,shape:n,stops:t,position:[],type:r}}},xe={name:"background-image",initialValue:"none",type:oe.LIST,prefix:!1,parse:function(A){if(0===A.length)return[];var e=A[0];return e.type===l.IDENT_TOKEN&&"none"===e.value?[]:A.filter((function(A){return DA(A)&&function(A){return A.type!==l.FUNCTION||_e[A.name]}(A)})).map(Me)}},Pe={name:"background-origin",initialValue:"border-box",prefix:!1,type:oe.LIST,parse:function(A){return A.map((function(A){if(LA(A))switch(A.value){case"padding-box":return 1;case"content-box":return 2}return 0}))}},ke={name:"background-position",initialValue:"0% 0%",type:oe.LIST,prefix:!1,parse:function(A){return MA(A).map((function(A){return A.filter(PA)})).map(kA)}};!function(A){A[A.REPEAT=0]="REPEAT",A[A.NO_REPEAT=1]="NO_REPEAT",A[A.REPEAT_X=2]="REPEAT_X",A[A.REPEAT_Y=3]="REPEAT_Y"}(De||(De={}));var Ve,ze={name:"background-repeat",initialValue:"repeat",prefix:!1,type:oe.LIST,parse:function(A){return MA(A).map((function(A){return A.filter(LA).map((function(A){return A.value})).join(" ")})).map(Xe)}},Xe=function(A){switch(A){case"no-repeat":return De.NO_REPEAT;case"repeat-x":case"repeat no-repeat":return De.REPEAT_X;case"repeat-y":case"no-repeat repeat":return De.REPEAT_Y;case"repeat":default:return De.REPEAT}};!function(A){A.AUTO="auto",A.CONTAIN="contain",A.COVER="cover"}(Ve||(Ve={}));var Je,Ge={name:"background-size",initialValue:"0",prefix:!1,type:oe.LIST,parse:function(A){return MA(A).map((function(A){return A.filter(We)}))}},We=function(A){return LA(A)||PA(A)},Ye=function(A){return{name:"border-"+A+"-color",initialValue:"transparent",prefix:!1,type:oe.TYPE_VALUE,format:"color"}},qe=Ye("top"),Ze=Ye("right"),je=Ye("bottom"),$e=Ye("left"),At=function(A){return{name:"border-radius-"+A,initialValue:"0 0",prefix:!1,type:oe.LIST,parse:function(A){return kA(A.filter(PA))}}},et=At("top-left"),tt=At("top-right"),rt=At("bottom-right"),nt=At("bottom-left");!function(A){A[A.NONE=0]="NONE",A[A.SOLID=1]="SOLID"}(Je||(Je={}));var ot,st=function(A){return{name:"border-"+A+"-style",initialValue:"solid",prefix:!1,type:oe.IDENT_VALUE,parse:function(A){switch(A){case"none":return Je.NONE}return Je.SOLID}}},Bt=st("top"),it=st("right"),at=st("bottom"),ct=st("left"),ut=function(A){return{name:"border-"+A+"-width",initialValue:"0",type:oe.VALUE,prefix:!1,parse:function(A){return TA(A)?A.number:0}}},lt=ut("top"),Qt=ut("right"),wt=ut("bottom"),gt=ut("left"),Ut={name:"color",initialValue:"transparent",prefix:!1,type:oe.TYPE_VALUE,format:"color"},Ct={name:"display",initialValue:"inline-block",prefix:!1,type:oe.LIST,parse:function(A){return A.filter(LA).reduce((function(A,e){return A|dt(e.value)}),0)}},dt=function(A){switch(A){case"block":return 2;case"inline":return 4;case"run-in":return 8;case"flow":return 16;case"flow-root":return 32;case"table":return 64;case"flex":case"-webkit-flex":return 128;case"grid":case"-ms-grid":return 256;case"ruby":return 512;case"subgrid":return 1024;case"list-item":return 2048;case"table-row-group":return 4096;case"table-header-group":return 8192;case"table-footer-group":return 16384;case"table-row":return 32768;case"table-cell":return 65536;case"table-column-group":return 131072;case"table-column":return 262144;case"table-caption":return 524288;case"ruby-base":return 1048576;case"ruby-text":return 2097152;case"ruby-base-container":return 4194304;case"ruby-text-container":return 8388608;case"contents":return 16777216;case"inline-block":return 33554432;case"inline-list-item":return 67108864;case"inline-table":return 134217728;case"inline-flex":return 268435456;case"inline-grid":return 536870912}return 0};!function(A){A[A.NONE=0]="NONE",A[A.LEFT=1]="LEFT",A[A.RIGHT=2]="RIGHT",A[A.INLINE_START=3]="INLINE_START",A[A.INLINE_END=4]="INLINE_END"}(ot||(ot={}));var ht,Et={name:"float",initialValue:"none",prefix:!1,type:oe.IDENT_VALUE,parse:function(A){switch(A){case"left":return ot.LEFT;case"right":return ot.RIGHT;case"inline-start":return ot.INLINE_START;case"inline-end":return ot.INLINE_END}return ot.NONE}},Ft={name:"letter-spacing",initialValue:"0",prefix:!1,type:oe.VALUE,parse:function(A){return A.type===l.IDENT_TOKEN&&"normal"===A.value?0:A.type===l.NUMBER_TOKEN||A.type===l.DIMENSION_TOKEN?A.number:0}};!function(A){A.NORMAL="normal",A.STRICT="strict"}(ht||(ht={}));var ft,pt={name:"line-break",initialValue:"normal",prefix:!1,type:oe.IDENT_VALUE,parse:function(A){switch(A){case"strict":return ht.STRICT;case"normal":default:return ht.NORMAL}}},Ht={name:"line-height",initialValue:"normal",prefix:!1,type:oe.TOKEN_VALUE},Nt={name:"list-style-image",initialValue:"none",type:oe.VALUE,prefix:!1,parse:function(A){return A.type===l.IDENT_TOKEN&&"none"===A.value?null:Me(A)}};!function(A){A[A.INSIDE=0]="INSIDE",A[A.OUTSIDE=1]="OUTSIDE"}(ft||(ft={}));var Kt,bt={name:"list-style-position",initialValue:"outside",prefix:!1,type:oe.IDENT_VALUE,parse:function(A){switch(A){case"inside":return ft.INSIDE;case"outside":default:return ft.OUTSIDE}}};!function(A){A[A.NONE=-1]="NONE",A[A.DISC=0]="DISC",A[A.CIRCLE=1]="CIRCLE",A[A.SQUARE=2]="SQUARE",A[A.DECIMAL=3]="DECIMAL",A[A.CJK_DECIMAL=4]="CJK_DECIMAL",A[A.DECIMAL_LEADING_ZERO=5]="DECIMAL_LEADING_ZERO",A[A.LOWER_ROMAN=6]="LOWER_ROMAN",A[A.UPPER_ROMAN=7]="UPPER_ROMAN",A[A.LOWER_GREEK=8]="LOWER_GREEK",A[A.LOWER_ALPHA=9]="LOWER_ALPHA",A[A.UPPER_ALPHA=10]="UPPER_ALPHA",A[A.ARABIC_INDIC=11]="ARABIC_INDIC",A[A.ARMENIAN=12]="ARMENIAN",A[A.BENGALI=13]="BENGALI",A[A.CAMBODIAN=14]="CAMBODIAN",A[A.CJK_EARTHLY_BRANCH=15]="CJK_EARTHLY_BRANCH",A[A.CJK_HEAVENLY_STEM=16]="CJK_HEAVENLY_STEM",A[A.CJK_IDEOGRAPHIC=17]="CJK_IDEOGRAPHIC",A[A.DEVANAGARI=18]="DEVANAGARI",A[A.ETHIOPIC_NUMERIC=19]="ETHIOPIC_NUMERIC",A[A.GEORGIAN=20]="GEORGIAN",A[A.GUJARATI=21]="GUJARATI",A[A.GURMUKHI=22]="GURMUKHI",A[A.HEBREW=22]="HEBREW",A[A.HIRAGANA=23]="HIRAGANA",A[A.HIRAGANA_IROHA=24]="HIRAGANA_IROHA",A[A.JAPANESE_FORMAL=25]="JAPANESE_FORMAL",A[A.JAPANESE_INFORMAL=26]="JAPANESE_INFORMAL",A[A.KANNADA=27]="KANNADA",A[A.KATAKANA=28]="KATAKANA",A[A.KATAKANA_IROHA=29]="KATAKANA_IROHA",A[A.KHMER=30]="KHMER",A[A.KOREAN_HANGUL_FORMAL=31]="KOREAN_HANGUL_FORMAL",A[A.KOREAN_HANJA_FORMAL=32]="KOREAN_HANJA_FORMAL",A[A.KOREAN_HANJA_INFORMAL=33]="KOREAN_HANJA_INFORMAL",A[A.LAO=34]="LAO",A[A.LOWER_ARMENIAN=35]="LOWER_ARMENIAN",A[A.MALAYALAM=36]="MALAYALAM",A[A.MONGOLIAN=37]="MONGOLIAN",A[A.MYANMAR=38]="MYANMAR",A[A.ORIYA=39]="ORIYA",A[A.PERSIAN=40]="PERSIAN",A[A.SIMP_CHINESE_FORMAL=41]="SIMP_CHINESE_FORMAL",A[A.SIMP_CHINESE_INFORMAL=42]="SIMP_CHINESE_INFORMAL",A[A.TAMIL=43]="TAMIL",A[A.TELUGU=44]="TELUGU",A[A.THAI=45]="THAI",A[A.TIBETAN=46]="TIBETAN",A[A.TRAD_CHINESE_FORMAL=47]="TRAD_CHINESE_FORMAL",A[A.TRAD_CHINESE_INFORMAL=48]="TRAD_CHINESE_INFORMAL",A[A.UPPER_ARMENIAN=49]="UPPER_ARMENIAN",A[A.DISCLOSURE_OPEN=50]="DISCLOSURE_OPEN",A[A.DISCLOSURE_CLOSED=51]="DISCLOSURE_CLOSED"}(Kt||(Kt={}));var mt,It={name:"list-style-type",initialValue:"none",prefix:!1,type:oe.IDENT_VALUE,parse:function(A){switch(A){case"disc":return Kt.DISC;case"circle":return Kt.CIRCLE;case"square":return Kt.SQUARE;case"decimal":return Kt.DECIMAL;case"cjk-decimal":return Kt.CJK_DECIMAL;case"decimal-leading-zero":return Kt.DECIMAL_LEADING_ZERO;case"lower-roman":return Kt.LOWER_ROMAN;case"upper-roman":return Kt.UPPER_ROMAN;case"lower-greek":return Kt.LOWER_GREEK;case"lower-alpha":return Kt.LOWER_ALPHA;case"upper-alpha":return Kt.UPPER_ALPHA;case"arabic-indic":return Kt.ARABIC_INDIC;case"armenian":return Kt.ARMENIAN;case"bengali":return Kt.BENGALI;case"cambodian":return Kt.CAMBODIAN;case"cjk-earthly-branch":return Kt.CJK_EARTHLY_BRANCH;case"cjk-heavenly-stem":return Kt.CJK_HEAVENLY_STEM;case"cjk-ideographic":return Kt.CJK_IDEOGRAPHIC;case"devanagari":return Kt.DEVANAGARI;case"ethiopic-numeric":return Kt.ETHIOPIC_NUMERIC;case"georgian":return Kt.GEORGIAN;case"gujarati":return Kt.GUJARATI;case"gurmukhi":return Kt.GURMUKHI;case"hebrew":return Kt.HEBREW;case"hiragana":return Kt.HIRAGANA;case"hiragana-iroha":return Kt.HIRAGANA_IROHA;case"japanese-formal":return Kt.JAPANESE_FORMAL;case"japanese-informal":return Kt.JAPANESE_INFORMAL;case"kannada":return Kt.KANNADA;case"katakana":return Kt.KATAKANA;case"katakana-iroha":return Kt.KATAKANA_IROHA;case"khmer":return Kt.KHMER;case"korean-hangul-formal":return Kt.KOREAN_HANGUL_FORMAL;case"korean-hanja-formal":return Kt.KOREAN_HANJA_FORMAL;case"korean-hanja-informal":return Kt.KOREAN_HANJA_INFORMAL;case"lao":return Kt.LAO;case"lower-armenian":return Kt.LOWER_ARMENIAN;case"malayalam":return Kt.MALAYALAM;case"mongolian":return Kt.MONGOLIAN;case"myanmar":return Kt.MYANMAR;case"oriya":return Kt.ORIYA;case"persian":return Kt.PERSIAN;case"simp-chinese-formal":return Kt.SIMP_CHINESE_FORMAL;case"simp-chinese-informal":return Kt.SIMP_CHINESE_INFORMAL;case"tamil":return Kt.TAMIL;case"telugu":return Kt.TELUGU;case"thai":return Kt.THAI;case"tibetan":return Kt.TIBETAN;case"trad-chinese-formal":return Kt.TRAD_CHINESE_FORMAL;case"trad-chinese-informal":return Kt.TRAD_CHINESE_INFORMAL;case"upper-armenian":return Kt.UPPER_ARMENIAN;case"disclosure-open":return Kt.DISCLOSURE_OPEN;case"disclosure-closed":return Kt.DISCLOSURE_CLOSED;case"none":default:return Kt.NONE}}},vt=function(A){return{name:"margin-"+A,initialValue:"0",prefix:!1,type:oe.TOKEN_VALUE}},Tt=vt("top"),yt=vt("right"),Lt=vt("bottom"),Rt=vt("left");!function(A){A[A.VISIBLE=0]="VISIBLE",A[A.HIDDEN=1]="HIDDEN",A[A.SCROLL=2]="SCROLL",A[A.AUTO=3]="AUTO"}(mt||(mt={}));var Ot,St={name:"overflow",initialValue:"visible",prefix:!1,type:oe.LIST,parse:function(A){return A.filter(LA).map((function(A){switch(A.value){case"hidden":return mt.HIDDEN;case"scroll":return mt.SCROLL;case"auto":return mt.AUTO;case"visible":default:return mt.VISIBLE}}))}};!function(A){A.NORMAL="normal",A.BREAK_WORD="break-word"}(Ot||(Ot={}));var Dt,Mt={name:"overflow-wrap",initialValue:"normal",prefix:!1,type:oe.IDENT_VALUE,parse:function(A){switch(A){case"break-word":return Ot.BREAK_WORD;case"normal":default:return Ot.NORMAL}}},_t=function(A){return{name:"padding-"+A,initialValue:"0",prefix:!1,type:oe.TYPE_VALUE,format:"length-percentage"}},xt=_t("top"),Pt=_t("right"),kt=_t("bottom"),Vt=_t("left");!function(A){A[A.LEFT=0]="LEFT",A[A.CENTER=1]="CENTER",A[A.RIGHT=2]="RIGHT"}(Dt||(Dt={}));var zt,Xt={name:"text-align",initialValue:"left",prefix:!1,type:oe.IDENT_VALUE,parse:function(A){switch(A){case"right":return Dt.RIGHT;case"center":case"justify":return Dt.CENTER;case"left":default:return Dt.LEFT}}};!function(A){A[A.STATIC=0]="STATIC",A[A.RELATIVE=1]="RELATIVE",A[A.ABSOLUTE=2]="ABSOLUTE",A[A.FIXED=3]="FIXED",A[A.STICKY=4]="STICKY"}(zt||(zt={}));var Jt,Gt={name:"position",initialValue:"static",prefix:!1,type:oe.IDENT_VALUE,parse:function(A){switch(A){case"relative":return zt.RELATIVE;case"absolute":return zt.ABSOLUTE;case"fixed":return zt.FIXED;case"sticky":return zt.STICKY}return zt.STATIC}},Wt={name:"text-shadow",initialValue:"none",type:oe.LIST,prefix:!1,parse:function(A){return 1===A.length&&OA(A[0],"none")?[]:MA(A).map((function(A){for(var e={color:ae.TRANSPARENT,offsetX:VA,offsetY:VA,blur:VA},t=0,r=0;r1?1:0],this.overflowWrap=Kr(Mt,A.overflowWrap),this.paddingTop=Kr(xt,A.paddingTop),this.paddingRight=Kr(Pt,A.paddingRight),this.paddingBottom=Kr(kt,A.paddingBottom),this.paddingLeft=Kr(Vt,A.paddingLeft),this.position=Kr(Gt,A.position),this.textAlign=Kr(Xt,A.textAlign),this.textDecorationColor=Kr(ir,A.textDecorationColor||A.color),this.textDecorationLine=Kr(ar,A.textDecorationLine),this.textShadow=Kr(Wt,A.textShadow),this.textTransform=Kr(qt,A.textTransform),this.transform=Kr(Zt,A.transform),this.transformOrigin=Kr(er,A.transformOrigin),this.visibility=Kr(rr,A.visibility),this.wordBreak=Kr(or,A.wordBreak),this.zIndex=Kr(sr,A.zIndex)}return A.prototype.isVisible=function(){return this.display>0&&this.opacity>0&&this.visibility===Yt.VISIBLE},A.prototype.isTransparent=function(){return $A(this.backgroundColor)},A.prototype.isTransformed=function(){return null!==this.transform},A.prototype.isPositioned=function(){return this.position!==zt.STATIC},A.prototype.isPositionedWithZIndex=function(){return this.isPositioned()&&!this.zIndex.auto},A.prototype.isFloating=function(){return this.float!==ot.NONE},A.prototype.isInlineLevel=function(){return Ur(this.display,4)||Ur(this.display,33554432)||Ur(this.display,268435456)||Ur(this.display,536870912)||Ur(this.display,67108864)||Ur(this.display,134217728)},A}(),Hr=function(A){this.content=Kr(Cr,A.content),this.quotes=Kr(Er,A.quotes)},Nr=function(A){this.counterIncrement=Kr(dr,A.counterIncrement),this.counterReset=Kr(hr,A.counterReset)},Kr=function(A,e){var t=new IA,r=null!==e&&"undefined"!==typeof e?e.toString():A.initialValue;t.write(r);var n=new vA(t.read());switch(A.type){case oe.IDENT_VALUE:var o=n.parseComponentValue();return A.parse(LA(o)?o.value:A.initialValue);case oe.VALUE:return A.parse(n.parseComponentValue());case oe.LIST:return A.parse(n.parseComponentValues());case oe.TOKEN_VALUE:return n.parseComponentValue();case oe.TYPE_VALUE:switch(A.format){case"angle":return WA(n.parseComponentValue());case"color":return jA(n.parseComponentValue());case"image":return Me(n.parseComponentValue());case"length":var s=n.parseComponentValue();return xA(s)?s:VA;case"length-percentage":var B=n.parseComponentValue();return PA(B)?B:VA}}throw new Error("Attempting to parse unsupported css format type "+A.format)},br=function(A){this.styles=new pr(window.getComputedStyle(A,null)),this.textNodes=[],this.elements=[],null!==this.styles.transform&&rn(A)&&(A.style.transform="none"),this.bounds=s(A),this.flags=0},mr=function(A,e){this.text=A,this.bounds=e},Ir=function(A){var e=A.ownerDocument;if(e){var t=e.createElement("html2canvaswrapper");t.appendChild(A.cloneNode(!0));var r=A.parentNode;if(r){r.replaceChild(t,A);var n=s(t);return t.firstChild&&r.replaceChild(t.firstChild,t),n}}return new o(0,0,0,0)},vr=function(A,e,t){var r=A.ownerDocument;if(!r)throw new Error("Node has no owner document");var n=r.createRange();return n.setStart(A,e),n.setEnd(A,e+t),o.fromClientRect(n.getBoundingClientRect())},Tr=function(A,e){return 0!==e.letterSpacing?B(A).map((function(A){return i(A)})):yr(A,e)},yr=function(A,e){for(var t,r=function(A,e){var t=B(A),r=q(t,e),n=r[0],o=r[1],s=r[2],i=t.length,a=0,c=0;return{next:function(){if(c>=i)return{done:!0,value:null};for(var A="\xd7";c0)if(He.SUPPORT_RANGE_BOUNDS)n.push(new mr(A,vr(t,o,A.length)));else{var r=t.splitText(A.length);n.push(new mr(A,Ir(t))),t=r}else He.SUPPORT_RANGE_BOUNDS||(t=t.splitText(A.length));o+=A.length})),n}(this.text,e,A)},Rr=function(A,e){switch(e){case Jt.LOWERCASE:return A.toLowerCase();case Jt.CAPITALIZE:return A.replace(Or,Sr);case Jt.UPPERCASE:return A.toUpperCase();default:return A}},Or=/(^|\s|:|-|\(|\))([a-z])/g,Sr=function(A,e,t){return A.length>0?e+t.toUpperCase():A},Dr=function(A){function t(e){var t=A.call(this,e)||this;return t.src=e.currentSrc||e.src,t.intrinsicWidth=e.naturalWidth,t.intrinsicHeight=e.naturalHeight,Ke.getInstance().addImage(t.src),t}return e(t,A),t}(br),Mr=function(A){function t(e){var t=A.call(this,e)||this;return t.canvas=e,t.intrinsicWidth=e.width,t.intrinsicHeight=e.height,t}return e(t,A),t}(br),_r=function(A){function t(e){var t=A.call(this,e)||this,r=new XMLSerializer;return t.svg="data:image/svg+xml,"+encodeURIComponent(r.serializeToString(e)),t.intrinsicWidth=e.width.baseVal.value,t.intrinsicHeight=e.height.baseVal.value,Ke.getInstance().addImage(t.svg),t}return e(t,A),t}(br),xr=function(A){function t(e){var t=A.call(this,e)||this;return t.value=e.value,t}return e(t,A),t}(br),Pr=function(A){function t(e){var t=A.call(this,e)||this;return t.start=e.start,t.reversed="boolean"===typeof e.reversed&&!0===e.reversed,t}return e(t,A),t}(br),kr=[{type:l.DIMENSION_TOKEN,flags:0,unit:"px",number:3}],Vr=[{type:l.PERCENTAGE_TOKEN,flags:0,number:50}],zr="password",Xr=function(A){function t(e){var t,r=A.call(this,e)||this;switch(r.type=e.type.toLowerCase(),r.checked=e.checked,r.value=function(A){var e=A.type===zr?new Array(A.value.length+1).join("\u2022"):A.value;return 0===e.length?A.placeholder||"":e}(e),"checkbox"!==r.type&&"radio"!==r.type||(r.styles.backgroundColor=3739148031,r.styles.borderTopColor=r.styles.borderRightColor=r.styles.borderBottomColor=r.styles.borderLeftColor=2779096575,r.styles.borderTopWidth=r.styles.borderRightWidth=r.styles.borderBottomWidth=r.styles.borderLeftWidth=1,r.styles.borderTopStyle=r.styles.borderRightStyle=r.styles.borderBottomStyle=r.styles.borderLeftStyle=Je.SOLID,r.styles.backgroundClip=[se.BORDER_BOX],r.styles.backgroundOrigin=[0],r.bounds=(t=r.bounds).width>t.height?new o(t.left+(t.width-t.height)/2,t.top,t.height,t.height):t.width0)t.textNodes.push(new Lr(n,t.styles));else if(tn(n)){var s=Zr(n);s.styles.isVisible()&&($r(n,s,r)?s.flags|=4:An(s.styles)&&(s.flags|=2),-1!==qr.indexOf(n.tagName)&&(s.flags|=8),t.elements.push(s),Un(n)||an(n)||Cn(n)||A(n,s,r))}}(A,e,e),e},$r=function(A,e,t){return e.styles.isPositionedWithZIndex()||e.styles.opacity<1||e.styles.isTransformed()||cn(A)&&t.styles.isTransparent()},An=function(A){return A.isPositioned()||A.isFloating()},en=function(A){return A.nodeType===Node.TEXT_NODE},tn=function(A){return A.nodeType===Node.ELEMENT_NODE},rn=function(A){return tn(A)&&"undefined"!==typeof A.style&&!nn(A)},nn=function(A){return"object"===typeof A.className},on=function(A){return"LI"===A.tagName},sn=function(A){return"OL"===A.tagName},Bn=function(A){return"INPUT"===A.tagName},an=function(A){return"svg"===A.tagName},cn=function(A){return"BODY"===A.tagName},un=function(A){return"CANVAS"===A.tagName},ln=function(A){return"IMG"===A.tagName},Qn=function(A){return"IFRAME"===A.tagName},wn=function(A){return"STYLE"===A.tagName},gn=function(A){return"SCRIPT"===A.tagName},Un=function(A){return"TEXTAREA"===A.tagName},Cn=function(A){return"SELECT"===A.tagName},dn=function(){function A(){this.counters={}}return A.prototype.getCounterValue=function(A){var e=this.counters[A];return e&&e.length?e[e.length-1]:1},A.prototype.getCounterValues=function(A){var e=this.counters[A];return e||[]},A.prototype.pop=function(A){var e=this;A.forEach((function(A){return e.counters[A].pop()}))},A.prototype.parse=function(A){var e=this,t=A.counterIncrement,r=A.counterReset,n=!0;null!==t&&t.forEach((function(A){var t=e.counters[A.counter];t&&0!==A.increment&&(n=!1,t[Math.max(0,t.length-1)]+=A.increment)}));var o=[];return n&&r.forEach((function(A){var t=e.counters[A.counter];o.push(A.counter),t||(t=e.counters[A.counter]=[]),t.push(A.reset)})),o},A}(),hn={integers:[1e3,900,500,400,100,90,50,40,10,9,5,4,1],values:["M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"]},En={integers:[9e3,8e3,7e3,6e3,5e3,4e3,3e3,2e3,1e3,900,800,700,600,500,400,300,200,100,90,80,70,60,50,40,30,20,10,9,8,7,6,5,4,3,2,1],values:["\u0554","\u0553","\u0552","\u0551","\u0550","\u054f","\u054e","\u054d","\u054c","\u054b","\u054a","\u0549","\u0548","\u0547","\u0546","\u0545","\u0544","\u0543","\u0542","\u0541","\u0540","\u053f","\u053e","\u053d","\u053c","\u053b","\u053a","\u0539","\u0538","\u0537","\u0536","\u0535","\u0534","\u0533","\u0532","\u0531"]},Fn={integers:[1e4,9e3,8e3,7e3,6e3,5e3,4e3,3e3,2e3,1e3,400,300,200,100,90,80,70,60,50,40,30,20,19,18,17,16,15,10,9,8,7,6,5,4,3,2,1],values:["\u05d9\u05f3","\u05d8\u05f3","\u05d7\u05f3","\u05d6\u05f3","\u05d5\u05f3","\u05d4\u05f3","\u05d3\u05f3","\u05d2\u05f3","\u05d1\u05f3","\u05d0\u05f3","\u05ea","\u05e9","\u05e8","\u05e7","\u05e6","\u05e4","\u05e2","\u05e1","\u05e0","\u05de","\u05dc","\u05db","\u05d9\u05d8","\u05d9\u05d7","\u05d9\u05d6","\u05d8\u05d6","\u05d8\u05d5","\u05d9","\u05d8","\u05d7","\u05d6","\u05d5","\u05d4","\u05d3","\u05d2","\u05d1","\u05d0"]},fn={integers:[1e4,9e3,8e3,7e3,6e3,5e3,4e3,3e3,2e3,1e3,900,800,700,600,500,400,300,200,100,90,80,70,60,50,40,30,20,10,9,8,7,6,5,4,3,2,1],values:["\u10f5","\u10f0","\u10ef","\u10f4","\u10ee","\u10ed","\u10ec","\u10eb","\u10ea","\u10e9","\u10e8","\u10e7","\u10e6","\u10e5","\u10e4","\u10f3","\u10e2","\u10e1","\u10e0","\u10df","\u10de","\u10dd","\u10f2","\u10dc","\u10db","\u10da","\u10d9","\u10d8","\u10d7","\u10f1","\u10d6","\u10d5","\u10d4","\u10d3","\u10d2","\u10d1","\u10d0"]},pn=function(A,e,t,r,n,o){return At?mn(A,n,o.length>0):r.integers.reduce((function(e,t,n){for(;A>=t;)A-=t,e+=r.values[n];return e}),"")+o},Hn=function(A,e,t,r){var n="";do{t||A--,n=r(A)+n,A/=e}while(A*e>=e);return n},Nn=function(A,e,t,r,n){var o=t-e+1;return(A<0?"-":"")+(Hn(Math.abs(A),o,r,(function(A){return i(Math.floor(A%o)+e)}))+n)},Kn=function(A,e,t){void 0===t&&(t=". ");var r=e.length;return Hn(Math.abs(A),r,!1,(function(A){return e[Math.floor(A%r)]}))+t},bn=function(A,e,t,r,n,o){if(A<-9999||A>9999)return mn(A,Kt.CJK_DECIMAL,n.length>0);var s=Math.abs(A),B=n;if(0===s)return e[0]+B;for(var i=0;s>0&&i<=4;i++){var a=s%10;0===a&&Ur(o,1)&&""!==B?B=e[a]+B:a>1||1===a&&0===i||1===a&&1===i&&Ur(o,2)||1===a&&1===i&&Ur(o,4)&&A>100||1===a&&i>1&&Ur(o,8)?B=e[a]+(i>0?t[i-1]:"")+B:1===a&&i>0&&(B=t[i-1]+B),s=Math.floor(s/10)}return(A<0?r:"")+B},mn=function(A,e,t){var r=t?". ":"",n=t?"\u3001":"",o=t?", ":"",s=t?" ":"";switch(e){case Kt.DISC:return"\u2022"+s;case Kt.CIRCLE:return"\u25e6"+s;case Kt.SQUARE:return"\u25fe"+s;case Kt.DECIMAL_LEADING_ZERO:var B=Nn(A,48,57,!0,r);return B.length<4?"0"+B:B;case Kt.CJK_DECIMAL:return Kn(A,"\u3007\u4e00\u4e8c\u4e09\u56db\u4e94\u516d\u4e03\u516b\u4e5d",n);case Kt.LOWER_ROMAN:return pn(A,1,3999,hn,Kt.DECIMAL,r).toLowerCase();case Kt.UPPER_ROMAN:return pn(A,1,3999,hn,Kt.DECIMAL,r);case Kt.LOWER_GREEK:return Nn(A,945,969,!1,r);case Kt.LOWER_ALPHA:return Nn(A,97,122,!1,r);case Kt.UPPER_ALPHA:return Nn(A,65,90,!1,r);case Kt.ARABIC_INDIC:return Nn(A,1632,1641,!0,r);case Kt.ARMENIAN:case Kt.UPPER_ARMENIAN:return pn(A,1,9999,En,Kt.DECIMAL,r);case Kt.LOWER_ARMENIAN:return pn(A,1,9999,En,Kt.DECIMAL,r).toLowerCase();case Kt.BENGALI:return Nn(A,2534,2543,!0,r);case Kt.CAMBODIAN:case Kt.KHMER:return Nn(A,6112,6121,!0,r);case Kt.CJK_EARTHLY_BRANCH:return Kn(A,"\u5b50\u4e11\u5bc5\u536f\u8fb0\u5df3\u5348\u672a\u7533\u9149\u620c\u4ea5",n);case Kt.CJK_HEAVENLY_STEM:return Kn(A,"\u7532\u4e59\u4e19\u4e01\u620a\u5df1\u5e9a\u8f9b\u58ec\u7678",n);case Kt.CJK_IDEOGRAPHIC:case Kt.TRAD_CHINESE_INFORMAL:return bn(A,"\u96f6\u4e00\u4e8c\u4e09\u56db\u4e94\u516d\u4e03\u516b\u4e5d","\u5341\u767e\u5343\u842c","\u8ca0",n,14);case Kt.TRAD_CHINESE_FORMAL:return bn(A,"\u96f6\u58f9\u8cb3\u53c3\u8086\u4f0d\u9678\u67d2\u634c\u7396","\u62fe\u4f70\u4edf\u842c","\u8ca0",n,15);case Kt.SIMP_CHINESE_INFORMAL:return bn(A,"\u96f6\u4e00\u4e8c\u4e09\u56db\u4e94\u516d\u4e03\u516b\u4e5d","\u5341\u767e\u5343\u842c","\u8d1f",n,14);case Kt.SIMP_CHINESE_FORMAL:return bn(A,"\u96f6\u58f9\u8d30\u53c1\u8086\u4f0d\u9646\u67d2\u634c\u7396","\u62fe\u4f70\u4edf\u842c","\u8d1f",n,15);case Kt.JAPANESE_INFORMAL:return bn(A,"\u3007\u4e00\u4e8c\u4e09\u56db\u4e94\u516d\u4e03\u516b\u4e5d","\u5341\u767e\u5343\u4e07","\u30de\u30a4\u30ca\u30b9",n,0);case Kt.JAPANESE_FORMAL:return bn(A,"\u96f6\u58f1\u5f10\u53c2\u56db\u4f0d\u516d\u4e03\u516b\u4e5d","\u62fe\u767e\u5343\u4e07","\u30de\u30a4\u30ca\u30b9",n,7);case Kt.KOREAN_HANGUL_FORMAL:return bn(A,"\uc601\uc77c\uc774\uc0bc\uc0ac\uc624\uc721\uce60\ud314\uad6c","\uc2ed\ubc31\ucc9c\ub9cc","\ub9c8\uc774\ub108\uc2a4",o,7);case Kt.KOREAN_HANJA_INFORMAL:return bn(A,"\u96f6\u4e00\u4e8c\u4e09\u56db\u4e94\u516d\u4e03\u516b\u4e5d","\u5341\u767e\u5343\u842c","\ub9c8\uc774\ub108\uc2a4",o,0);case Kt.KOREAN_HANJA_FORMAL:return bn(A,"\u96f6\u58f9\u8cb3\u53c3\u56db\u4e94\u516d\u4e03\u516b\u4e5d","\u62fe\u767e\u5343","\ub9c8\uc774\ub108\uc2a4",o,7);case Kt.DEVANAGARI:return Nn(A,2406,2415,!0,r);case Kt.GEORGIAN:return pn(A,1,19999,fn,Kt.DECIMAL,r);case Kt.GUJARATI:return Nn(A,2790,2799,!0,r);case Kt.GURMUKHI:return Nn(A,2662,2671,!0,r);case Kt.HEBREW:return pn(A,1,10999,Fn,Kt.DECIMAL,r);case Kt.HIRAGANA:return Kn(A,"\u3042\u3044\u3046\u3048\u304a\u304b\u304d\u304f\u3051\u3053\u3055\u3057\u3059\u305b\u305d\u305f\u3061\u3064\u3066\u3068\u306a\u306b\u306c\u306d\u306e\u306f\u3072\u3075\u3078\u307b\u307e\u307f\u3080\u3081\u3082\u3084\u3086\u3088\u3089\u308a\u308b\u308c\u308d\u308f\u3090\u3091\u3092\u3093");case Kt.HIRAGANA_IROHA:return Kn(A,"\u3044\u308d\u306f\u306b\u307b\u3078\u3068\u3061\u308a\u306c\u308b\u3092\u308f\u304b\u3088\u305f\u308c\u305d\u3064\u306d\u306a\u3089\u3080\u3046\u3090\u306e\u304a\u304f\u3084\u307e\u3051\u3075\u3053\u3048\u3066\u3042\u3055\u304d\u3086\u3081\u307f\u3057\u3091\u3072\u3082\u305b\u3059");case Kt.KANNADA:return Nn(A,3302,3311,!0,r);case Kt.KATAKANA:return Kn(A,"\u30a2\u30a4\u30a6\u30a8\u30aa\u30ab\u30ad\u30af\u30b1\u30b3\u30b5\u30b7\u30b9\u30bb\u30bd\u30bf\u30c1\u30c4\u30c6\u30c8\u30ca\u30cb\u30cc\u30cd\u30ce\u30cf\u30d2\u30d5\u30d8\u30db\u30de\u30df\u30e0\u30e1\u30e2\u30e4\u30e6\u30e8\u30e9\u30ea\u30eb\u30ec\u30ed\u30ef\u30f0\u30f1\u30f2\u30f3",n);case Kt.KATAKANA_IROHA:return Kn(A,"\u30a4\u30ed\u30cf\u30cb\u30db\u30d8\u30c8\u30c1\u30ea\u30cc\u30eb\u30f2\u30ef\u30ab\u30e8\u30bf\u30ec\u30bd\u30c4\u30cd\u30ca\u30e9\u30e0\u30a6\u30f0\u30ce\u30aa\u30af\u30e4\u30de\u30b1\u30d5\u30b3\u30a8\u30c6\u30a2\u30b5\u30ad\u30e6\u30e1\u30df\u30b7\u30f1\u30d2\u30e2\u30bb\u30b9",n);case Kt.LAO:return Nn(A,3792,3801,!0,r);case Kt.MONGOLIAN:return Nn(A,6160,6169,!0,r);case Kt.MYANMAR:return Nn(A,4160,4169,!0,r);case Kt.ORIYA:return Nn(A,2918,2927,!0,r);case Kt.PERSIAN:return Nn(A,1776,1785,!0,r);case Kt.TAMIL:return Nn(A,3046,3055,!0,r);case Kt.TELUGU:return Nn(A,3174,3183,!0,r);case Kt.THAI:return Nn(A,3664,3673,!0,r);case Kt.TIBETAN:return Nn(A,3872,3881,!0,r);case Kt.DECIMAL:default:return Nn(A,48,57,!0,r)}},In=function(){function A(A,e){if(this.options=e,this.scrolledElements=[],this.referenceElement=A,this.counters=new dn,this.quoteDepth=0,!A.ownerDocument)throw new Error("Cloned element does not have an owner document");this.documentElement=this.cloneNode(A.ownerDocument.documentElement)}return A.prototype.toIFrame=function(A,e){var t=this,o=Tn(A,e);if(!o.contentWindow)return Promise.reject("Unable to find iframe window");var s=A.defaultView.pageXOffset,B=A.defaultView.pageYOffset,i=o.contentWindow,a=i.document,c=yn(o).then((function(){return r(t,void 0,void 0,(function(){var A;return n(this,(function(t){switch(t.label){case 0:return this.scrolledElements.forEach(Sn),i&&(i.scrollTo(e.left,e.top),!/(iPad|iPhone|iPod)/g.test(navigator.userAgent)||i.scrollY===e.top&&i.scrollX===e.left||(a.documentElement.style.top=-e.top+"px",a.documentElement.style.left=-e.left+"px",a.documentElement.style.position="absolute")),A=this.options.onclone,"undefined"===typeof this.clonedReferenceElement?[2,Promise.reject("Error finding the "+this.referenceElement.nodeName+" in the cloned document")]:a.fonts&&a.fonts.ready?[4,a.fonts.ready]:[3,2];case 1:t.sent(),t.label=2;case 2:return"function"===typeof A?[2,Promise.resolve().then((function(){return A(a)})).then((function(){return o}))]:[2,o]}}))}))}));return a.open(),a.write(Rn(document.doctype)+""),On(this.referenceElement.ownerDocument,s,B),a.replaceChild(a.adoptNode(this.documentElement),a.documentElement),a.close(),c},A.prototype.createElementClone=function(A){if(un(A))return this.createCanvasClone(A);if(wn(A))return this.createStyleClone(A);var e=A.cloneNode(!1);return ln(e)&&"lazy"===e.loading&&(e.loading="eager"),e},A.prototype.createStyleClone=function(A){try{var e=A.sheet;if(e&&e.cssRules){var t=[].slice.call(e.cssRules,0).reduce((function(A,e){return e&&"string"===typeof e.cssText?A+e.cssText:A}),""),r=A.cloneNode(!1);return r.textContent=t,r}}catch(n){if(Ne.getInstance(this.options.id).error("Unable to access cssRules property",n),"SecurityError"!==n.name)throw n}return A.cloneNode(!1)},A.prototype.createCanvasClone=function(A){if(this.options.inlineImages&&A.ownerDocument){var e=A.ownerDocument.createElement("img");try{return e.src=A.toDataURL(),e}catch(o){Ne.getInstance(this.options.id).info("Unable to clone canvas contents, canvas is tainted")}}var t=A.cloneNode(!1);try{t.width=A.width,t.height=A.height;var r=A.getContext("2d"),n=t.getContext("2d");return n&&(r?n.putImageData(r.getImageData(0,0,A.width,A.height),0,0):n.drawImage(A,0,0)),t}catch(o){}return t},A.prototype.cloneNode=function(A){if(en(A))return document.createTextNode(A.data);if(!A.ownerDocument)return A.cloneNode(!1);var e=A.ownerDocument.defaultView;if(e&&tn(A)&&(rn(A)||nn(A))){var t=this.createElementClone(A),r=e.getComputedStyle(A),n=e.getComputedStyle(A,":before"),o=e.getComputedStyle(A,":after");this.referenceElement===A&&rn(t)&&(this.clonedReferenceElement=t),cn(t)&&_n(t);for(var s=this.counters.parse(new Nr(r)),B=this.resolvePseudoContent(A,t,n,wr.BEFORE),i=A.firstChild;i;i=i.nextSibling)tn(i)&&(gn(i)||i.hasAttribute("data-html2canvas-ignore")||"function"===typeof this.options.ignoreElements&&this.options.ignoreElements(i))||this.options.copyStyles&&tn(i)&&wn(i)||t.appendChild(this.cloneNode(i));B&&t.insertBefore(B,t.firstChild);var a=this.resolvePseudoContent(A,t,o,wr.AFTER);return a&&t.appendChild(a),this.counters.pop(s),r&&(this.options.copyStyles||nn(A))&&!Qn(A)&&Ln(r,t),0===A.scrollTop&&0===A.scrollLeft||this.scrolledElements.push([t,A.scrollLeft,A.scrollTop]),(Un(A)||Cn(A))&&(Un(t)||Cn(t))&&(t.value=A.value),t}return A.cloneNode(!1)},A.prototype.resolvePseudoContent=function(A,e,t,r){var n=this;if(t){var o=t.content,s=e.ownerDocument;if(s&&o&&"none"!==o&&"-moz-alt-content"!==o&&"none"!==t.display){this.counters.parse(new Nr(t));var B=new Hr(t),i=s.createElement("html2canvaspseudoelement");Ln(t,i),B.content.forEach((function(e){if(e.type===l.STRING_TOKEN)i.appendChild(s.createTextNode(e.value));else if(e.type===l.URL_TOKEN){var t=s.createElement("img");t.src=e.value,t.style.opacity="1",i.appendChild(t)}else if(e.type===l.FUNCTION){if("attr"===e.name){var r=e.values.filter(LA);r.length&&i.appendChild(s.createTextNode(A.getAttribute(r[0].value)||""))}else if("counter"===e.name){var o=e.values.filter(DA),a=o[0],c=o[1];if(a&&LA(a)){var u=n.counters.getCounterValue(a.value),Q=c&&LA(c)?It.parse(c.value):Kt.DECIMAL;i.appendChild(s.createTextNode(mn(u,Q,!1)))}}else if("counters"===e.name){var w=e.values.filter(DA),g=(a=w[0],w[1]);if(c=w[2],a&&LA(a)){var U=n.counters.getCounterValues(a.value),C=c&&LA(c)?It.parse(c.value):Kt.DECIMAL,d=g&&g.type===l.STRING_TOKEN?g.value:"",h=U.map((function(A){return mn(A,C,!1)})).join(d);i.appendChild(s.createTextNode(h))}}}else if(e.type===l.IDENT_TOKEN)switch(e.value){case"open-quote":i.appendChild(s.createTextNode(Fr(B.quotes,n.quoteDepth++,!0)));break;case"close-quote":i.appendChild(s.createTextNode(Fr(B.quotes,--n.quoteDepth,!1)));break;default:i.appendChild(s.createTextNode(e.value))}})),i.className=Dn+" "+Mn;var a=r===wr.BEFORE?" "+Dn:" "+Mn;return nn(e)?e.className.baseValue+=a:e.className+=a,i}}},A.destroy=function(A){return!!A.parentNode&&(A.parentNode.removeChild(A),!0)},A}();!function(A){A[A.BEFORE=0]="BEFORE",A[A.AFTER=1]="AFTER"}(wr||(wr={}));var vn,Tn=function(A,e){var t=A.createElement("iframe");return t.className="html2canvas-container",t.style.visibility="hidden",t.style.position="fixed",t.style.left="-10000px",t.style.top="0px",t.style.border="0",t.width=e.width.toString(),t.height=e.height.toString(),t.scrolling="no",t.setAttribute("data-html2canvas-ignore","true"),A.body.appendChild(t),t},yn=function(A){return new Promise((function(e,t){var r=A.contentWindow;if(!r)return t("No window assigned for iframe");var n=r.document;r.onload=A.onload=n.onreadystatechange=function(){r.onload=A.onload=n.onreadystatechange=null;var t=setInterval((function(){n.body.childNodes.length>0&&"complete"===n.readyState&&(clearInterval(t),e(A))}),50)}}))},Ln=function(A,e){for(var t=A.length-1;t>=0;t--){var r=A.item(t);"content"!==r&&e.style.setProperty(r,A.getPropertyValue(r))}return e},Rn=function(A){var e="";return A&&(e+=""),e},On=function(A,e,t){A&&A.defaultView&&(e!==A.defaultView.pageXOffset||t!==A.defaultView.pageYOffset)&&A.defaultView.scrollTo(e,t)},Sn=function(A){var e=A[0],t=A[1],r=A[2];e.scrollLeft=t,e.scrollTop=r},Dn="___html2canvas___pseudoelement_before",Mn="___html2canvas___pseudoelement_after",_n=function(A){xn(A,"."+Dn+':before{\n content: "" !important;\n display: none !important;\n}\n .'+Mn+':after{\n content: "" !important;\n display: none !important;\n}')},xn=function(A,e){var t=A.ownerDocument;if(t){var r=t.createElement("style");r.textContent=e,A.appendChild(r)}};!function(A){A[A.VECTOR=0]="VECTOR",A[A.BEZIER_CURVE=1]="BEZIER_CURVE"}(vn||(vn={}));var Pn,kn=function(A,e){return A.length===e.length&&A.some((function(A,t){return A===e[t]}))},Vn=function(){function A(A,e){this.type=vn.VECTOR,this.x=A,this.y=e}return A.prototype.add=function(e,t){return new A(this.x+e,this.y+t)},A}(),zn=function(A,e,t){return new Vn(A.x+(e.x-A.x)*t,A.y+(e.y-A.y)*t)},Xn=function(){function A(A,e,t,r){this.type=vn.BEZIER_CURVE,this.start=A,this.startControl=e,this.endControl=t,this.end=r}return A.prototype.subdivide=function(e,t){var r=zn(this.start,this.startControl,e),n=zn(this.startControl,this.endControl,e),o=zn(this.endControl,this.end,e),s=zn(r,n,e),B=zn(n,o,e),i=zn(s,B,e);return t?new A(this.start,r,s,i):new A(i,B,o,this.end)},A.prototype.add=function(e,t){return new A(this.start.add(e,t),this.startControl.add(e,t),this.endControl.add(e,t),this.end.add(e,t))},A.prototype.reverse=function(){return new A(this.end,this.endControl,this.startControl,this.start)},A}(),Jn=function(A){return A.type===vn.BEZIER_CURVE},Gn=function(A){var e=A.styles,t=A.bounds,r=JA(e.borderTopLeftRadius,t.width,t.height),n=r[0],o=r[1],s=JA(e.borderTopRightRadius,t.width,t.height),B=s[0],i=s[1],a=JA(e.borderBottomRightRadius,t.width,t.height),c=a[0],u=a[1],l=JA(e.borderBottomLeftRadius,t.width,t.height),Q=l[0],w=l[1],g=[];g.push((n+B)/t.width),g.push((Q+c)/t.width),g.push((o+w)/t.height),g.push((i+u)/t.height);var U=Math.max.apply(Math,g);U>1&&(n/=U,o/=U,B/=U,i/=U,c/=U,u/=U,Q/=U,w/=U);var C=t.width-B,d=t.height-u,h=t.width-c,E=t.height-w,F=e.borderTopWidth,f=e.borderRightWidth,p=e.borderBottomWidth,H=e.borderLeftWidth,N=GA(e.paddingTop,A.bounds.width),K=GA(e.paddingRight,A.bounds.width),b=GA(e.paddingBottom,A.bounds.width),m=GA(e.paddingLeft,A.bounds.width);this.topLeftBorderBox=n>0||o>0?Wn(t.left,t.top,n,o,Pn.TOP_LEFT):new Vn(t.left,t.top),this.topRightBorderBox=B>0||i>0?Wn(t.left+C,t.top,B,i,Pn.TOP_RIGHT):new Vn(t.left+t.width,t.top),this.bottomRightBorderBox=c>0||u>0?Wn(t.left+h,t.top+d,c,u,Pn.BOTTOM_RIGHT):new Vn(t.left+t.width,t.top+t.height),this.bottomLeftBorderBox=Q>0||w>0?Wn(t.left,t.top+E,Q,w,Pn.BOTTOM_LEFT):new Vn(t.left,t.top+t.height),this.topLeftPaddingBox=n>0||o>0?Wn(t.left+H,t.top+F,Math.max(0,n-H),Math.max(0,o-F),Pn.TOP_LEFT):new Vn(t.left+H,t.top+F),this.topRightPaddingBox=B>0||i>0?Wn(t.left+Math.min(C,t.width+H),t.top+F,C>t.width+H?0:B-H,i-F,Pn.TOP_RIGHT):new Vn(t.left+t.width-f,t.top+F),this.bottomRightPaddingBox=c>0||u>0?Wn(t.left+Math.min(h,t.width-H),t.top+Math.min(d,t.height+F),Math.max(0,c-f),u-p,Pn.BOTTOM_RIGHT):new Vn(t.left+t.width-f,t.top+t.height-p),this.bottomLeftPaddingBox=Q>0||w>0?Wn(t.left+H,t.top+E,Math.max(0,Q-H),w-p,Pn.BOTTOM_LEFT):new Vn(t.left+H,t.top+t.height-p),this.topLeftContentBox=n>0||o>0?Wn(t.left+H+m,t.top+F+N,Math.max(0,n-(H+m)),Math.max(0,o-(F+N)),Pn.TOP_LEFT):new Vn(t.left+H+m,t.top+F+N),this.topRightContentBox=B>0||i>0?Wn(t.left+Math.min(C,t.width+H+m),t.top+F+N,C>t.width+H+m?0:B-H+m,i-(F+N),Pn.TOP_RIGHT):new Vn(t.left+t.width-(f+K),t.top+F+N),this.bottomRightContentBox=c>0||u>0?Wn(t.left+Math.min(h,t.width-(H+m)),t.top+Math.min(d,t.height+F+N),Math.max(0,c-(f+K)),u-(p+b),Pn.BOTTOM_RIGHT):new Vn(t.left+t.width-(f+K),t.top+t.height-(p+b)),this.bottomLeftContentBox=Q>0||w>0?Wn(t.left+H+m,t.top+E,Math.max(0,Q-(H+m)),w-(p+b),Pn.BOTTOM_LEFT):new Vn(t.left+H+m,t.top+t.height-(p+b))};!function(A){A[A.TOP_LEFT=0]="TOP_LEFT",A[A.TOP_RIGHT=1]="TOP_RIGHT",A[A.BOTTOM_RIGHT=2]="BOTTOM_RIGHT",A[A.BOTTOM_LEFT=3]="BOTTOM_LEFT"}(Pn||(Pn={}));var Wn=function(A,e,t,r,n){var o=(Math.sqrt(2)-1)/3*4,s=t*o,B=r*o,i=A+t,a=e+r;switch(n){case Pn.TOP_LEFT:return new Xn(new Vn(A,a),new Vn(A,a-B),new Vn(i-s,e),new Vn(i,e));case Pn.TOP_RIGHT:return new Xn(new Vn(A,e),new Vn(A+s,e),new Vn(i,a-B),new Vn(i,a));case Pn.BOTTOM_RIGHT:return new Xn(new Vn(i,e),new Vn(i,e+B),new Vn(A+s,a),new Vn(A,a));case Pn.BOTTOM_LEFT:default:return new Xn(new Vn(i,a),new Vn(i-s,a),new Vn(A,e+B),new Vn(A,e))}},Yn=function(A){return[A.topLeftBorderBox,A.topRightBorderBox,A.bottomRightBorderBox,A.bottomLeftBorderBox]},qn=function(A){return[A.topLeftPaddingBox,A.topRightPaddingBox,A.bottomRightPaddingBox,A.bottomLeftPaddingBox]},Zn=function(A,e,t){this.type=0,this.offsetX=A,this.offsetY=e,this.matrix=t,this.target=6},jn=function(A,e){this.type=1,this.target=e,this.path=A},$n=function(A){this.element=A,this.inlineLevel=[],this.nonInlineLevel=[],this.negativeZIndex=[],this.zeroOrAutoZIndexOrTransformedOrOpacity=[],this.positiveZIndex=[],this.nonPositionedFloats=[],this.nonPositionedInlineLevel=[]},Ao=function(){function A(A,e){if(this.container=A,this.effects=e.slice(0),this.curves=new Gn(A),null!==A.styles.transform){var t=A.bounds.left+A.styles.transformOrigin[0].number,r=A.bounds.top+A.styles.transformOrigin[1].number,n=A.styles.transform;this.effects.push(new Zn(t,r,n))}if(A.styles.overflowX!==mt.VISIBLE){var o=Yn(this.curves),s=qn(this.curves);kn(o,s)?this.effects.push(new jn(o,6)):(this.effects.push(new jn(o,2)),this.effects.push(new jn(s,4)))}}return A.prototype.getParentEffects=function(){var A=this.effects.slice(0);if(this.container.styles.overflowX!==mt.VISIBLE){var e=Yn(this.curves),t=qn(this.curves);kn(e,t)||A.push(new jn(t,6))}return A},A}(),eo=function(A,e){for(var t=A instanceof Pr?A.start:1,r=A instanceof Pr&&A.reversed,n=0;nA.element.container.styles.zIndex.order?(Q=e,!1):Q>0})),c.negativeZIndex.splice(Q,0,u)}else if(l>0){var w=0;c.positiveZIndex.some((function(A,e){return l>=A.element.container.styles.zIndex.order?(w=e+1,!1):w>0})),c.positiveZIndex.splice(w,0,u)}else c.zeroOrAutoZIndexOrTransformedOrOpacity.push(u)}else o.styles.isFloating()?c.nonPositionedFloats.push(u):c.nonPositionedInlineLevel.push(u);A(i,u,s?u:r,a)}else o.styles.isInlineLevel()?t.inlineLevel.push(i):t.nonInlineLevel.push(i),A(i,t,r,a);Ur(o.flags,8)&&eo(o,a)}))}(e,t,t,r),eo(e.container,r),t},ro=function(A,e,t,r){var n=[];return Jn(A)?n.push(A.subdivide(.5,!1)):n.push(A),Jn(t)?n.push(t.subdivide(.5,!0)):n.push(t),Jn(r)?n.push(r.subdivide(.5,!0).reverse()):n.push(r),Jn(e)?n.push(e.subdivide(.5,!1).reverse()):n.push(e),n},no=function(A){var e=A.bounds,t=A.styles;return e.add(t.borderLeftWidth,t.borderTopWidth,-(t.borderRightWidth+t.borderLeftWidth),-(t.borderTopWidth+t.borderBottomWidth))},oo=function(A){var e=A.styles,t=A.bounds,r=GA(e.paddingLeft,t.width),n=GA(e.paddingRight,t.width),o=GA(e.paddingTop,t.width),s=GA(e.paddingBottom,t.width);return t.add(r+e.borderLeftWidth,o+e.borderTopWidth,-(e.borderRightWidth+e.borderLeftWidth+r+n),-(e.borderTopWidth+e.borderBottomWidth+o+s))},so=function(A,e,t){var r=function(A,e){return 0===A?e.bounds:2===A?oo(e):no(e)}(co(A.styles.backgroundOrigin,e),A),n=function(A,e){return A===se.BORDER_BOX?e.bounds:A===se.CONTENT_BOX?oo(e):no(e)}(co(A.styles.backgroundClip,e),A),o=ao(co(A.styles.backgroundSize,e),t,r),s=o[0],B=o[1],i=JA(co(A.styles.backgroundPosition,e),r.width-s,r.height-B);return[uo(co(A.styles.backgroundRepeat,e),i,o,r,n),Math.round(r.left+i[0]),Math.round(r.top+i[1]),s,B]},Bo=function(A){return LA(A)&&A.value===Ve.AUTO},io=function(A){return"number"===typeof A},ao=function(A,e,t){var r=e[0],n=e[1],o=e[2],s=A[0],B=A[1];if(PA(s)&&B&&PA(B))return[GA(s,t.width),GA(B,t.height)];var i=io(o);if(LA(s)&&(s.value===Ve.CONTAIN||s.value===Ve.COVER))return io(o)?t.width/t.height0&&A.intrinsicHeight>0){var r=oo(A),n=qn(e);this.path(n),this.ctx.save(),this.ctx.clip(),this.ctx.drawImage(t,0,0,A.intrinsicWidth,A.intrinsicHeight,r.left,r.top,r.width,r.height),this.ctx.restore()}},A.prototype.renderNodeContent=function(e){return r(this,void 0,void 0,(function(){var t,r,s,B,i,a,c,u,Q,w,g,U,C,d;return n(this,(function(n){switch(n.label){case 0:this.applyEffects(e.effects,4),t=e.container,r=e.curves,s=t.styles,B=0,i=t.textNodes,n.label=1;case 1:return B0&&H>0&&(d=r.ctx.createPattern(g,"repeat"),r.renderRepeat(E,d,K,b))):function(A){return A.type===ce.RADIAL_GRADIENT}(t)&&(h=so(A,e,[null,null,null]),E=h[0],F=h[1],f=h[2],p=h[3],H=h[4],N=0===t.position.length?[zA]:t.position,K=GA(N[0],p),b=GA(N[N.length-1],H),m=function(A,e,t,r,n){var o=0,s=0;switch(A.size){case le.CLOSEST_SIDE:A.shape===ue.CIRCLE?o=s=Math.min(Math.abs(e),Math.abs(e-r),Math.abs(t),Math.abs(t-n)):A.shape===ue.ELLIPSE&&(o=Math.min(Math.abs(e),Math.abs(e-r)),s=Math.min(Math.abs(t),Math.abs(t-n)));break;case le.CLOSEST_CORNER:if(A.shape===ue.CIRCLE)o=s=Math.min(de(e,t),de(e,t-n),de(e-r,t),de(e-r,t-n));else if(A.shape===ue.ELLIPSE){var B=Math.min(Math.abs(t),Math.abs(t-n))/Math.min(Math.abs(e),Math.abs(e-r)),i=he(r,n,e,t,!0),a=i[0],c=i[1];s=B*(o=de(a-e,(c-t)/B))}break;case le.FARTHEST_SIDE:A.shape===ue.CIRCLE?o=s=Math.max(Math.abs(e),Math.abs(e-r),Math.abs(t),Math.abs(t-n)):A.shape===ue.ELLIPSE&&(o=Math.max(Math.abs(e),Math.abs(e-r)),s=Math.max(Math.abs(t),Math.abs(t-n)));break;case le.FARTHEST_CORNER:if(A.shape===ue.CIRCLE)o=s=Math.max(de(e,t),de(e,t-n),de(e-r,t),de(e-r,t-n));else if(A.shape===ue.ELLIPSE){B=Math.max(Math.abs(t),Math.abs(t-n))/Math.max(Math.abs(e),Math.abs(e-r));var u=he(r,n,e,t,!1);a=u[0],c=u[1],s=B*(o=de(a-e,(c-t)/B))}}return Array.isArray(A.size)&&(o=GA(A.size[0],r),s=2===A.size.length?GA(A.size[1],n):o),[o,s]}(t,K,b,p,H),I=m[0],v=m[1],I>0&&I>0&&(T=r.ctx.createRadialGradient(F+K,f+b,0,F+K,f+b,I),Ue(t.stops,2*I).forEach((function(A){return T.addColorStop(A.stop,Ae(A.color))})),r.path(E),r.ctx.fillStyle=T,I!==v?(y=A.bounds.left+.5*A.bounds.width,L=A.bounds.top+.5*A.bounds.height,O=1/(R=v/I),r.ctx.save(),r.ctx.translate(y,L),r.ctx.transform(1,0,0,R,0,0),r.ctx.translate(-y,-L),r.ctx.fillRect(F,O*(f-L)+L,p,H*O),r.ctx.restore()):r.ctx.fill())),n.label=6;case 6:return e--,[2]}}))},r=this,o=0,s=A.styles.backgroundImage.slice(0).reverse(),i.label=1;case 1:return o\n \n \n ',document.body.appendChild(e);var t=document.querySelector(".bugbattle--feedback-send-button");document.querySelector(".bugbattle--feedback-dialog-header-button-cancel").onclick=function(){A.hide()},t.onclick=function(){document.querySelector(".bugbattle--feedback-dialog-container").remove(),A.createBugReportingDialog()}}},{key:"createBugReportingDialog",value:function(){var A=this,e=document.createElement("div");e.className="bugbattle--feedback-dialog-container",e.setAttribute("data-html2canvas-ignore","true"),e.innerHTML=''),document.body.appendChild(e);var t=document.querySelector(".bugbattle--feedback-inputgroup--privacy-policy"),r=document.querySelector(".bugbattle--feedback-inputgroup--privacy-policy-label"),o=document.querySelector(".bugbattle--feedback-inputgroup--privacy-policy input");this.privacyPolicyCheckEnabled?(t.style.display="block",document.querySelector("#bugbattle-privacy-policy-link").href=this.privacyPolicyUrl):t.style.display="none",r.onclick=function(){o.checked=!o.checked};var s=document.querySelector(".bugbattle--feedback-poweredbycontainer");this.poweredByHidden?s.style.display="none":s.onclick=function(){window.open("https://www.bugbattle.io/","_blank")};var B=document.querySelector(".bugbattle--feedback-send-button"),i=document.querySelector(".bugbattle--feedback-dialog-header-button-cancel"),a=document.querySelector(".bugbattle--feedback-email"),c=document.querySelector(".bugbattle--feedback-description");c.oninput=function(){c.style.height="inherit",c.style.height=c.scrollHeight+"px"},i.onclick=function(){A.hide()},a.value=this.email,B.onclick=function(){if(A.email=a.value,A.email&&0!==A.email.length)if(!A.privacyPolicyCheckEnabled||o.checked){if(A.description=c.value,localStorage.setItem("bugbattle-sender-email",A.email),A.toggleLoading(!0),!A.sdkKey)return alert("BUGBATTLE: Please provide a valid API key!");A.preScreenshotCleanup(),window.scrollTo(A.snapshotPosition.x,A.snapshotPosition.y),n()(document.body,{x:A.snapshotPosition.x,y:A.snapshotPosition.y,width:window.innerWidth,height:window.innerHeight,letterRendering:1,allowTaint:!0,useCORS:!1,logging:!1,imageTimeout:15e3,proxy:"https://jsproxy.bugbattle.io/"}).then((function(e){e&&(A.screenshot=e.toDataURL(),A.prepareScreenshot())})).catch((function(){A.showError()}))}else alert("Please read and accept the privacy policy.");else alert("Please provide an email address.")}}},{key:"preScreenshotCleanup",value:function(){document.body.querySelectorAll("img, svg, video").forEach((function(A){A.setAttribute("width",A.getBoundingClientRect().width),A.setAttribute("height",A.getBoundingClientRect().height)}))}},{key:"hide",value:function(){var A=document.querySelector(".bugbattle-screenshot-editor-container");A&&A.remove();var e=document.querySelector(".bugbattle--feedback-dialog-container");e&&e.remove();var t=document.querySelector(".bugbattle--feedback-button");t&&(t.style.display="block"),this.bugReportingRunning=!1,this.crashDetected=!1,this.enableScroll()}},{key:"init",value:function(){this.overwriteConsoleLog(),this.startCrashDetection();var A=this;"complete"===document.readyState||"loaded"===document.readyState||"interactive"===document.readyState?A.checkForInitType():document.addEventListener("DOMContentLoaded",(function(e){A.checkForInitType()}))}},{key:"checkForInitType",value:function(){this.activation===A.FEEDBACK_BUTTON&&this.injectFeedbackButton()}},{key:"injectFeedbackButton",value:function(){var e=document.createElement("div");e.className="bugbattle--feedback-button",e.innerHTML='',e.onclick=function(){A.startBugReporting()},document.body.appendChild(e)}},{key:"toggleLoading",value:function(A){var e=document.querySelector(".bugbattle--feedback-dialog-header"),t=document.querySelector(".bugbattle--feedback-dialog-body"),r=document.querySelector(".bugbattle--feedback-dialog-loading");A?(t.style.display="none",r.style.display="block",e.style.display="none"):(t.style.display="block",r.style.display="none",e.style.display="block")}},{key:"showSuccessMessage",value:function(){var A=document.querySelector(".bugbattle--feedback-dialog-success"),e=document.querySelector(".bugbattle--feedback-dialog-body"),t=document.querySelector(".bugbattle--feedback-dialog-loading");e.style.display="none",t.style.display="none",A.style.display="flex"}},{key:"dataURItoBlob",value:function(A){for(var e=atob(A.split(",")[1]),t=A.split(",")[0].split(":")[1].split(";")[0],r=new ArrayBuffer(e.length),n=new Uint8Array(r),o=0;o0||s.offsetLeft)&&n.strokeRect(s.offsetLeft*t,s.offsetTop*t,s.offsetWidth*t,s.offsetHeight*t)),A.uploadScreenshot(r.toDataURL("image/jpeg",.5)),A.screenshot=null},e.onerror=function(){A.hide()},e.src=this.screenshot}},{key:"uploadScreenshot",value:function(A){var e=this,t=new XMLHttpRequest;t.open("POST",this.apiUrl+"/uploads/sdk"),t.setRequestHeader("Api-Token",this.sdkKey),t.onreadystatechange=function(A){if(t.readyState===XMLHttpRequest.DONE)try{var r=JSON.parse(t.responseText);r&&r.fileUrl?(e.screenshotURL=r.fileUrl,e.sendBugReportToServer()):e.showError()}catch(A){e.showError()}};document.querySelector(".bugbattle-screenshot-editor-canvas");var r=this.dataURItoBlob(A),n=new FormData;n.append("file",r,"screenshot.jpg"),t.send(n)}},{key:"sendBugReportToServer",value:function(){var A=this,e=new XMLHttpRequest;e.open("POST",this.apiUrl+"/bugs"),e.setRequestHeader("Content-Type","application/json;charset=UTF-8"),e.setRequestHeader("Api-Token",this.sdkKey),e.onreadystatechange=function(t){e.readyState!==XMLHttpRequest.DONE||200!==e.status&&201!==e.status||(A.showSuccessMessage(),setTimeout((function(){A.hide()}),1500))};var t={reportedBy:this.email,description:this.description,priority:this.severity,screenshotUrl:this.screenshotURL,customData:this.customData,metaData:this.getMetaData(),consoleLog:this.logArray,type:this.crashDetected?"CRASHREPORT":"BUG"};e.send(JSON.stringify(t))}},{key:"showError",value:function(){this.toggleLoading(!1)}},{key:"getMetaData",value:function(){var A,e,t,r=navigator.userAgent,n=navigator.appName,o=""+parseFloat(navigator.appVersion),s=parseInt(navigator.appVersion,10);-1!==(e=r.indexOf("Opera"))?(n="Opera",o=r.substring(e+6),-1!==(e=r.indexOf("Version"))&&(o=r.substring(e+8))):-1!==(e=r.indexOf("MSIE"))?(n="Microsoft Internet Explorer",o=r.substring(e+5)):-1!==(e=r.indexOf("Chrome"))?(n="Chrome",o=r.substring(e+7)):-1!==(e=r.indexOf("Safari"))?(n="Safari",o=r.substring(e+7),-1!==(e=r.indexOf("Version"))&&(o=r.substring(e+8))):-1!==(e=r.indexOf("Firefox"))?(n="Firefox",o=r.substring(e+8)):(A=r.lastIndexOf(" ")+1)<(e=r.lastIndexOf("/"))&&(n=r.substring(A,e),o=r.substring(e+1),n.toLowerCase()===n.toUpperCase()&&(n=navigator.appName)),-1!==(t=o.indexOf(";"))&&(o=o.substring(0,t)),-1!==(t=o.indexOf(" "))&&(o=o.substring(0,t)),s=parseInt(""+o,10),isNaN(s)&&(o=""+parseFloat(navigator.appVersion),s=parseInt(navigator.appVersion,10));var B="Unknown OS";-1!==navigator.appVersion.indexOf("Win")&&(B="Windows"),-1!==navigator.appVersion.indexOf("Mac")&&(B="MacOS"),-1!==navigator.appVersion.indexOf("X11")&&(B="UNIX"),-1!==navigator.appVersion.indexOf("Linux")&&(B="Linux"),-1!==navigator.appVersion.indexOf("iPad")&&(B="iPad"),-1!==navigator.appVersion.indexOf("iPhone")&&(B="iPhone"),-1!==navigator.appVersion.indexOf("Android")&&(B="Android");var i=((new Date).getTime()-this.sessionStart.getTime())/1e3;return{browserName:n+"("+o+")",userAgent:r,browser:navigator.appName,systemName:B,buildVersionNumber:this.appBuildNumber,releaseVersionNumber:this.appVersionCode,sessionDuration:i,devicePixelRatio:window.devicePixelRatio,screenWidth:window.screen.width,screenHeight:window.screen.height,innerWidth:window.innerWidth,innerHeight:window.innerHeight,currentUrl:window.location.href,language:navigator.language||navigator.userLanguage}}},{key:"showBugReportEditor",value:function(){var A=this,e=document.createElement("div");e.className="bugbattle-screenshot-editor-container",e.setAttribute("data-html2canvas-ignore","true"),e.innerHTML="\n
\n
\n
\n
\n
Click or drag to create a comment
\n
\n ",document.body.appendChild(e);var t=document.querySelector(".bugbattle-screenshot-editor-borderlayer");t&&(t.style.height="".concat(window.innerHeight,"px"));var r=!1,n=-1,o=-1;function s(A,e){if(!r){var t=document.querySelector(".bugbattle-screenshot-editor-dot");t.style.left=A-t.offsetWidth/2+"px",t.style.top=e-t.offsetHeight/2+"px"}}function B(A,e){var t=document.querySelector(".bugbattle-screenshot-editor-drag-info");if(t.style.left="".concat(A+20,"px"),t.style.top="".concat(e-t.offsetHeight/2,"px"),t.style.right=null,!(r||n<0)){var s=A-n,B=e-o,i=document.querySelector(".bugbattle-screenshot-editor-rectangle"),a=s<0?n+s:n,c=B<0?o+B:o,u=B<0?-1*B:B,l=s<0?-1*s:s;i.style.left="".concat(a,"px"),i.style.top="".concat(c,"px"),i.style.width="".concat(l,"px"),i.style.height="".concat(u,"px")}}function i(e){document.querySelector(".bugbattle-screenshot-editor-drag-info").style.display="none",r=!0,A.createBugReportingDialog()}e.addEventListener("mouseup",i),e.addEventListener("mousemove",(function(A){B(A.pageX-document.documentElement.scrollLeft,A.pageY-document.documentElement.scrollTop)})),e.addEventListener("mousedown",(function(A){n=A.pageX-document.documentElement.scrollLeft,o=A.pageY-document.documentElement.scrollTop,s(n,o)})),e.addEventListener("touchstart",(function(A){n=A.touches[0].pageX-document.documentElement.scrollLeft,o=A.touches[0].pageY-document.documentElement.scrollTop,s(n,o)})),e.addEventListener("touchmove",(function(A){B(A.touches[0].pageX-document.documentElement.scrollLeft,A.touches[0].pageY-document.documentElement.scrollTop),A.preventDefault()})),e.addEventListener("touchend",i)}}],[{key:"enablePoweredByBugbattle",value:function(A){this.instance.poweredByHidden=A}},{key:"enablePrivacyPolicy",value:function(A){this.instance.privacyPolicyCheckEnabled=A}},{key:"setPrivacyPolicyUrl",value:function(A){this.instance.privacyPolicyUrl=A}},{key:"enableCrashDetector",value:function(A){this.instance.crashDetectorEnabled=A}},{key:"setCustomerEmail",value:function(A){this.instance.email=A}},{key:"setAppVersionCode",value:function(A){this.instance.appVersionCode=A}},{key:"setAppBuildNumber",value:function(A){this.instance.appBuildNumber=A}},{key:"setApiUrl",value:function(A){this.instance.apiUrl=A}},{key:"attachCustomData",value:function(A){this.instance.customData=A}},{key:"setMainColor",value:function(A){var e="\n .bugbattle--feedback-button {\n background-color: ".concat(A,";\n }\n .bugbattle--feedback-dialog-header-button {\n color: ").concat(A,";\n }\n .bugbattle-screenshot-editor-borderlayer {\n border-color: ").concat(A,";\n }\n .bugbattle-screenshot-editor-dot {\n background-color: ").concat(A,";\n }\n .bugbattle-screenshot-editor-rectangle {\n border-color: ").concat(A,";\n }\n .bugbattle--feedback-send-button {\n background-color: ").concat(A,";\n }\n .bugbattle--feedback-inputgroup--privacy-policy a {\n color: ").concat(A,";\n }\n .bugbattle-screenshot-editor-drag-info {\n background-color: ").concat(A,";\n }\n .bugbattle-double-bounce1,\n .bugbattle-double-bounce2 {\n background-color: ").concat(A,";\n }\n ");this.instance.mainColor=A;var t=document.createElement("style");t.innerHTML=e,document.body.appendChild(t)}},{key:"startBugReporting",value:function(){this.instance.disableScroll();var A=document.querySelector(".bugbattle--feedback-button");A&&(A.style.display="none"),this.instance.snapshotPosition={x:window.scrollX,y:window.scrollY},this.instance.crashDetected?this.instance.askForCrashReport():this.instance.showBugReportEditor()}},{key:"disableConsoleLogOverwrite",value:function(){window.console=this.instance.originalConsoleLog}}]),A}();B(i,"FEEDBACK_BUTTON","FEEDBACK_BUTTON"),B(i,"NONE","NONE"),B(i,"instance",void 0);var a=i;new class{constructor(){a.initialize("8hWXOj5yeZxweCgnyxYTXqJ1qFlu0N4U",a.FEEDBACK_BUTTON),a.setMainColor("#FEAB39"),a.setAppBuildNumber(5),a.setAppVersionCode("v5.0"),a.attachCustomData({test1:"Battle",data2:"Unicorn"}),a.enablePrivacyPolicy(!1),a.enableCrashDetector(!1);var A=document.querySelector("#feedback-button");A&&(A.onclick=function(){a.startBugReporting()})}}}]); +!function(t){var e={};function n(r){if(e[r])return e[r].exports;var o=e[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"===typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var o in t)n.d(r,o,function(e){return t[e]}.bind(null,o));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=3)}([function(t,e,n){var r,o,i;!function(a){"use strict";"object"===typeof t.exports?t.exports=a():null!=n(1)?(o=[],void 0===(i="function"===typeof(r=a)?r.apply(e,o):r)||(t.exports=i)):self.sanctuaryTypeIdentifiers=a()}((function(){"use strict";var t=new RegExp("^([\\s\\S]+)/([\\s\\S]+?)(?:@([0-9]+))?$");function e(t){return null!=t&&null!=t.constructor&&t.constructor.prototype!==t&&"string"===typeof t["@@type"]?t["@@type"]:Object.prototype.toString.call(t).slice("[object ".length,-"]".length)}return e.parse=function(e){var n=null,r=e,o=0,i=t.exec(e);return null!=i&&(n=i[1],r=i[2],null!=i[3]&&(o=Number(i[3]))),{namespace:n,name:r,version:o}},e}))},function(t,e){(function(e){t.exports=e}).call(this,{})},function(t,e,n){var r,o,i;!function(a){"use strict";"object"===typeof t.exports?t.exports=a():null!=n(1)?(o=[],void 0===(i="function"===typeof(r=a)?r.apply(e,o):r)||(t.exports=i)):self.sanctuaryShow=a()}((function(){"use strict";var t=[];function e(t){return function(e){return r(e)+": "+r(t[e])}}function n(t){return Object.keys(t).sort()}function r(o){if(t.indexOf(o)>=0)return"";switch(Object.prototype.toString.call(o)){case"[object Boolean]":return"object"===typeof o?"new Boolean ("+r(o.valueOf())+")":o.toString();case"[object Number]":return"object"===typeof o?"new Number ("+r(o.valueOf())+")":1/o===-1/0?"-0":o.toString(10);case"[object String]":return"object"===typeof o?"new String ("+r(o.valueOf())+")":JSON.stringify(o);case"[object Date]":return"new Date ("+r(isNaN(o.valueOf())?NaN:o.toISOString())+")";case"[object Error]":return"new "+o.name+" ("+r(o.message)+")";case"[object Arguments]":return"function () { return arguments; } ("+Array.prototype.map.call(o,r).join(", ")+")";case"[object Array]":t.push(o);try{return"["+o.map(r).concat(n(o).filter((function(t){return!/^\d+$/.test(t)})).map(e(o))).join(", ")+"]"}finally{t.pop()}case"[object Object]":t.push(o);try{return!("@@show"in o)||null!=o.constructor&&o.constructor.prototype===o?"{"+n(o).map(e(o)).join(", ")+"}":o["@@show"]()}finally{t.pop()}case"[object Set]":t.push(o);try{return"new Set ("+r(Array.from(o.values()))+")"}finally{t.pop()}case"[object Map]":t.push(o);try{return"new Map ("+r(Array.from(o.entries()))+")"}finally{t.pop()}default:return String(o)}}return r}))},function(t,e,n){t.exports=n(6)},function(t,e,n){},function(t,e,n){},function(t,e,n){"use strict";n.r(e);n(4),n(5);var r=n(0),o=n.n(r),i="fantasy-land/alt",a="fantasy-land/ap",u="fantasy-land/bimap",c="fantasy-land/chain",l="fantasy-land/chainRec",s="fantasy-land/map",f="fantasy-land/of",d="fantasy-land/zero",p=["first","second","third","fourth","fifth"],h="fluture/Future@5";function v(t,e){this.head=t,this.tail=e}v.prototype.toJSON=function(){return w(this)};var y=new v(null,null);function g(t){return t.tail===t}function b(t,e){return new v(t,e)}function m(t){for(var e=y,n=t;!g(n);)e=b(n.head,e),n=n.tail;return e}function w(t){for(var e=t,n=[];!g(e);)n.push(e.head),e=e.tail;return n}y.tail=y;var x=Error.captureStackTrace||function(t){var e=new Error;"string"===typeof e.stack?t.stack=t.name+"\n"+e.stack.split("\n").slice(1).join("\n"):t.stack=t.name},C=k;function k(t){return t}function L(t,e,n,r,o){return C(t,e,n,r,o)}function S(t,e,n){return L(t,_,t,e,n)}function _(t,e,n){var r={tag:e,name:" from "+e+":"};return x(r,n),b(r,t)}function T(t,e,n){return _(t,p[e-1]+" application of "+n.name,n)}var E=n(2),F=n.n(E),A="undefined"===typeof A?function(t,e){return setTimeout(t,0,e)}:A;function O(){}function R(t,e){return t(e)}function j(t){A((function(){throw t}))}function M(t){return F()(t)+" :: "+o.a.parse(o()(t)).name}function q(t){return new Error(t)}function N(t){return new TypeError(t)}function W(t,e,n,r){return N(t+"() expects its "+p[e]+" argument to "+n+".\n Actual: "+M(r))}function I(t){return function(e,n,r){return W(e,n,t,r)}}function B(t,e,n){var r,i=o.a.parse(o()(e));return N(t+" to be a valid Future."+("Future"===i.name?"\n"+("fluture"!==i.namespace?"The Future was not created by fluture. Make sure you transform other Futures to fluture Futures. Got "+((r=i.namespace)?"a Future from "+r:"an unscoped Future")+".\n See: https://github.com/fluture-js/Fluture#casting-futures":5!==i.version?function(t,e){return"The Future was created by "+(e<5?"an older":"a newer")+" version of fluture. This means that one of the sources which creates Futures is outdated. Update this source, or transform its created Futures to be compatible.\n See: https://github.com/fluture-js/Fluture#casting-futures"}(0,i.version):"Nothing seems wrong. Contact the Fluture maintainers."):"")+"\n Actual: "+F()(e)+" :: "+i.name+(n||""))}function P(t,e,n,r){return B(t+"() expects its "+p[e]+" argument",n,r)}function $(t,e,n){Object.defineProperty(t,e,{value:n,writable:!0,configurable:!0})}function H(t,e){var n=function(t,e){var n;try{if(t instanceof Error)return t;n="A Non-Error was thrown from a Future: "+F()(t)}catch(o){n="Something was thrown from a Future, but it could not be converted to String"}var r=q(n);return x(r,e),r}(t,H),r=function(t,e){for(var n=e,r=m(t);!g(r);)n=b(r.head,n),r=r.tail;return n}(n.context||y,e.context),o=q(n.message);return $(o,"future",n.future||e),$(o,"reason",n.reason||n),$(o,"stack",o.reason.stack),D(o,r)}function D(t,e){return $(t,"context",e),$(t,"stack",t.stack+function(t){var e="",n=t;for(;n!==y;)e=e+"\n"+n.head.stack,n=n.tail;return e}(e)),t}function U(t){return"function"===typeof t}function z(t){return null!==t&&"object"===typeof t}function V(t,e){return null!=e&&U(e[t])}function Z(t){return V(s,t)}function X(t){return Z(t)&&V(a,t)}function K(t){return{done:!1,value:t}}function Q(t){return{done:!0,value:t}}function G(t){for(var e=new Array(t.arity),n=1;n<=t.arity;n++)e[n-1]=t["$"+String(n)];return e}function J(t){return" ("+F()(t)+")"}var Y={pred:function(){return!0},error:I("be anything")},tt={pred:U,error:I("be a Function")},et={pred:at,error:P},nt={pred:function(t){return t===1/0||"number"===typeof t&&t>0&&t%1===0},error:I("be a positive Integer")};function rt(t,e,n,r,o){if(r.length<2&&n.pred(r[0]))return function(t,e,n){return L(t,T,t,e,n)}(o,t,e);var i=r.length>1?function(t,e){return new TypeError(t.name+"() expects to be called with a single argument per invocation\n Saw: "+e.length+" arguments"+Array.prototype.slice.call(e).map((function(t,e){return"\n "+(p[e]?p[e].charAt(0).toUpperCase()+p[e].slice(1):"Argument "+String(e+1))+": "+M(t)})).join(""))}(e,r):n.error(e.name,t-1,r[0]);throw x(i,e),D(i,o)}function ot(t,e,n){return rt(1,t,e,n,y)}function it(t){var e=ot(it,tt,arguments);return new ct(e,t)}function at(t){return t instanceof it||o()(t)===h}function ut(t,e,n){var r=function(t,e,n,r){this.context=t,this.$1=e,this.$2=n,this.$3=r};return(r.prototype=Object.create(it.prototype)).arity=t,r.prototype.name=e,r.prototype._interpret=n,r}it["@@type"]=h,it.constructor={prototype:it},it[f]=yt,it[l]=function(t,e){return yt(K(e))._transform(new St(y,(function e(n){return n.done?yt(n.value):t(K,Q,n.value)._transform(new St(y,e))})))},it.prototype["@@type"]=h,it.prototype["@@show"]=function(){return this.toString()},it.prototype.pipe=function(t){if(!U(t))throw W("Future#pipe",0,"be a Function",t);return t(this)},it.prototype[a]=function t(e){var n=S(y,"a Fantasy Land dispatch to ap",t);return e._transform(new xt(n,this))},it.prototype[s]=function t(e){var n=S(y,"a Fantasy Land dispatch to map",t);return this._transform(new kt(n,e))},it.prototype[u]=function t(e,n){var r=S(y,"a Fantasy Land dispatch to bimap",t);return this._transform(new Lt(r,e,n))},it.prototype[c]=function t(e){var n=S(y,"a Fantasy Land dispatch to chain",t);return this._transform(new St(n,e))},it.prototype[i]=function t(e){var n=S(y,"a Fantasy Land dispatch to alt",t);return this._transform(new Ct(n,e))},it.prototype.extractLeft=function(){return[]},it.prototype.extractRight=function(){return[]},it.prototype._transform=function(t){return new gt(t.context,this,b(t,y))},it.prototype.isTransformer=!1,it.prototype.context=y,it.prototype.arity=0,it.prototype.name="future",it.prototype.toString=function(){return this.name+G(this).map(J).join("")},it.prototype.toJSON=function(){return{$:h,kind:"interpreter",type:this.name,args:G(this)}};var ct=ut(1,"Future",(function(t,e,n){var r=this.$1,o=!1,i=O,a=function(){o=!0};try{i=r((function(t){a=function(){o=!1,e(t)},o&&a()}),(function(t){a=function(){o=!1,n(t)},o&&a()}))}catch(u){return t(H(u,this)),O}return U(i)&&0===i.length?(a(),function(){o&&(o=!1,i&&i())}):(t(H(N("The computation was expected to return a nullary cancellation function\n Actual: "+F()(i)),this)),O)})),lt=ut(0,"never",(function(){return O}));lt.prototype._isNever=!0;var st=new lt(y);var ft=ut(1,"crash",(function(t){return t(this.$1),O}));function dt(t){return new ft(ot(dt,Y,arguments),t)}var pt=ut(1,"reject",(function(t,e){return e(this.$1),O}));function ht(t){return new pt(ot(ht,Y,arguments),t)}pt.prototype.extractLeft=function(){return[this.$1]};var vt=ut(1,"resolve",(function(t,e,n){return n(this.$1),O}));function yt(t){return new vt(ot(yt,Y,arguments),t)}vt.prototype.extractRight=function(){return[this.$1]};var gt=ut(2,"transform",(function(t,e,n){var r,o,i,a,u=y,c=y,l=O,s=!0;function f(){var t=c.head;return c=c.tail,t}function d(){var t=u.head;return u=u.tail,t}function p(t){if(i=!0,(r=t).isTransformer){for(var a=r.$2;!g(a);)u=b(a.head,u),a=a.tail;r=r.$1}s&&function(){s=!1;for(;;){if(i=!1,o=d())l=r._interpret(C,h,v),i||k();else{if(!(o=f()))break;l=r._interpret(C,h,v)}if(!i)return void(s=!0)}l=r._interpret(C,e,n)}()}function h(t){p(o.rejected(t))}function v(t){p(o.resolved(t))}function w(t,e){if(l(),u=y,s&&o!==e)for(o.cancel();(a=f())&&a!==e;)a.cancel();p(t)}function x(){for(l(),o&&o.cancel();a=f();)a.cancel()}function C(e){x(),i=!0,u=c=y;var n=H(e,r);r=st,t(n)}function k(){for(u=m(u);u!==y;){if(a=u.head.run(w),i)return;c=b(a,c),u=u.tail}o=o.run(w)}return p(this),x}));gt.prototype.isTransformer=!0,gt.prototype._transform=function(t){return new gt(t.context,this.$1,b(t,this.$2))},gt.prototype.toString=function(){return w(m(this.$2)).reduce((function(t,e){return e.name+G(e).map(J).join("")+" ("+t+")"}),this.$1.toString())};var bt={rejected:function(t){return this.cancel(),new pt(this.context,t)},resolved:function(t){return this.cancel(),new vt(this.context,t)},run:function(){return this},cancel:O,context:y,arity:0,name:"transform",toJSON:function(){return{$:h,kind:"transformation",type:this.name,args:G(this)}}};function mt(t){return function(e){var n;try{n=t.call(this,e)}catch(r){return new ft(this.context,r)}return at(n)?n:new ft(this.context,B(this.name+" expects the return value from the function it's given",n,"\n When called with: "+F()(e)))}}function wt(t,e,n){var r=function(t,e,n){this.context=t,this.$1=e,this.$2=n};return(r.prototype=Object.create(bt)).arity=t,r.prototype.name=e,"function"===typeof n.rejected&&(r.prototype.rejected=mt(n.rejected)),"function"===typeof n.resolved&&(r.prototype.resolved=mt(n.resolved)),"function"===typeof n.run&&(r.prototype.run=n.run),r}var xt=wt(1,"ap",{resolved:function(t){if(U(t))return this.$1._transform(new kt(this.context,t));throw N("ap expects the second Future to resolve to a Function\n Actual: "+F()(t))}}),Ct=wt(1,"alt",{rejected:function(){return this.$1}}),kt=wt(1,"map",{resolved:function(t){return new vt(this.context,R(this.$1,t))}}),Lt=wt(2,"bimap",{rejected:function(t){return new pt(this.context,R(this.$1,t))},resolved:function(t){return new vt(this.context,R(this.$2,t))}}),St=wt(1,"chain",{resolved:function(t){return R(this.$1,t)}}),_t=ut(2,"after",(function(t,e,n){var r=setTimeout(n,this.$1,this.$2);return function(){clearTimeout(r)}}));_t.prototype.extractRight=function(){return[this.$2]};var Tt={pred:function(t){return Z(t)&&V(i,t)},error:I("have Alt implemented")};function Et(t){if(at(t)){var e=ot(Et,et,arguments);return function n(r){var o=rt(2,n,et,arguments,e);return r._transform(new Ct(o,t))}}var n=ot(Et,Tt,arguments);return function e(r){return rt(2,e,Tt,arguments,n),t[i](r)}}var Ft=wt(1,"and",{resolved:function(){return this.$1}});var At={pred:X,error:I("have Apply implemented")};function Ot(t){if(at(t)){var e=ot(Ot,et,arguments);return function n(r){var o=rt(2,n,et,arguments,e);return r._transform(new xt(o,t))}}var n=ot(Ot,At,arguments);return function e(r){return rt(2,e,At,arguments,n),t[a](r)}}var Rt=ut(2,"encaseP",(function(t,e,n){var r,o,i=!0,a=this.$1,u=this.$2;try{r=a(u)}catch(c){return t(H(c,this)),O}return(o=r)instanceof Promise||null!=o&&U(o.then)?(r.then((function(t){i&&(i=!1,n(t))}),(function(t){i&&(i=!1,e(t))})),function(){i=!1}):(t(H(function(t,e,n){return N("encaseP() expects the function it's given to return a Promise/Thenable\n Actual: "+F()(t)+"\n From calling: "+F()(e)+"\n With: "+F()(n))}(r,a,u),this)),O)}));function jt(t){var e=ot(jt,tt,arguments);return function n(r){var o=rt(2,n,Y,arguments,e);return new Rt(o,t,r)}}function Mt(t){return jt.apply(this,arguments)(void 0)}var qt=ut(2,"encase",(function(t,e,n){var r,o=this.$1;try{r=o(this.$2)}catch(i){return e(i),O}return n(r),O}));function Nt(t){var e=ot(Nt,tt,arguments);return function n(r){var o=rt(2,n,Y,arguments,e);return new qt(o,t,r)}}function Wt(t){return Nt.apply(this,arguments)(void 0)}var It={pred:function(t){return Z(t)&&V(u,t)},error:I("have Bifunctor implemented")};function Bt(t){var e=ot(Bt,tt,arguments);return function n(r){var o=rt(2,n,tt,arguments,e);return function e(n){var i=rt(3,e,It,arguments,o);return at(n)?n._transform(new Lt(i,t,r)):n[u](t,r)}}}wt(2,"bichain",{rejected:function(t){return R(this.$1,t)},resolved:function(t){return R(this.$2,t)}});function Pt(t){var e=this;e.rec=O,e.rej=O,e.res=O,e.crashed=!1,e.rejected=!1,e.resolved=!1,e.value=null,e.cancel=t._interpret((function(t){e.value=t,e.crashed=!0,e.cancel=O,e.rec(t)}),(function(t){e.value=t,e.rejected=!0,e.cancel=O,e.rej(t)}),(function(t){e.value=t,e.resolved=!0,e.cancel=O,e.res(t)}))}function $t(t,e){t(dt(e))}function Ht(t,e){t(ht(e))}function Dt(t,e,n,r,o){var i=wt(1,t,Object.assign({run:function(t){var o=new Pt(this.$1),a=new i(this.context,o);function u(e){t(e,a)}return a.cancel=o._interpret((function(t){e(u,t)}),(function(t){n(u,t)}),(function(t){r(u,t)})),a}},o));return i}Pt.prototype=Object.create(it.prototype),Pt.prototype._interpret=function(t,e,n){return this.crashed?t(this.value):this.rejected?e(this.value):this.resolved?n(this.value):(this.rec=t,this.rej=e,this.res=n),this.cancel};var Ut=wt(1,"pair",{resolved:function(t){return new vt(this.context,[t,this.$1])}}),zt=Dt("both",$t,Ht,O,{resolved:function(t){return this.$1._transform(new Ut(this.context,t))}});function Vt(t){var e=ot(Vt,et,arguments);return function n(r){var o=rt(2,n,et,arguments,e);return r._transform(new zt(o,t))}}function Zt(t,e,n){this[2]=t,this[3]=e,this[4]=n}var Xt=ut(1,"cache",(function(t,e,n){var r=O;switch(this._state){case 1:r=this._addToQueue(t,e,n);break;case 2:t(this._value);break;case 3:e(this._value);break;case 4:n(this._value);break;default:this._queue=[],r=this._addToQueue(t,e,n),this.run()}return r}));Xt.prototype._cancel=O,Xt.prototype._queue=null,Xt.prototype._queued=0,Xt.prototype._value=void 0,Xt.prototype._state=0,Xt.prototype.extractLeft=function(){return 3===this._state?[this._value]:[]},Xt.prototype.extractRight=function(){return 4===this._state?[this._value]:[]},Xt.prototype._addToQueue=function(t,e,n){var r=this;if(r._state>1)return O;var o=r._queue.push(new Zt(t,e,n))-1;return r._queued=r._queued+1,function(){r._state>1||(r._queue[o]=void 0,r._queued=r._queued-1,0===r._queued&&r.reset())}},Xt.prototype._drainQueue=function(){if(!(this._state<=1)&&0!==this._queued){for(var t=this._queue,e=t.length,n=this._state,r=this._value,o=0;o1||(this._value=t,this._state=2,this._drainQueue())},Xt.prototype.reject=function(t){this._state>1||(this._value=t,this._state=3,this._drainQueue())},Xt.prototype.resolve=function(t){this._state>1||(this._value=t,this._state=4,this._drainQueue())},Xt.prototype.run=function(){var t=this;t._state>0||(t._state=1,t._cancel=t.$1._interpret((function(e){t.crash(e)}),(function(e){t.reject(e)}),(function(e){t.resolve(e)})))},Xt.prototype.reset=function(){0!==this._state&&(1===this._state&&this._cancel(),this._cancel=O,this._queue=[],this._queued=0,this._value=void 0,this._state=0)};wt(1,"chainRej",{rejected:function(t){return R(this.$1,t)}});var Kt={pred:function(t){return X(t)&&V(c,t)},error:I("have Chain implemented")};function Qt(t){var e=ot(Qt,tt,arguments);return function n(r){var o=rt(2,n,Kt,arguments,e);return at(r)?r._transform(new St(o,t)):r[c](t)}}var Gt=wt(2,"coalesce",{rejected:function(t){return new vt(this.context,R(this.$1,t))},resolved:function(t){return new vt(this.context,R(this.$2,t))}});function Jt(t){var e=ot(Jt,tt,arguments);return function n(r){var o=rt(2,n,tt,arguments,e);return function e(n){var i=rt(3,e,et,arguments,o);return n._transform(new Gt(i,t,r))}}}function Yt(t){var e=ot(Yt,tt,arguments);return function n(r){var o=rt(2,n,tt,arguments,e);return function e(n){return rt(3,e,et,arguments,o),n._interpret(j,t,r)}}}function te(t){return B("go() expects the value produced by the iterator",t,"\n Tip: If you're using a generator, make sure you always yield a Future")}ut(1,"go",(function(t,e,n){var r,o,i,a,u=this,c=0,l=O;function s(e){t(H(e,u))}try{i=u.$1()}catch(p){return s(p),O}if(!z(a=i)||!U(a.next))return s(W("go",0,'return an iterator, maybe you forgot the "*"',i)),O;function f(t){if(o=t,2===c)return d();c=1}function d(){for(;;){try{r=i.next(o)}catch(p){return s(p)}if(!z(a=r)||"boolean"!==typeof a.done)return s((t=r,N("The iterator did not return a valid iteration from iterator.next()\n Actual: "+F()(t))));if(r.done)break;if(!at(r.value))return s(te(r.value));if(c=0,l=r.value._interpret(s,e,f),0===c)return c=2}var t,a;n(r.value)}return d(),function(){l()}}));ut(3,"hook",(function(t,e,n){var r,o,i,a=this,u=this.$1,c=this.$2,l=this.$3,s=O,f=O;function d(){f(i)}function p(e){t(H(e,a))}function h(){var t,e,n;try{t=c(o)}catch(i){return p(i)}if(!at(t))return p((e=c,n=o,B("hook() expects the return value from the first function it's given",t,"\n From calling: "+F()(e)+"\n With: "+F()(n))));r=y,t._interpret(p,g,d)}function v(){s(),h(),y()}function y(){f=O}function g(t){p(new Error("The disposal Future rejected with "+F()(t)))}function b(t){f=p,i=t,h()}function m(t){f=e,i=t,h()}function w(t){f=n,i=t,h()}var x=u._interpret(p,e,(function(t){var e;o=t;try{e=l(o)}catch(n){return b(n)}if(!at(e))return b(function(t,e,n){return B("hook() expects the return value from the second function it's given",t,"\n From calling: "+F()(e)+"\n With: "+F()(n))}(e,l,o));r=v,s=e._interpret(b,m,w)}));return r=r||x,function(){t=j,r()}}));wt(1,"lastly",{rejected:function(t){return this.$1._transform(new Ft(this.context,new pt(this.context,t)))},resolved:function(t){return this.$1._transform(new Ft(this.context,new vt(this.context,t)))}});var ee=wt(1,"mapRej",{rejected:function(t){return new pt(this.context,R(this.$1,t))}});function ne(t){var e=ot(ne,tt,arguments);return function n(r){var o=rt(2,n,et,arguments,e);return r._transform(new ee(o,t))}}var re={pred:Z,error:I("have Functor implemented")};function oe(t){var e=ot(oe,tt,arguments);return function n(r){var o=rt(2,n,re,arguments,e);return at(r)?r._transform(new kt(o,t)):r[s](t)}}ut(1,"node",(function(t,e,n){var r=!1,o=function(){r=!0};try{R(this.$1,(function(t,i){o=t?function(){r=!1,e(t)}:function(){r=!1,n(i)},r&&o()}))}catch(i){return t(H(i,this)),r=!1,O}return o(),function(){r=!1}}));var ie=Dt("pap",$t,Ht,O,{resolved:function(t){if(U(t))return this.$1._transform(new kt(this.context,t));throw N("pap expects the second Future to resolve to a Function\n Actual: "+F()(t))}});var ae={pred:function(t){if(e=t,!Array.isArray(e))return!1;for(var e,n=0;n0)&&!(r=i.next()).done;)a.push(r.value)}catch(u){o={error:u}}finally{try{r&&!r.done&&(n=i.return)&&n.call(i)}finally{if(o)throw o.error}}return a},Pe=function(){for(var t=[],e=0;e=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")};function He(t){return t instanceof HTMLElement}function De(t){return t instanceof HTMLElement||t instanceof SVGElement}var Ue=function(t){return function(e){return isNaN(e)?t:e}},ze=function(t){return Array.from(t.querySelectorAll("*")).filter((function(t){return 0!==t.scrollTop||0!==t.scrollLeft})).filter(He)},Ve=function(t,e){var n,r,o=e.dataset.picocloneid;if(void 0!==o){var i=t.parentWindow.document.querySelector('[data-picocloneid = "'+o+'"]');if(i instanceof HTMLElement){e.style.position="absolute"===e.style.position?"absolute":"relative",e.style.overflow="hidden",e.style.width=i.offsetWidth+"px",e.style.height=i.offsetHeight+"px";var a=Array.from(e.children).filter(De),u=Array.from(i.children).filter(De);if(a.length===u.length){var c,l=qe(u,a),s=i.scrollTop,f=i.scrollLeft;try{for(var d=$e(l),p=d.next();!p.done;p=d.next()){var h=Be(p.value,2),v=h[0],y=h[1],g=t.parentWindow.window.getComputedStyle(v);if("relative"!==t.parentWindow.window.getComputedStyle(i).position||"absolute"!==g.position){if(y.style.position="absolute",y.style.width=g.width,y.style.height=g.height,"undefined"!==typeof c){var b=c.getBoundingClientRect();s-=v.getBoundingClientRect().top-b.top,f-=v.getBoundingClientRect().left-b.left}y.style.top=-s+"px",y.style.left=-f+"px",c=v}else y.style.top=Ue(0)(parseInt(g.top))-i.scrollTop+"px",y.style.left=Ue(0)(parseInt(g.left))-i.scrollLeft+"px",y.style.zIndex=(Ue(0)(parseInt(g.zIndex))+1).toString()}}catch(m){n={error:m}}finally{try{p&&!p.done&&(r=d.return)&&r.call(d)}finally{if(n)throw n.error}}}else console.warn("Scrolled element has a different amount of children than its clone, skipping scroll emulation",i)}else console.warn("Failed to find original element for scrolled element",e)}else console.warn("Failed to get clone id from cloned scrolled element",e)},Ze=function(t){return function(e){!function(t){var e,n;try{for(var r=$e(Pe(t.querySelectorAll("input"),t.querySelectorAll("textarea"),t.querySelectorAll("canvas"),ze(t))),o=r.next();!o.done;o=r.next()){o.value.dataset.picocloneid=Math.random().toString(32).substring(2)}}catch(i){e={error:i}}finally{try{o&&!o.done&&(n=r.return)&&n.call(r)}finally{if(e)throw e.error}}}(e.parentWindow.html),e.tree.html.className=e.parentWindow.html.className,e.tree.html.style.cssText=e.parentWindow.html.style.cssText,e.tree.svg.style.fontSize=e.parentWindow.window.getComputedStyle(e.parentWindow.html).fontSize;var n,r=e.parentWindow.body.cloneNode(!0);return(n=t,function(t){t instanceof Element&&n.forEach((function(e){var n,r;try{for(var o=$e(t.querySelectorAll(e)),i=o.next();!i.done;i=o.next())i.value.remove()}catch(a){n={error:a}}finally{try{i&&!i.done&&(r=o.return)&&r.call(o)}finally{if(n)throw n.error}}}))})(r),e.tree.html.appendChild(r),function(t){var e,n,r=function(e){var n=e.dataset.picocloneid;if(void 0===n)return console.warn("Failed to get clone id from cloned input or textarea",e),"continue";var r=Pe(t.parentWindow.document.querySelectorAll("input"),t.parentWindow.document.querySelectorAll("textarea")).find((function(t){return t.dataset.picocloneid===n}));if(void 0===r)return console.warn("Failed to find original input or textarea for cloned input or textarea",e),"continue";if(r instanceof HTMLInputElement&&e instanceof HTMLInputElement)"checkbox"!==e.type&&"radio"!==e.type||!r.checked?-1!==["number","text","range"].indexOf(e.type)&&e.setAttribute("value",r.value):e.setAttribute("checked","checked");else if(r instanceof HTMLTextAreaElement&&e instanceof HTMLTextAreaElement){var o=t.parentWindow.document.createTextNode(r.value);e.innerHTML="",e.appendChild(o)}};try{for(var o=$e(Pe(t.tree.html.querySelectorAll("input"),t.tree.html.querySelectorAll("textarea"))),i=o.next();!i.done;i=o.next()){r(i.value)}}catch(a){e={error:a}}finally{try{i&&!i.done&&(n=o.return)&&n.call(o)}finally{if(e)throw e.error}}}(e),function(t){var e,n,r=function(e){var n=e.dataset.picocloneid;if(void 0===n)return console.warn("Failed to get clone id from cloned canvas",e),"continue";var r=Array.from(t.parentWindow.document.querySelectorAll("canvas")).find((function(t){return t.dataset.picocloneid===n}));if(void 0===r)return console.warn("Failed to find original canvas for cloned canvas",e),"continue";var o=t.parentWindow.document.createElement("img");o.style.cssText=t.parentWindow.window.getComputedStyle(r).cssText,o.src=r.toDataURL();var i=e.parentNode;if(!i)return console.warn("Failed to get parent of node",e),"continue";i.replaceChild(o,e)};try{for(var o=$e(t.tree.html.querySelectorAll("canvas")),i=o.next();!i.done;i=o.next()){r(i.value)}}catch(a){e={error:a}}finally{try{i&&!i.done&&(n=o.return)&&n.call(o)}finally{if(e)throw e.error}}}(e),function(t){var e,n;try{for(var r=$e(ze(t.parentWindow.html)),o=r.next();!o.done;o=r.next()){var i=o.value,a=i.dataset.picocloneid;if(void 0!==a){var u=t.tree.html.querySelector('[data-picocloneid = "'+a+'"]');u instanceof HTMLElement?Ve(t,u):console.warn("Failed to find cloned element for original scrolled element",i)}else console.warn("Failed to get clone id from scrolled element",i)}}catch(c){e={error:c}}finally{try{o&&!o.done&&(n=r.return)&&n.call(r)}finally{if(e)throw e.error}}t.tree.html.style.transform+=" translate(-"+t.parentWindow.html.scrollLeft+"px, -"+t.parentWindow.html.scrollTop+"px)"}(e),r instanceof HTMLBodyElement&&(e.tree.html.style.margin="0"),function(t){var e,n;try{for(var r=$e(t.querySelectorAll("[data-picocloneid]")),o=r.next();!o.done;o=r.next()){var i=o.value;i instanceof HTMLElement?i.removeAttribute("data-picocloneid"):console.warn("Element that had a pico clone id attached was not an HTMLElement during cleanup",i)}}catch(a){e={error:a}}finally{try{o&&!o.done&&(n=r.return)&&n.call(r)}finally{if(e)throw e.error}}}(e.parentWindow.html),e}},Xe=function(t,e){var n="function"===typeof Symbol&&t[Symbol.iterator];if(!n)return t;var r,o,i=n.call(t),a=[];try{for(;(void 0===e||e-- >0)&&!(r=i.next()).done;)a.push(r.value)}catch(u){o={error:u}}finally{try{r&&!r.done&&(n=i.return)&&n.call(i)}finally{if(o)throw o.error}}return a},Ke=function(t){return function(e,n){void 0===n&&(n={});var r=t.createElement(e);return Object.assign(r,n),r}},Qe=function(t){return{reason:t,error:new Error(t)}},Ge=function(t){var e,n=t.window,r=n.innerWidth,o=n.innerHeight,i=Ke(t.document),a=(e=t.document,function(t,n){void 0===n&&(n={});var r=e.createElementNS("http://www.w3.org/2000/svg",t);return Object.entries(n).forEach((function(t){var e=Xe(t,2),n=e[0],o=e[1];return r.setAttribute(n,o)})),r}),u=i("iframe",{width:r+"px",height:o+"px"}),c=a("svg",{width:r+"px",height:o+"px"});c.style.backgroundColor=function(t,e){var n=t.getComputedStyle(e).backgroundColor;return"transparent"===n||"rgba(0, 0, 0, 0)"===n?"white":n}(t.window,t.body);var l=a("foreignObject",{x:"0",y:"0",width:r+"px",height:o+"px"}),s=i("html");s.setAttribute("xmlns","http://www.w3.org/1999/xhtml");var f=i("head");return s.appendChild(f),s.appendChild(f),l.appendChild(s),c.appendChild(l),u.appendChild(c),{html:s,head:f,svg:c}},Je=function(t){return ke(function(t){var e=t.document,n=e.head,r=e.body,o=e.querySelector("html");return o instanceof HTMLHtmlElement?r instanceof HTMLBodyElement?xe({window:t,document:e,html:o,head:n,body:r}):we(Qe("Failed to get HTMLBodyElement")):we(Qe("Failed to get HTMLHtmlElement"))}(t),Ce((function(t){return{parentWindow:t,tree:Ge(t)}})))},Ye=Symbol(),tn=function(t){return{_tag:Ye,errors:[],value:t}},en=function(t){return function(e){return nn(t)([e])}},nn=function(t){return function(e){return{_tag:Ye,errors:e,value:t}}},rn=function(t){return t.value},on=function(t){return t.errors},an=function(){},un=function(t){return"data:image/svg+xml;charset=utf-8,"+window.encodeURIComponent((new XMLSerializer).serializeToString(t))},cn=function(t){return it((function(e,n){try{t.toBlob((function(t){if(null===t)return e(Qe("Failed to get blob from canvas (the returned blob is null)"));n(t)}),"image/png",1)}catch(r){e(Qe("Failed to get blob from canvas (the canvas is most likely tainted)"))}return an}))},ln=function(t){try{return xe(t.toDataURL("image/png",1))}catch(e){return we(Qe("Failed to get data url from canvas (the canvas is most likely tainted)"))}},sn=function(t){var e,n=t.parentWindow.window.devicePixelRatio||1,r=Ke(t.parentWindow.document)("canvas",{width:t.parentWindow.window.innerWidth*n,height:t.parentWindow.window.innerHeight*n}),o=r.getContext("2d");return null===o?ht(Qe("Failed to obtain 2d canvas context")):(e=2e3,function(t){return se(it((function(t){var n=setTimeout((function(){return t(Qe("Timed out waiting for promise ("+e+"ms)"))}),e);return function(){return clearTimeout(n)}})))(t)})(it((function(e,i){var a=new Image;return a.onerror=function(){return e(Qe("Failed to load exported onto canvas"))},a.onload=function(){o.setTransform(n,0,0,n,0,0),o.drawImage(a,0,0),i(r)},a.src=un(t.tree.svg),a.remove})))},fn=function(t){return it((function(e,n){return fetch(t).then((function(t){return t.blob()})).then(n).catch((function(){return e(Qe("Failed to convert dataURL to blob ("+t+")"))})),an}))},dn=function(t){try{return xe(URL.createObjectURL(t))}catch(e){return we(Qe("Failed to create result object URL"))}},pn=function(t){return it((function(e,n){return fetch(t,{cache:"force-cache"}).then((function(r){r.ok?n(r):e({_tag:"HTTPError",url:t,status:r.status,statusText:r.statusText})})).catch((function(n){e({_tag:"NetworkError",url:t})})),an}))},hn=function(t){return it((function(e,n){return t.text().then(n).catch((function(n){return e({error:n,reason:"Failed to convert response to text ("+t.url+")"})})),an}))},vn=function(t){return it((function(e,n){return t.blob().then(n).catch((function(n){return e({error:n,reason:"Failed to convert response to text ("+t.url+")"})})),an}))},yn=function(t){return it((function(e,n){var r=new FileReader;return r.onloadend=function(){return"string"===typeof r.result?n(r.result):e(Qe("Got invalid type when reading blob ("+typeof r.result+")"))},r.onerror=function(){return e(Qe("Failed to load data url for blob"))},r.readAsDataURL(t),r.abort}))},gn=function(t){var e="Failed to download resource at "+t.url+" "+("NetworkError"===t._tag?"(Network Error, most likely a CORS issue)":"(Status: "+t.status+" - "+t.statusText+")");return{reason:e,error:new Error(e)}},bn=function(t,e){var n="function"===typeof Symbol&&t[Symbol.iterator];if(!n)return t;var r,o,i=n.call(t),a=[];try{for(;(void 0===e||e-- >0)&&!(r=i.next()).done;)a.push(r.value)}catch(u){o={error:u}}finally{try{r&&!r.done&&(n=i.return)&&n.call(i)}finally{if(o)throw o.error}}return a},mn=function(t){var e="function"===typeof Symbol&&Symbol.iterator,n=e&&t[e],r=0;if(n)return n.call(t);if(t&&"number"===typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")},wn=function t(e){var n=ot(t,nt,arguments);return function t(r){var o=rt(2,t,ae,arguments,n);return 0===r.length?ce:new ue(o,e,r)}}(1/0);function xn(t){return t instanceof CSSStyleSheet}var Cn=function(t){return function(e){var n=document.createElement("style");n.appendChild(document.createTextNode(e)),document.implementation.createHTMLDocument().head.appendChild(n);var r=n.sheet;if(!(r instanceof CSSStyleSheet)){var o="Failed to initialize CSSStyleSheet";return ht({reason:o,error:new Error(o)})}return Sn(r.cssRules,t)}},kn=/url\(['"]?(.+?)['"]?\)/,Ln=function(t){return function t(e,n){return function(r){if(e.global||e.sticky)throw new TypeError("Only non-global and non-sticky (without the /g or /y flags) regex' can be used");var o=e.exec(r);if(null===o)return yt(tn(r));var i=o[0],a=o[1];if("string"!==typeof o[1])return yt(tn(r));var u=r.substring(0,o.index),c=ke(n(a),Jt(en(a))(tn)),l=t(e,n)(r.substring(o.index+i.length));return ke(Vt(c)(l),oe((function(t){var e=bn(t,2),n=e[0],r=e[1];return nn(u+n.value+r.value)(je([n.errors,r.errors]))})))}}(kn,(function(e){if(0===e.indexOf("data:"))return yt('url("'+e+'")');var n=new URL(e,t).toString();return ke(pn(n),ne(gn),Qt(vn),Qt(yn),oe((function(t){return"url("+t+")"})))}))},Sn=function(t,e){return ke(Array.from(t),Ne(function(t){return function(e){if(e instanceof CSSStyleRule){return ke(["background","backgroundImage","listStyle","listStyleImage","content","cursor","border","borderImage","borderImageSource","mask","maskImage"].map((function(n){var r=e.style[n];return""===r||void 0===r?yt([]):ke(Ln(t)(r),oe((function(t){var r=t.errors,o=t.value;return e.style[n]=o,r})))})),wn,oe(je),oe((function(t){return nn(e.cssText)(t)})))}return e instanceof CSSFontFaceRule?Ln(t)(e.cssText):e instanceof CSSMediaRule?window.matchMedia(e.media.mediaText).matches?Sn(e.cssRules,t):yt(tn("")):e instanceof CSSImportRule?ke(pn(e.href),ne(gn),Qt(hn),Qt(Cn(e.href))):(CSSPageRule,yt(tn(e.cssText)))}}(e)),Ne(Jt((function(t){return nn("")([t])}))(ye)),wn,oe((n=function(t,e){return t+"\n"+e},r="",function(t){return{_tag:Ye,errors:ke(t,Ne((function(t){return t.errors})),je),value:ke(t,Ne((function(t){return t.value})),Ie(r,n))}})));var n,r},_n=function(t,e){return ke(Array.from(t),We(xn),Ne(function(t){return function(e){return ke(e.href?ke(pn(e.href),ne(gn),Qt(hn)):yt(Array.from(e.cssRules).map((function(t){return t.cssText})).join("\n")),Qt(Cn(e.href||t)))}}(e)),Ne(Jt(en(""))(ye)),wn)},Tn=function(t){return ke(Array.from(t.tree.html.querySelectorAll("img")),Ne((function(t){return ke(pn(t.src),ne(gn),Qt(vn),Qt(yn),oe((function(e){return t.src=e,e})),Jt(we)(xe))})),wn,oe((e=t,function(t){return{_tag:Ye,errors:Me(t),value:e}})));var e},En=function(t){return ke(Tn(t),Qt((function(t){return ke(function(t){return ke(_n(t.parentWindow.document.styleSheets,t.parentWindow.window.location.href),oe((function(e){var n,r;try{for(var o=mn(ke(e,Ne(rn))),i=o.next();!i.done;i=o.next()){var a=i.value,u=t.parentWindow.document.createElement("style");u.appendChild(t.parentWindow.document.createTextNode(a)),t.tree.head.appendChild(u)}}catch(l){n={error:l}}finally{try{i&&!i.done&&(r=o.return)&&r.call(o)}finally{if(n)throw n.error}}var c=ke(e,Ne(on),je);return nn(t)(c)})))}(rn(t)),oe((function(e){return nn(rn(e))(je([on(t),on(e)]))})))})))},Fn={ignore:[]},An=function(t,e){return ke(Je(t),_e,oe(Ze(e.ignore)),Qt(En))},On=function(t){return function(e,n){return void 0===n&&(n={}),new Promise((function(r,o){return ke(t(e,(i=n,Object.assign({},Fn,i))),Yt((function(t){return o(t.error)}))(r));var i}))}},Rn=(On((function(t,e){return ke(An(t,e),Qt((function(t){var e=t.value,n=t.errors;return ke(function(t){return ke(sn(t),Qt(cn))}(e),Qt(ge(dn,_e)),oe((function(t){return nn(t)(n)})))})))})),On((function(t,e){return ke(An(t,e),Qt((function(t){var e=t.value,n=t.errors;return ke(function(t){return ke(un(t.tree.svg),fn)}(e),Qt(ge(dn,_e)),oe((function(t){return nn(t)(n)})))})))})),On((function(t,e){return ke(An(t,e),Qt((function(t){var e=t.value,n=t.errors;return ke(function(t){return ke(sn(t),Qt(ge(ln,_e)))}(e),oe((function(t){return nn(t)(n)})))})))})));function jn(t,e){for(var n=0;n\n \n \n ',document.body.appendChild(e);var n=document.querySelector(".bugbattle--feedback-send-button");document.querySelector(".bugbattle--feedback-dialog-header-button-cancel").onclick=function(){t.hide()},n.onclick=function(){document.querySelector(".bugbattle--feedback-dialog-container").remove(),t.createBugReportingDialog()}}},{key:"createBugReportingDialog",value:function(){var t=this,e=document.createElement("div");e.className="bugbattle--feedback-dialog-container",e.setAttribute("data-ignore-bb","true"),e.innerHTML=''),document.body.appendChild(e);var n=document.querySelector(".bugbattle--feedback-inputgroup--privacy-policy"),r=document.querySelector(".bugbattle--feedback-inputgroup--privacy-policy-label"),o=document.querySelector(".bugbattle--feedback-inputgroup--privacy-policy input");this.privacyPolicyCheckEnabled?(n.style.display="block",document.querySelector("#bugbattle-privacy-policy-link").href=this.privacyPolicyUrl):n.style.display="none",r.onclick=function(){o.checked=!o.checked};var i=document.querySelector(".bugbattle--feedback-poweredbycontainer");this.poweredByHidden?i.style.display="none":i.onclick=function(){window.open("https://www.bugbattle.io/","_blank")};var a=document.querySelector(".bugbattle--feedback-send-button"),u=document.querySelector(".bugbattle--feedback-dialog-header-button-cancel"),c=document.querySelector(".bugbattle--feedback-email"),l=document.querySelector(".bugbattle--feedback-description");l.oninput=function(){l.style.height="inherit",l.style.height=l.scrollHeight+"px"},u.onclick=function(){t.hide()},c.value=this.email,a.onclick=function(){if(t.email=c.value,t.email&&0!==t.email.length)if(!t.privacyPolicyCheckEnabled||o.checked){if(t.description=l.value,localStorage.setItem("bugbattle-sender-email",t.email),t.toggleLoading(!0),!t.sdkKey)return alert("BUGBATTLE: Please provide a valid API key!");t.preScreenshotCleanup(),window.scrollTo(t.snapshotPosition.x,t.snapshotPosition.y),Rn(window,{ignore:['[data-ignore-bb~="true"]']}).then((function(e){e&&e.value?(t.screenshot=e.value,t.prepareScreenshot()):t.showError()})).catch((function(e){t.showError()}))}else alert("Please read and accept the privacy policy.");else alert("Please provide an email address.")}}},{key:"preScreenshotCleanup",value:function(){document.body.querySelectorAll("img, svg, video").forEach((function(t){t.setAttribute("width",t.getBoundingClientRect().width),t.setAttribute("height",t.getBoundingClientRect().height)}))}},{key:"hide",value:function(){var t=document.querySelector(".bugbattle-screenshot-editor-container");t&&t.remove();var e=document.querySelector(".bugbattle--feedback-dialog-container");e&&e.remove();var n=document.querySelector(".bugbattle--feedback-button");n&&(n.style.display="block"),this.bugReportingRunning=!1,this.crashDetected=!1,this.enableScroll()}},{key:"init",value:function(){this.overwriteConsoleLog(),this.startCrashDetection();var t=this;"complete"===document.readyState||"loaded"===document.readyState||"interactive"===document.readyState?t.checkForInitType():document.addEventListener("DOMContentLoaded",(function(e){t.checkForInitType()}))}},{key:"checkForInitType",value:function(){this.activation===t.FEEDBACK_BUTTON&&this.injectFeedbackButton()}},{key:"injectFeedbackButton",value:function(){var e=document.createElement("div");e.className="bugbattle--feedback-button",e.innerHTML='',e.onclick=function(){t.startBugReporting()},document.body.appendChild(e)}},{key:"toggleLoading",value:function(t){var e=document.querySelector(".bugbattle--feedback-dialog-header"),n=document.querySelector(".bugbattle--feedback-dialog-body"),r=document.querySelector(".bugbattle--feedback-dialog-loading");t?(n.style.display="none",r.style.display="block",e.style.display="none"):(n.style.display="block",r.style.display="none",e.style.display="block")}},{key:"showSuccessMessage",value:function(){var t=document.querySelector(".bugbattle--feedback-dialog-success"),e=document.querySelector(".bugbattle--feedback-dialog-body"),n=document.querySelector(".bugbattle--feedback-dialog-loading");e.style.display="none",n.style.display="none",t.style.display="flex"}},{key:"dataURItoBlob",value:function(t){for(var e=atob(t.split(",")[1]),n=t.split(",")[0].split(":")[1].split(";")[0],r=new ArrayBuffer(e.length),o=new Uint8Array(r),i=0;i0||a.offsetLeft)&&o.strokeRect(a.offsetLeft*n,a.offsetTop*n,a.offsetWidth*n,a.offsetHeight*n)),t.uploadScreenshot(r.toDataURL("image/jpeg",.5)),t.screenshot=null},e.onerror=function(){t.hide()},e.src=this.screenshot}},{key:"uploadScreenshot",value:function(t){var e=this,n=new XMLHttpRequest;n.open("POST",this.apiUrl+"/uploads/sdk"),n.setRequestHeader("Api-Token",this.sdkKey),n.onreadystatechange=function(t){if(n.readyState===XMLHttpRequest.DONE)try{var r=JSON.parse(n.responseText);r&&r.fileUrl?(e.screenshotURL=r.fileUrl,e.sendBugReportToServer()):e.showError()}catch(t){e.showError()}};document.querySelector(".bugbattle-screenshot-editor-canvas");var r=this.dataURItoBlob(t),o=new FormData;o.append("file",r,"screenshot.jpg"),n.send(o)}},{key:"sendBugReportToServer",value:function(){var t=this,e=new XMLHttpRequest;e.open("POST",this.apiUrl+"/bugs"),e.setRequestHeader("Content-Type","application/json;charset=UTF-8"),e.setRequestHeader("Api-Token",this.sdkKey),e.onreadystatechange=function(n){e.readyState!==XMLHttpRequest.DONE||200!==e.status&&201!==e.status||(t.showSuccessMessage(),setTimeout((function(){t.hide()}),1500))};var n={reportedBy:this.email,description:this.description,priority:this.severity,screenshotUrl:this.screenshotURL,customData:this.customData,metaData:this.getMetaData(),consoleLog:this.logArray,type:this.crashDetected?"CRASHREPORT":"BUG"};e.send(JSON.stringify(n))}},{key:"showError",value:function(){this.toggleLoading(!1)}},{key:"getMetaData",value:function(){var t,e,n,r=navigator.userAgent,o=navigator.appName,i=""+parseFloat(navigator.appVersion),a=parseInt(navigator.appVersion,10);-1!==(e=r.indexOf("Opera"))?(o="Opera",i=r.substring(e+6),-1!==(e=r.indexOf("Version"))&&(i=r.substring(e+8))):-1!==(e=r.indexOf("MSIE"))?(o="Microsoft Internet Explorer",i=r.substring(e+5)):-1!==(e=r.indexOf("Chrome"))?(o="Chrome",i=r.substring(e+7)):-1!==(e=r.indexOf("Safari"))?(o="Safari",i=r.substring(e+7),-1!==(e=r.indexOf("Version"))&&(i=r.substring(e+8))):-1!==(e=r.indexOf("Firefox"))?(o="Firefox",i=r.substring(e+8)):(t=r.lastIndexOf(" ")+1)<(e=r.lastIndexOf("/"))&&(o=r.substring(t,e),i=r.substring(e+1),o.toLowerCase()===o.toUpperCase()&&(o=navigator.appName)),-1!==(n=i.indexOf(";"))&&(i=i.substring(0,n)),-1!==(n=i.indexOf(" "))&&(i=i.substring(0,n)),a=parseInt(""+i,10),isNaN(a)&&(i=""+parseFloat(navigator.appVersion),a=parseInt(navigator.appVersion,10));var u="Unknown OS";-1!==navigator.appVersion.indexOf("Win")&&(u="Windows"),-1!==navigator.appVersion.indexOf("Mac")&&(u="MacOS"),-1!==navigator.appVersion.indexOf("X11")&&(u="UNIX"),-1!==navigator.appVersion.indexOf("Linux")&&(u="Linux"),-1!==navigator.appVersion.indexOf("iPad")&&(u="iPad"),-1!==navigator.appVersion.indexOf("iPhone")&&(u="iPhone"),-1!==navigator.appVersion.indexOf("Android")&&(u="Android");var c=((new Date).getTime()-this.sessionStart.getTime())/1e3;return{browserName:o+"("+i+")",userAgent:r,browser:navigator.appName,systemName:u,buildVersionNumber:this.appBuildNumber,releaseVersionNumber:this.appVersionCode,sessionDuration:c,devicePixelRatio:window.devicePixelRatio,screenWidth:window.screen.width,screenHeight:window.screen.height,innerWidth:window.innerWidth,innerHeight:window.innerHeight,currentUrl:window.location.href,language:navigator.language||navigator.userLanguage}}},{key:"showBugReportEditor",value:function(){var t=this,e=document.createElement("div");e.className="bugbattle-screenshot-editor-container",e.setAttribute("data-ignore-bb","true"),e.innerHTML="\n
\n
\n
\n
\n
Click or drag to create a comment
\n
\n ",document.body.appendChild(e);var n=document.querySelector(".bugbattle-screenshot-editor-borderlayer");n&&(n.style.height="".concat(window.innerHeight,"px"));var r=!1,o=-1,i=-1;function a(t,e){if(!r){var n=document.querySelector(".bugbattle-screenshot-editor-dot");n.style.left=t-n.offsetWidth/2+"px",n.style.top=e-n.offsetHeight/2+"px"}}function u(t,e){var n=document.querySelector(".bugbattle-screenshot-editor-drag-info");if(n.style.left="".concat(t+20,"px"),n.style.top="".concat(e-n.offsetHeight/2,"px"),n.style.right=null,!(r||o<0)){var a=t-o,u=e-i,c=document.querySelector(".bugbattle-screenshot-editor-rectangle"),l=a<0?o+a:o,s=u<0?i+u:i,f=u<0?-1*u:u,d=a<0?-1*a:a;c.style.left="".concat(l,"px"),c.style.top="".concat(s,"px"),c.style.width="".concat(d,"px"),c.style.height="".concat(f,"px")}}function c(e){document.querySelector(".bugbattle-screenshot-editor-drag-info").style.display="none",r=!0,t.createBugReportingDialog()}e.addEventListener("mouseup",c),e.addEventListener("mousemove",(function(t){u(t.pageX-document.documentElement.scrollLeft,t.pageY-document.documentElement.scrollTop)})),e.addEventListener("mousedown",(function(t){o=t.pageX-document.documentElement.scrollLeft,i=t.pageY-document.documentElement.scrollTop,a(o,i)})),e.addEventListener("touchstart",(function(t){o=t.touches[0].pageX-document.documentElement.scrollLeft,i=t.touches[0].pageY-document.documentElement.scrollTop,a(o,i)})),e.addEventListener("touchmove",(function(t){u(t.touches[0].pageX-document.documentElement.scrollLeft,t.touches[0].pageY-document.documentElement.scrollTop),t.preventDefault()})),e.addEventListener("touchend",c)}}],[{key:"enablePoweredByBugbattle",value:function(t){this.instance.poweredByHidden=t}},{key:"enablePrivacyPolicy",value:function(t){this.instance.privacyPolicyCheckEnabled=t}},{key:"setPrivacyPolicyUrl",value:function(t){this.instance.privacyPolicyUrl=t}},{key:"enableCrashDetector",value:function(t){this.instance.crashDetectorEnabled=t}},{key:"setCustomerEmail",value:function(t){this.instance.email=t}},{key:"setAppVersionCode",value:function(t){this.instance.appVersionCode=t}},{key:"setAppBuildNumber",value:function(t){this.instance.appBuildNumber=t}},{key:"setApiUrl",value:function(t){this.instance.apiUrl=t}},{key:"attachCustomData",value:function(t){this.instance.customData=t}},{key:"setMainColor",value:function(t){var e="\n .bugbattle--feedback-button {\n background-color: ".concat(t,";\n }\n .bugbattle--feedback-dialog-header-button {\n color: ").concat(t,";\n }\n .bugbattle-screenshot-editor-borderlayer {\n border-color: ").concat(t,";\n }\n .bugbattle-screenshot-editor-dot {\n background-color: ").concat(t,";\n }\n .bugbattle-screenshot-editor-rectangle {\n border-color: ").concat(t,";\n }\n .bugbattle--feedback-send-button {\n background-color: ").concat(t,";\n }\n .bugbattle--feedback-inputgroup--privacy-policy a {\n color: ").concat(t,";\n }\n .bugbattle-screenshot-editor-drag-info {\n background-color: ").concat(t,";\n }\n .bugbattle-double-bounce1,\n .bugbattle-double-bounce2 {\n background-color: ").concat(t,";\n }\n ");this.instance.mainColor=t;var n=document.createElement("style");n.innerHTML=e,document.body.appendChild(n)}},{key:"startBugReporting",value:function(){this.instance.disableScroll();var t=document.querySelector(".bugbattle--feedback-button");t&&(t.style.display="none"),this.instance.snapshotPosition={x:window.scrollX,y:window.scrollY},this.instance.crashDetected?this.instance.askForCrashReport():this.instance.showBugReportEditor()}},{key:"disableConsoleLogOverwrite",value:function(){window.console=this.instance.originalConsoleLog}}]),t}();qn(Nn,"FEEDBACK_BUTTON","FEEDBACK_BUTTON"),qn(Nn,"NONE","NONE"),qn(Nn,"instance",void 0);var Wn=Nn;new function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),Wn.initialize("NF0AbayNnRfrT6QsB3uGAi6ANdd8WeX4",Wn.FEEDBACK_BUTTON),Wn.setMainColor("#FEAB39"),Wn.setAppBuildNumber(5),Wn.setAppVersionCode("v5.0"),Wn.attachCustomData({test1:"Battle",data2:"Unicorn"}),Wn.enablePrivacyPolicy(!1),Wn.enableCrashDetector(!1);var e=document.querySelector("#feedback-button");e&&(e.onclick=function(){Wn.startBugReporting()}),console.log("asdf"),console.warn("asdf"),console.error("asdf")}}]); //# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/demo/index.js.map b/demo/index.js.map index f878e106..62339d90 100644 --- a/demo/index.js.map +++ b/demo/index.js.map @@ -1 +1 @@ -{"version":3,"sources":["../../webpack/bootstrap","../../node_modules/html2canvas/dist/html2canvas.js","../lib/BugBattle.js","../lib/index.js","index.js","App.js"],"names":["enumerable","get","getter","value","key","bind","module","Object","prototype","hasOwnProperty","call","object","property","exports","_extendStatics","d","b","setPrototypeOf","__proto__","Array","p","__extends","__","this","constructor","create","_assign","assign","t","s","i","n","arguments","length","apply","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","step","next","e","rejected","result","done","then","__generator","body","f","y","g","_","label","sent","trys","ops","verb","Symbol","iterator","v","op","TypeError","pop","push","Bounds","x","w","h","left","top","width","height","add","fromClientRect","clientRect","parseBounds","node","getBoundingClientRect","toCodePoints","str","codePoints","charCodeAt","extra","fromCodePoint","_i","String","codeUnits","index","codePoint","fromCharCode","chars","lookup","Uint8Array","TokenType","slice16","view","start","end","slice","Uint16Array","Trie","initialValue","errorValue","highStart","highValueIndex","data","ix","UTRIE2_DATA_BLOCK_LENGTH","UTRIE2_INDEX_1_OFFSET","UTRIE2_INDEX_2_BLOCK_LENGTH","SP","BA","HY","CL","CP","EX","IN","NS","OP","IS","NU","PO","PR","SY","AL","EB","EM","H2","H3","ID","JL","JV","JT","SA","UnicodeTrie","base64","buffer","encoded1","encoded2","encoded3","encoded4","bufferLength","len","ArrayBuffer","bytes","isArray","decode","view32","polyUint32Array","Uint32Array","view16","polyUint16Array","headerLength","Math","ceil","createTrieFromBase64","ALPHABETICS","HARD_LINE_BREAKS","SPACE","PREFIX_POSTFIX","LINE_BREAKS","concat","KOREAN_SYLLABLE_BLOCK","HYPHEN","isAdjacentWithSpaceIgnored","a","currentIndex","classTypes","current","indexOf","prev","previousNonSpaceClassType","type","_lineBreakAtIndex","indicies","forbiddenBreaks","beforeIndex","afterIndex","before","prevIndex","count","cssFormattedClasses","options","lineBreak","wordBreak","_a","types","categories","forEach","classType","codePointsToCharacterClasses","isLetterNumber","map","letterNumber","undefined","Break","required","isDigit","isHex","isWhiteSpace","isNameStartCodePoint","isLowerCaseLetter","isUpperCaseLetter","isLetter","isNonASCIICodePoint","isNameCodePoint","isNonPrintableCodePoint","isValidEscape","c1","c2","isIdentifierStart","c3","isNumberStart","stringToNumber","c","sign","integers","int","parseInt","fraction","fracd","frac","expsign","exponent","exp","pow","LEFT_PARENTHESIS_TOKEN","RIGHT_PARENTHESIS_TOKEN","COMMA_TOKEN","SUFFIX_MATCH_TOKEN","PREFIX_MATCH_TOKEN","COLUMN_TOKEN","DASH_MATCH_TOKEN","INCLUDE_MATCH_TOKEN","LEFT_CURLY_BRACKET_TOKEN","RIGHT_CURLY_BRACKET_TOKEN","SUBSTRING_MATCH_TOKEN","BAD_URL_TOKEN","BAD_STRING_TOKEN","CDO_TOKEN","CDC_TOKEN","COLON_TOKEN","SEMICOLON_TOKEN","LEFT_SQUARE_BRACKET_TOKEN","RIGHT_SQUARE_BRACKET_TOKEN","WHITESPACE_TOKEN","EOF_TOKEN","Tokenizer","_value","write","chunk","read","tokens","token","consumeToken","consumeCodePoint","consumeStringToken","peekCodePoint","flags","consumeName","HASH_TOKEN","reconsumeCodePoint","consumeNumericToken","e1","e2","e3","consumeIdentLikeToken","a1","a2","a3","AT_KEYWORD_TOKEN","u1","u2","consumeUnicodeRangeToken","consumeWhiteSpace","DELIM_TOKEN","shift","unshift","delta","digits","questionMarks","start_1","digit","UNICODE_RANGE_TOKEN","endDigits","toLowerCase","consumeUrlToken","FUNCTION_TOKEN","IDENT_TOKEN","URL_TOKEN","stringToken","STRING_TOKEN","consumeBadUrlRemnants","consumeEscapedCodePoint","consumeStringSlice","amount","min","splice","endingCodePoint","consumeNumber","repr","number","unit","DIMENSION_TOKEN","PERCENTAGE_TOKEN","NUMBER_TOKEN","hex","hexCodePoint","isSurrogateCodePoint","Parser","_tokens","tokenizer","parseValue","parseComponentValue","parseValues","parseComponentValues","SyntaxError","reconsumeToken","consumeComponentValue","values","consumeSimpleBlock","consumeFunction","block","isEndingTokenFor","functionToken","cssFunction","name","FUNCTION","isDimensionToken","isNumberToken","isIdentToken","isStringToken","isIdentWithValue","nonWhiteSpace","nonFunctionArgSeparator","parseFunctionArgs","args","arg","Error","isLength","isLengthPercentage","parseLengthPercentageTuple","ZERO_LENGTH","FIFTY_PERCENT","HUNDRED_PERCENT","getAbsoluteValueForTuple","tuple","getAbsoluteValue","parent","angle","PI","isAngle","parseNamedSide","filter","ident","join","deg","_deg","color","colorFunction","SUPPORTED_COLOR_FUNCTIONS","r","substring","pack","namedColor","COLORS","toUpperCase","TRANSPARENT","isTransparent","asString","alpha","blue","green","red","round","getTokenColorValue","max","rgb","_b","hue2rgb","t1","t2","hue","PropertyDescriptorParsingType","BACKGROUND_CLIP","hsl","saturation","lightness","l","hsla","rgba","ALICEBLUE","ANTIQUEWHITE","AQUA","AQUAMARINE","AZURE","BEIGE","BISQUE","BLACK","BLANCHEDALMOND","BLUE","BLUEVIOLET","BROWN","BURLYWOOD","CADETBLUE","CHARTREUSE","CHOCOLATE","CORAL","CORNFLOWERBLUE","CORNSILK","CRIMSON","CYAN","DARKBLUE","DARKCYAN","DARKGOLDENROD","DARKGRAY","DARKGREEN","DARKGREY","DARKKHAKI","DARKMAGENTA","DARKOLIVEGREEN","DARKORANGE","DARKORCHID","DARKRED","DARKSALMON","DARKSEAGREEN","DARKSLATEBLUE","DARKSLATEGRAY","DARKSLATEGREY","DARKTURQUOISE","DARKVIOLET","DEEPPINK","DEEPSKYBLUE","DIMGRAY","DIMGREY","DODGERBLUE","FIREBRICK","FLORALWHITE","FORESTGREEN","FUCHSIA","GAINSBORO","GHOSTWHITE","GOLD","GOLDENROD","GRAY","GREEN","GREENYELLOW","GREY","HONEYDEW","HOTPINK","INDIANRED","INDIGO","IVORY","KHAKI","LAVENDER","LAVENDERBLUSH","LAWNGREEN","LEMONCHIFFON","LIGHTBLUE","LIGHTCORAL","LIGHTCYAN","LIGHTGOLDENRODYELLOW","LIGHTGRAY","LIGHTGREEN","LIGHTGREY","LIGHTPINK","LIGHTSALMON","LIGHTSEAGREEN","LIGHTSKYBLUE","LIGHTSLATEGRAY","LIGHTSLATEGREY","LIGHTSTEELBLUE","LIGHTYELLOW","LIME","LIMEGREEN","LINEN","MAGENTA","MAROON","MEDIUMAQUAMARINE","MEDIUMBLUE","MEDIUMORCHID","MEDIUMPURPLE","MEDIUMSEAGREEN","MEDIUMSLATEBLUE","MEDIUMSPRINGGREEN","MEDIUMTURQUOISE","MEDIUMVIOLETRED","MIDNIGHTBLUE","MINTCREAM","MISTYROSE","MOCCASIN","NAVAJOWHITE","NAVY","OLDLACE","OLIVE","OLIVEDRAB","ORANGE","ORANGERED","ORCHID","PALEGOLDENROD","PALEGREEN","PALETURQUOISE","PALEVIOLETRED","PAPAYAWHIP","PEACHPUFF","PERU","PINK","PLUM","POWDERBLUE","PURPLE","REBECCAPURPLE","RED","ROSYBROWN","ROYALBLUE","SADDLEBROWN","SALMON","SANDYBROWN","SEAGREEN","SEASHELL","SIENNA","SILVER","SKYBLUE","SLATEBLUE","SLATEGRAY","SLATEGREY","SNOW","SPRINGGREEN","STEELBLUE","TAN","TEAL","THISTLE","TOMATO","TURQUOISE","VIOLET","WHEAT","WHITE","WHITESMOKE","YELLOW","YELLOWGREEN","CSSImageType","CSSRadialShape","CSSRadialExtent","backgroundClip","prefix","LIST","parse","PADDING_BOX","CONTENT_BOX","BORDER_BOX","backgroundColor","TYPE_VALUE","format","parseColorStop","color$1","stop","processColorStops","stops","lineLength","first","last","processStops","previous","stop_1","absoluteValue","gapBegin","stop_2","gapLength","gapValue","calculateGradientDirection","radian","corner","centerX","centerY","atan2","getAngleFromCorner","abs","sin","cos","halfWidth","halfHeight","halfLineLength","yDiff","xDiff","distance","sqrt","findCorner","closest","reduce","stat","cx","cy","optimumDistance","optimumCorner","Infinity","prefixLinearGradient","angle$1","firstToken","colorStop","LINEAR_GRADIENT","isGreenPixel","createForeignObjectSVG","xmlns","svg","document","createElementNS","foreignObject","setAttributeNS","toString","appendChild","loadSerializedSVG","img","Image","onload","onerror","src","encodeURIComponent","XMLSerializer","serializeToString","FEATURES","createRange","range","testElement","createElement","style","TEST_HEIGHT","display","selectNode","rangeBounds","rangeHeight","removeChild","testRangeBounds","defineProperty","canvas","ctx","getContext","drawImage","toDataURL","testSVG","from","window","fetch","fillStyle","fillRect","greenImageSrc","getImageData","backgroundImage","size","catch","testForeignObject","crossOrigin","XMLHttpRequest","responseType","Logger","id","enabled","Date","now","debug","console","getTime","info","instances","destroy","getInstance","instance","error","CacheStorage","_caches","Cache","open","cache","getOrigin","url","link","_link","href","protocol","hostname","port","isSameOrigin","_origin","setContext","location","_current","attachInstance","detachInstance","_options","_cache","addImage","has","isBlobImage","isRenderable","loadImage","match","useCORS","useProxy","_this","isInlineImage","SUPPORT_CORS_IMAGES","proxy","SUPPORT_CORS_XHR","allowTaint","isInlineBase64Image","complete","setTimeout","imageTimeout","keys","SUPPORT_RESPONSE_TYPE","xhr","status","response","reader_1","FileReader","addEventListener","readAsDataURL","timeout_1","timeout","ontimeout","send","INLINE_SVG","INLINE_BASE64","INLINE_IMG","SUPPORT_SVG_DRAWING","isSVG","test","substr","prefixRadialGradient","shape","CIRCLE","FARTHEST_CORNER","position","isColorStop","acc","ELLIPSE","CLOSEST_SIDE","FARTHEST_SIDE","CLOSEST_CORNER","RADIAL_GRADIENT","BACKGROUND_REPEAT","image","image_1","URL","imageFunction","SUPPORTED_IMAGE_FUNCTIONS","isAtPosition_1","isSupportedImage","backgroundOrigin","backgroundPosition","BACKGROUND_SIZE","backgroundRepeat","parseBackgroundRepeat","NO_REPEAT","REPEAT_X","REPEAT_Y","REPEAT","BORDER_STYLE","backgroundSize","isBackgroundSizeInfoToken","borderColorForSide","side","borderTopColor","borderRightColor","borderBottomColor","borderLeftColor","borderRadiusForSide","borderTopLeftRadius","borderTopRightRadius","borderBottomRightRadius","borderBottomLeftRadius","FLOAT","borderStyleForSide","IDENT_VALUE","NONE","SOLID","borderTopStyle","borderRightStyle","borderBottomStyle","borderLeftStyle","borderWidthForSide","VALUE","borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth","bit","parseDisplayValue","LINE_BREAK","float","LEFT","RIGHT","INLINE_START","INLINE_END","letterSpacing","LIST_STYLE_POSITION","STRICT","NORMAL","lineHeight","TOKEN_VALUE","listStyleImage","LIST_STYLE_TYPE","listStylePosition","INSIDE","OUTSIDE","OVERFLOW","listStyleType","DISC","SQUARE","DECIMAL","CJK_DECIMAL","DECIMAL_LEADING_ZERO","LOWER_ROMAN","UPPER_ROMAN","LOWER_GREEK","LOWER_ALPHA","UPPER_ALPHA","ARABIC_INDIC","ARMENIAN","BENGALI","CAMBODIAN","CJK_EARTHLY_BRANCH","CJK_HEAVENLY_STEM","CJK_IDEOGRAPHIC","DEVANAGARI","ETHIOPIC_NUMERIC","GEORGIAN","GUJARATI","GURMUKHI","HEBREW","HIRAGANA","HIRAGANA_IROHA","JAPANESE_FORMAL","JAPANESE_INFORMAL","KANNADA","KATAKANA","KATAKANA_IROHA","KHMER","KOREAN_HANGUL_FORMAL","KOREAN_HANJA_FORMAL","KOREAN_HANJA_INFORMAL","LAO","LOWER_ARMENIAN","MALAYALAM","MONGOLIAN","MYANMAR","ORIYA","PERSIAN","SIMP_CHINESE_FORMAL","SIMP_CHINESE_INFORMAL","TAMIL","TELUGU","THAI","TIBETAN","TRAD_CHINESE_FORMAL","TRAD_CHINESE_INFORMAL","UPPER_ARMENIAN","DISCLOSURE_OPEN","DISCLOSURE_CLOSED","marginForSide","marginTop","marginRight","marginBottom","marginLeft","OVERFLOW_WRAP","overflow","HIDDEN","SCROLL","AUTO","VISIBLE","TEXT_ALIGN","overflowWrap","BREAK_WORD","paddingForSide","paddingTop","paddingRight","paddingBottom","paddingLeft","POSITION","textAlign","CENTER","TEXT_TRANSFORM","RELATIVE","ABSOLUTE","FIXED","STICKY","STATIC","textShadow","shadow","offsetX","offsetY","blur","VISIBILITY","textTransform","UPPERCASE","LOWERCASE","CAPITALIZE","transform","transformFunction","SUPPORTED_TRANSFORM_FUNCTIONS","matrix","matrix3d","b1","b2","a4","b4","DEFAULT_VALUE","DEFAULT","transformOrigin","origins","WORD_BREAK","visibility","COLLAPSE","FONT_STYLE","BREAK_ALL","KEEP_ALL","zIndex","auto","order","opacity","textDecorationColor","textDecorationLine","line","fontFamily","accumulator","results","fontSize","fontWeight","fontVariant","PseudoElementType","fontStyle","OBLIQUE","ITALIC","contains","content","counterIncrement","increments","filtered","counter","increment","counterReset","resets","reset","quotes","open_1","close_1","close","getQuote","depth","quote","boxShadow","spread","inset","CSSParsedDeclaration","declaration","cssFloat","overflowTuple","overflowX","overflowY","isVisible","isTransformed","isPositioned","isPositionedWithZIndex","isFloating","isInlineLevel","CSSParsedPseudoDeclaration","CSSParsedCounterDeclaration","descriptor","parser","length_1","value_1","ElementContainer","element","styles","getComputedStyle","textNodes","elements","isHTMLElementNode","bounds","TextBounds","text","getWrapperBounds","ownerDocument","wrapper","cloneNode","parentNode","replaceChild","firstChild","getRangeBounds","offset","setStart","setEnd","breakText","breakWords","bk","breaker","forbiddenBreakpoints","lastEnd","nextIndex","LineBreaker","words","TextContainer","transform$1","textBounds","textList","trim","SUPPORT_RANGE_BOUNDS","replacementNode","splitText","parseTextBounds","replace","capitalize","m","p1","p2","ImageElementContainer","_super","currentSrc","intrinsicWidth","naturalWidth","intrinsicHeight","naturalHeight","CanvasElementContainer","SVGElementContainer","baseVal","LIElementContainer","OLElementContainer","reversed","CHECKBOX_BORDER_RADIUS","RADIO_BORDER_RADIUS","PASSWORD","InputElementContainer","input","checked","placeholder","getInputValue","SelectElementContainer","option","selectedIndex","TextareaElementContainer","parseColor","IFrameElementContainer","iframe","contentWindow","documentElement","tree","parseTree","documentBackgroundColor","bodyBackgroundColor","LIST_OWNERS","createContainer","isImageElement","isCanvasElement","isSVGElement","isLIElement","isOLElement","isInputElement","isSelectElement","isTextareaElement","isIFrameElement","container","parseNodeTree","root","childNode","nextNode","nextSibling","isTextNode","isElementNode","createsRealStackingContext","createsStackingContext","tagName","isBodyElement","nodeType","Node","TEXT_NODE","ELEMENT_NODE","isSVGElementNode","className","isStyleElement","isScriptElement","CounterState","counters","getCounterValue","getCounterValues","canReset","entry","counterNames","ROMAN_UPPER","createAdditiveCounter","symbols","fallback","suffix","createCounterText","string","integer","createCounterStyleWithSymbolResolver","codePointRangeLength","isNumeric","resolver","createCounterStyleFromRange","codePointRangeStart","codePointRangeEnd","floor","createCounterStyleFromSymbols","createCJKCounter","numbers","multipliers","negativeSign","tmp","coefficient","appendSuffix","defaultSuffix","cjkSuffix","koreanSuffix","spaceSuffix","CJK_TEN_COEFFICIENTS","CJK_ZEROS","DocumentCloner","scrolledElements","referenceElement","quoteDepth","toIFrame","windowSize","createIFrameContainer","scrollX","defaultView","pageXOffset","scrollY","pageYOffset","cloneWindow","documentClone","iframeLoad","iframeLoader","onclone","restoreNodeScroll","scrollTo","navigator","userAgent","clonedReferenceElement","nodeName","fonts","ready","serializeDoctype","doctype","restoreOwnerScroll","adoptNode","createElementClone","createCanvasClone","createStyleClone","clone","loading","sheet","cssRules","css","rule","cssText","textContent","inlineImages","clonedCanvas","clonedCtx","putImageData","createTextNode","styleBefore","styleAfter","createPseudoHideStyles","resolvePseudoContent","BEFORE","child","hasAttribute","ignoreElements","copyStyles","insertBefore","after","AFTER","copyCSSStyles","scrollTop","scrollLeft","pseudoElt","anonymousReplacedElement","attr","getAttribute","counterStyle","counterState","counterType","delim","counterStates","counterType_1","separator","PSEUDO_HIDE_ELEMENT_CLASS_BEFORE","PSEUDO_HIDE_ELEMENT_CLASS_AFTER","newClassName","baseValue","PathType","cloneIframeContainer","border","scrolling","setAttribute","onreadystatechange","interval","setInterval","childNodes","readyState","clearInterval","target","item","setProperty","getPropertyValue","internalSubset","publicId","systemId","createStyles","CORNER","equalPath","some","Vector","VECTOR","deltaX","deltaY","lerp","BezierCurve","startControl","endControl","BEZIER_CURVE","subdivide","firstHalf","ab","bc","cd","abbc","bccd","dest","reverse","isBezierCurve","path","BoundCurves","tlh","tlv","trh","trv","_c","brh","brv","_d","blh","blv","factors","maxFactor","topWidth","rightHeight","bottomWidth","leftHeight","topLeftBorderBox","getCurvePoints","TOP_LEFT","topRightBorderBox","TOP_RIGHT","bottomRightBorderBox","BOTTOM_RIGHT","bottomLeftBorderBox","BOTTOM_LEFT","topLeftPaddingBox","topRightPaddingBox","bottomRightPaddingBox","bottomLeftPaddingBox","topLeftContentBox","topRightContentBox","bottomRightContentBox","bottomLeftContentBox","r1","r2","kappa","ox","oy","xm","ym","calculateBorderBoxPath","curves","calculatePaddingBoxPath","TransformEffect","ClipEffect","StackingContext","inlineLevel","nonInlineLevel","negativeZIndex","zeroOrAutoZIndexOrTransformedOrOpacity","positiveZIndex","nonPositionedFloats","nonPositionedInlineLevel","ElementPaint","parentStack","effects","borderBox","paddingBox","getParentEffects","processListItems","owner","numbering","listValue","parseStackingContexts","paintContainer","listItems","parseStackTree","stackingContext","realStackingContext","treatAsRealStackingContext","listOwnerItems","stack","order_1","index_1","index_2","createPathFromCurves","outer1","inner1","outer2","inner2","contentBox","calculateBackgroundRendering","intrinsicSize","backgroundPositioningArea","calculateBackgroundPositioningArea","getBackgroundValueForIndex","backgroundPaintingArea","calculateBackgroundPaintingArea","backgroundImageSize","calculateBackgroundSize","sizeWidth","sizeHeight","calculateBackgroundRepeatPath","isAuto","hasIntrinsicValue","intrinsicProportion","second","hasIntrinsicProportion","CONTAIN","COVER","hasIntrinsicWidth","hasIntrinsicHeight","hasIntrinsicDimensions","width_3","height_3","repeat","FontMetrics","_data","_document","parseMetrics","span","margin","padding","verticalAlign","baseline","offsetTop","middle","getMetrics","CanvasRenderer","_activeEffects","scale","fontMetrics","translate","textBaseline","applyEffects","popEffect","effect","applyEffect","save","isTransformEffect","isClipEffect","clip","restore","renderStack","globalAlpha","renderStackContent","renderNode","paint","renderNodeBackgroundAndBorders","renderNodeContent","renderTextWithLetterSpacing","fillText","letter","measureText","createFontStyle","variant","renderTextNode","font","textShadows","shadowColor","shadowOffsetX","shadowOffsetY","shadowBlur","renderReplacedElement","box","windowWidth","windowHeight","render","fill","beginPath","arc","isTextInputElement","canvasTextAlign","computeLineHeight","_e","_f","_g","_h","_j","_k","_l","_m","_o","_p","mask","paths","moveTo","lineTo","formatPath","closePath","point","bezierCurveTo","renderRepeat","pattern","resizeImage","renderBackgroundImage","_loop_1","this_1","x0","x1","y0","y1","gradient_1","top_1","rx","ry","radialGradient_1","midX","midY","invF","createPattern","createLinearGradient","addColorStop","background","isRadialGradient","gradient","calculateRadius","createRadialGradient","renderBorder","curvePoints","borderSide","parsePathForBorder","hasBackground","borders","borders_1","calculateBackgroundCurvedPaintingArea","deltaW","deltaH","borderBoxArea","maskOffset","shadowPaintingArea","calculateContentBoxPath","ForeignObjectRenderer","loadSerializedSVG$1","parseColor$1","renderElement","opts","instanceName","resourceOptions","defaultOptions","windowBounds","documentCloner","clonedElement","bgColor","defaultBackgroundColor","renderOptions","random","scrollWidth","offsetWidth","clientWidth","scrollHeight","offsetHeight","clientHeight","parseDocumentSize","logging","removeContainer","foreignObjectRendering","devicePixelRatio","innerWidth","innerHeight","factory","_defineProperties","props","configurable","writable","_createClass","Constructor","protoProps","staticProps","_defineProperty","obj","BugBattle","sdkKey","activation","_localStorage$getItem","_classCallCheck","localStorage","getItem","init","warn","self","msg","lineNo","columnNo","message","JSON","stringify","addLog","startCrashFlow","crashDetectorEnabled","bugReportingRunning","crashDetected","startBugReporting","log","logArray","date","origConsole","originalConsoleLog","previousBodyOverflow","elem","innerHTML","sendButton","querySelector","onclick","hide","remove","createBugReportingDialog","mainColor","privacyPolicyContainer","privacyPolicyInputLabel","privacyPolicyInput","privacyPolicyCheckEnabled","privacyPolicyUrl","poweredByContainer","poweredByHidden","cancelButton","emailField","textArea","oninput","email","description","setItem","toggleLoading","alert","preScreenshotCleanup","snapshotPosition","letterRendering","screenshot","prepareScreenshot","showError","querySelectorAll","editorContainer","dialogContainer","feedbackBtn","enableScroll","overwriteConsoleLog","startCrashDetection","checkForInitType","event","FEEDBACK_BUTTON","injectFeedbackButton","header","loader","success","dataURI","byteString","atob","split","mimeString","ia","Blob","imageObj","pixelRatio","context","editorDot","editorRectangle","offsetLeft","lineWidth","strokeStyle","stroke","strokeRect","uploadScreenshot","http","apiUrl","setRequestHeader","DONE","responseText","fileUrl","screenshotURL","sendBugReportToServer","file","dataURItoBlob","formData","FormData","append","showSuccessMessage","bugReportData","reportedBy","priority","severity","screenshotUrl","customData","metaData","getMetaData","consoleLog","nameOffset","verOffset","nAgt","browserName","appName","fullVersion","parseFloat","appVersion","majorVersion","lastIndexOf","isNaN","OSName","sessionDuration","sessionStart","browser","systemName","buildVersionNumber","appBuildNumber","releaseVersionNumber","appVersionCode","screenWidth","screen","screenHeight","currentUrl","language","userLanguage","bugReportingEditor","addedMarker","clickStartX","clickStartY","setStartPoint","setMouseMove","dragInfo","right","heightAbs","widthAbs","mouseUpEventHandler","pageX","pageY","touches","preventDefault","colorStyleSheet","disableScroll","askForCrashReport","showBugReportEditor","initialize","setMainColor","setAppBuildNumber","setAppVersionCode","attachCustomData","test1","data2","enablePrivacyPolicy","enableCrashDetector","feedbackButton"],"mappings":"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","file":"index.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 1);\n","/*!\n * html2canvas 1.0.0-rc.7 \n * Copyright (c) 2020 Niklas von Hertzen \n * Released under MIT License\n */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define(factory) : (global = global || self, global.html2canvas = factory());\n})(this, function () {\n 'use strict';\n /*! *****************************************************************************\r\n Copyright (c) Microsoft Corporation. All rights reserved.\r\n Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\n this file except in compliance with the License. You may obtain a copy of the\r\n License at http://www.apache.org/licenses/LICENSE-2.0\r\n THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\n WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\n MERCHANTABLITY OR NON-INFRINGEMENT.\r\n See the Apache Version 2.0 License for specific language governing permissions\r\n and limitations under the License.\r\n ***************************************************************************** */\n\n /* global Reflect, Promise */\n\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n function __extends(d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n }\n\n var _assign = function __assign() {\n _assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return _assign.apply(this, arguments);\n };\n\n function __awaiter(thisArg, _arguments, P, generator) {\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n\n function step(result) {\n result.done ? resolve(result.value) : new P(function (resolve) {\n resolve(result.value);\n }).then(fulfilled, rejected);\n }\n\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n }\n\n function __generator(thisArg, body) {\n var _ = {\n label: 0,\n sent: function sent() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n\n while (_) {\n try {\n 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;\n if (y = 0, t) op = [op[0] & 2, t.value];\n\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n\n case 7:\n op = _.ops.pop();\n\n _.trys.pop();\n\n continue;\n\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n\n if (t && _.label < t[2]) {\n _.label = t[2];\n\n _.ops.push(op);\n\n break;\n }\n\n if (t[2]) _.ops.pop();\n\n _.trys.pop();\n\n continue;\n }\n\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n }\n\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n }\n\n var Bounds =\n /** @class */\n function () {\n function Bounds(x, y, w, h) {\n this.left = x;\n this.top = y;\n this.width = w;\n this.height = h;\n }\n\n Bounds.prototype.add = function (x, y, w, h) {\n return new Bounds(this.left + x, this.top + y, this.width + w, this.height + h);\n };\n\n Bounds.fromClientRect = function (clientRect) {\n return new Bounds(clientRect.left, clientRect.top, clientRect.width, clientRect.height);\n };\n\n return Bounds;\n }();\n\n var parseBounds = function parseBounds(node) {\n return Bounds.fromClientRect(node.getBoundingClientRect());\n };\n\n var parseDocumentSize = function parseDocumentSize(document) {\n var body = document.body;\n var documentElement = document.documentElement;\n\n if (!body || !documentElement) {\n throw new Error(\"Unable to get document size\");\n }\n\n var width = Math.max(Math.max(body.scrollWidth, documentElement.scrollWidth), Math.max(body.offsetWidth, documentElement.offsetWidth), Math.max(body.clientWidth, documentElement.clientWidth));\n var height = Math.max(Math.max(body.scrollHeight, documentElement.scrollHeight), Math.max(body.offsetHeight, documentElement.offsetHeight), Math.max(body.clientHeight, documentElement.clientHeight));\n return new Bounds(0, 0, width, height);\n };\n /*\n * css-line-break 1.1.1 \n * Copyright (c) 2019 Niklas von Hertzen \n * Released under MIT License\n */\n\n\n var toCodePoints = function toCodePoints(str) {\n var codePoints = [];\n var i = 0;\n var length = str.length;\n\n while (i < length) {\n var value = str.charCodeAt(i++);\n\n if (value >= 0xd800 && value <= 0xdbff && i < length) {\n var extra = str.charCodeAt(i++);\n\n if ((extra & 0xfc00) === 0xdc00) {\n codePoints.push(((value & 0x3ff) << 10) + (extra & 0x3ff) + 0x10000);\n } else {\n codePoints.push(value);\n i--;\n }\n } else {\n codePoints.push(value);\n }\n }\n\n return codePoints;\n };\n\n var fromCodePoint = function fromCodePoint() {\n var codePoints = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n codePoints[_i] = arguments[_i];\n }\n\n if (String.fromCodePoint) {\n return String.fromCodePoint.apply(String, codePoints);\n }\n\n var length = codePoints.length;\n\n if (!length) {\n return '';\n }\n\n var codeUnits = [];\n var index = -1;\n var result = '';\n\n while (++index < length) {\n var codePoint = codePoints[index];\n\n if (codePoint <= 0xffff) {\n codeUnits.push(codePoint);\n } else {\n codePoint -= 0x10000;\n codeUnits.push((codePoint >> 10) + 0xd800, codePoint % 0x400 + 0xdc00);\n }\n\n if (index + 1 === length || codeUnits.length > 0x4000) {\n result += String.fromCharCode.apply(String, codeUnits);\n codeUnits.length = 0;\n }\n }\n\n return result;\n };\n\n var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; // Use a lookup table to find the index.\n\n var lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\n\n for (var i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n }\n\n var decode = function decode(base64) {\n var bufferLength = base64.length * 0.75,\n len = base64.length,\n i,\n p = 0,\n encoded1,\n encoded2,\n encoded3,\n encoded4;\n\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n\n var buffer = typeof ArrayBuffer !== 'undefined' && typeof Uint8Array !== 'undefined' && typeof Uint8Array.prototype.slice !== 'undefined' ? new ArrayBuffer(bufferLength) : new Array(bufferLength);\n var bytes = Array.isArray(buffer) ? buffer : new Uint8Array(buffer);\n\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i + 1)];\n encoded3 = lookup[base64.charCodeAt(i + 2)];\n encoded4 = lookup[base64.charCodeAt(i + 3)];\n bytes[p++] = encoded1 << 2 | encoded2 >> 4;\n bytes[p++] = (encoded2 & 15) << 4 | encoded3 >> 2;\n bytes[p++] = (encoded3 & 3) << 6 | encoded4 & 63;\n }\n\n return buffer;\n };\n\n var polyUint16Array = function polyUint16Array(buffer) {\n var length = buffer.length;\n var bytes = [];\n\n for (var i = 0; i < length; i += 2) {\n bytes.push(buffer[i + 1] << 8 | buffer[i]);\n }\n\n return bytes;\n };\n\n var polyUint32Array = function polyUint32Array(buffer) {\n var length = buffer.length;\n var bytes = [];\n\n for (var i = 0; i < length; i += 4) {\n bytes.push(buffer[i + 3] << 24 | buffer[i + 2] << 16 | buffer[i + 1] << 8 | buffer[i]);\n }\n\n return bytes;\n };\n /** Shift size for getting the index-2 table offset. */\n\n\n var UTRIE2_SHIFT_2 = 5;\n /** Shift size for getting the index-1 table offset. */\n\n var UTRIE2_SHIFT_1 = 6 + 5;\n /**\r\n * Shift size for shifting left the index array values.\r\n * Increases possible data size with 16-bit index values at the cost\r\n * of compactability.\r\n * This requires data blocks to be aligned by UTRIE2_DATA_GRANULARITY.\r\n */\n\n var UTRIE2_INDEX_SHIFT = 2;\n /**\r\n * Difference between the two shift sizes,\r\n * for getting an index-1 offset from an index-2 offset. 6=11-5\r\n */\n\n var UTRIE2_SHIFT_1_2 = UTRIE2_SHIFT_1 - UTRIE2_SHIFT_2;\n /**\r\n * The part of the index-2 table for U+D800..U+DBFF stores values for\r\n * lead surrogate code _units_ not code _points_.\r\n * Values for lead surrogate code _points_ are indexed with this portion of the table.\r\n * Length=32=0x20=0x400>>UTRIE2_SHIFT_2. (There are 1024=0x400 lead surrogates.)\r\n */\n\n var UTRIE2_LSCP_INDEX_2_OFFSET = 0x10000 >> UTRIE2_SHIFT_2;\n /** Number of entries in a data block. 32=0x20 */\n\n var UTRIE2_DATA_BLOCK_LENGTH = 1 << UTRIE2_SHIFT_2;\n /** Mask for getting the lower bits for the in-data-block offset. */\n\n var UTRIE2_DATA_MASK = UTRIE2_DATA_BLOCK_LENGTH - 1;\n var UTRIE2_LSCP_INDEX_2_LENGTH = 0x400 >> UTRIE2_SHIFT_2;\n /** Count the lengths of both BMP pieces. 2080=0x820 */\n\n var UTRIE2_INDEX_2_BMP_LENGTH = UTRIE2_LSCP_INDEX_2_OFFSET + UTRIE2_LSCP_INDEX_2_LENGTH;\n /**\r\n * The 2-byte UTF-8 version of the index-2 table follows at offset 2080=0x820.\r\n * Length 32=0x20 for lead bytes C0..DF, regardless of UTRIE2_SHIFT_2.\r\n */\n\n var UTRIE2_UTF8_2B_INDEX_2_OFFSET = UTRIE2_INDEX_2_BMP_LENGTH;\n var UTRIE2_UTF8_2B_INDEX_2_LENGTH = 0x800 >> 6;\n /* U+0800 is the first code point after 2-byte UTF-8 */\n\n /**\r\n * The index-1 table, only used for supplementary code points, at offset 2112=0x840.\r\n * Variable length, for code points up to highStart, where the last single-value range starts.\r\n * Maximum length 512=0x200=0x100000>>UTRIE2_SHIFT_1.\r\n * (For 0x100000 supplementary code points U+10000..U+10ffff.)\r\n *\r\n * The part of the index-2 table for supplementary code points starts\r\n * after this index-1 table.\r\n *\r\n * Both the index-1 table and the following part of the index-2 table\r\n * are omitted completely if there is only BMP data.\r\n */\n\n var UTRIE2_INDEX_1_OFFSET = UTRIE2_UTF8_2B_INDEX_2_OFFSET + UTRIE2_UTF8_2B_INDEX_2_LENGTH;\n /**\r\n * Number of index-1 entries for the BMP. 32=0x20\r\n * This part of the index-1 table is omitted from the serialized form.\r\n */\n\n var UTRIE2_OMITTED_BMP_INDEX_1_LENGTH = 0x10000 >> UTRIE2_SHIFT_1;\n /** Number of entries in an index-2 block. 64=0x40 */\n\n var UTRIE2_INDEX_2_BLOCK_LENGTH = 1 << UTRIE2_SHIFT_1_2;\n /** Mask for getting the lower bits for the in-index-2-block offset. */\n\n var UTRIE2_INDEX_2_MASK = UTRIE2_INDEX_2_BLOCK_LENGTH - 1;\n\n var slice16 = function slice16(view, start, end) {\n if (view.slice) {\n return view.slice(start, end);\n }\n\n return new Uint16Array(Array.prototype.slice.call(view, start, end));\n };\n\n var slice32 = function slice32(view, start, end) {\n if (view.slice) {\n return view.slice(start, end);\n }\n\n return new Uint32Array(Array.prototype.slice.call(view, start, end));\n };\n\n var createTrieFromBase64 = function createTrieFromBase64(base64) {\n var buffer = decode(base64);\n var view32 = Array.isArray(buffer) ? polyUint32Array(buffer) : new Uint32Array(buffer);\n var view16 = Array.isArray(buffer) ? polyUint16Array(buffer) : new Uint16Array(buffer);\n var headerLength = 24;\n var index = slice16(view16, headerLength / 2, view32[4] / 2);\n var data = view32[5] === 2 ? slice16(view16, (headerLength + view32[4]) / 2) : slice32(view32, Math.ceil((headerLength + view32[4]) / 4));\n return new Trie(view32[0], view32[1], view32[2], view32[3], index, data);\n };\n\n var Trie =\n /** @class */\n function () {\n function Trie(initialValue, errorValue, highStart, highValueIndex, index, data) {\n this.initialValue = initialValue;\n this.errorValue = errorValue;\n this.highStart = highStart;\n this.highValueIndex = highValueIndex;\n this.index = index;\n this.data = data;\n }\n /**\r\n * Get the value for a code point as stored in the Trie.\r\n *\r\n * @param codePoint the code point\r\n * @return the value\r\n */\n\n\n Trie.prototype.get = function (codePoint) {\n var ix;\n\n if (codePoint >= 0) {\n if (codePoint < 0x0d800 || codePoint > 0x0dbff && codePoint <= 0x0ffff) {\n // Ordinary BMP code point, excluding leading surrogates.\n // BMP uses a single level lookup. BMP index starts at offset 0 in the Trie2 index.\n // 16 bit data is stored in the index array itself.\n ix = this.index[codePoint >> UTRIE2_SHIFT_2];\n ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);\n return this.data[ix];\n }\n\n if (codePoint <= 0xffff) {\n // Lead Surrogate Code Point. A Separate index section is stored for\n // lead surrogate code units and code points.\n // The main index has the code unit data.\n // For this function, we need the code point data.\n // Note: this expression could be refactored for slightly improved efficiency, but\n // surrogate code points will be so rare in practice that it's not worth it.\n ix = this.index[UTRIE2_LSCP_INDEX_2_OFFSET + (codePoint - 0xd800 >> UTRIE2_SHIFT_2)];\n ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);\n return this.data[ix];\n }\n\n if (codePoint < this.highStart) {\n // Supplemental code point, use two-level lookup.\n ix = UTRIE2_INDEX_1_OFFSET - UTRIE2_OMITTED_BMP_INDEX_1_LENGTH + (codePoint >> UTRIE2_SHIFT_1);\n ix = this.index[ix];\n ix += codePoint >> UTRIE2_SHIFT_2 & UTRIE2_INDEX_2_MASK;\n ix = this.index[ix];\n ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);\n return this.data[ix];\n }\n\n if (codePoint <= 0x10ffff) {\n return this.data[this.highValueIndex];\n }\n } // Fall through. The code point is outside of the legal range of 0..0x10ffff.\n\n\n return this.errorValue;\n };\n\n return Trie;\n }();\n\n var base64 = 'KwAAAAAAAAAACA4AIDoAAPAfAAACAAAAAAAIABAAGABAAEgAUABYAF4AZgBeAGYAYABoAHAAeABeAGYAfACEAIAAiACQAJgAoACoAK0AtQC9AMUAXgBmAF4AZgBeAGYAzQDVAF4AZgDRANkA3gDmAOwA9AD8AAQBDAEUARoBIgGAAIgAJwEvATcBPwFFAU0BTAFUAVwBZAFsAXMBewGDATAAiwGTAZsBogGkAawBtAG8AcIBygHSAdoB4AHoAfAB+AH+AQYCDgIWAv4BHgImAi4CNgI+AkUCTQJTAlsCYwJrAnECeQKBAk0CiQKRApkCoQKoArACuALAAsQCzAIwANQC3ALkAjAA7AL0AvwCAQMJAxADGAMwACADJgMuAzYDPgOAAEYDSgNSA1IDUgNaA1oDYANiA2IDgACAAGoDgAByA3YDfgOAAIQDgACKA5IDmgOAAIAAogOqA4AAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAK8DtwOAAIAAvwPHA88D1wPfAyAD5wPsA/QD/AOAAIAABAQMBBIEgAAWBB4EJgQuBDMEIAM7BEEEXgBJBCADUQRZBGEEaQQwADAAcQQ+AXkEgQSJBJEEgACYBIAAoASoBK8EtwQwAL8ExQSAAIAAgACAAIAAgACgAM0EXgBeAF4AXgBeAF4AXgBeANUEXgDZBOEEXgDpBPEE+QQBBQkFEQUZBSEFKQUxBTUFPQVFBUwFVAVcBV4AYwVeAGsFcwV7BYMFiwWSBV4AmgWgBacFXgBeAF4AXgBeAKsFXgCyBbEFugW7BcIFwgXIBcIFwgXQBdQF3AXkBesF8wX7BQMGCwYTBhsGIwYrBjMGOwZeAD8GRwZNBl4AVAZbBl4AXgBeAF4AXgBeAF4AXgBeAF4AXgBeAGMGXgBqBnEGXgBeAF4AXgBeAF4AXgBeAF4AXgB5BoAG4wSGBo4GkwaAAIADHgR5AF4AXgBeAJsGgABGA4AAowarBrMGswagALsGwwbLBjAA0wbaBtoG3QbaBtoG2gbaBtoG2gblBusG8wb7BgMHCwcTBxsHCwcjBysHMAc1BzUHOgdCB9oGSgdSB1oHYAfaBloHaAfaBlIH2gbaBtoG2gbaBtoG2gbaBjUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHbQdeAF4ANQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQd1B30HNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1B4MH2gaKB68EgACAAIAAgACAAIAAgACAAI8HlwdeAJ8HpweAAIAArwe3B14AXgC/B8UHygcwANAH2AfgB4AA6AfwBz4B+AcACFwBCAgPCBcIogEYAR8IJwiAAC8INwg/CCADRwhPCFcIXwhnCEoDGgSAAIAAgABvCHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIhAiLCI4IMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlggwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAANQc1BzUHNQc1BzUHNQc1BzUHNQc1B54INQc1B6II2gaqCLIIugiAAIAAvgjGCIAAgACAAIAAgACAAIAAgACAAIAAywiHAYAA0wiAANkI3QjlCO0I9Aj8CIAAgACAAAIJCgkSCRoJIgknCTYHLwk3CZYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiAAIAAAAFAAXgBeAGAAcABeAHwAQACQAKAArQC9AJ4AXgBeAE0A3gBRAN4A7AD8AMwBGgEAAKcBNwEFAUwBXAF4QkhCmEKnArcCgAHHAsABz4LAAcABwAHAAd+C6ABoAG+C/4LAAcABwAHAAc+DF4MAAcAB54M3gweDV4Nng3eDaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAEeDqABVg6WDqABoQ6gAaABoAHXDvcONw/3DvcO9w73DvcO9w73DvcO9w73DvcO9w73DvcO9w73DvcO9w73DvcO9w73DvcO9w73DvcO9w73DvcO9w73DncPAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcAB7cPPwlGCU4JMACAAIAAgABWCV4JYQmAAGkJcAl4CXwJgAkwADAAMAAwAIgJgACLCZMJgACZCZ8JowmrCYAAswkwAF4AXgB8AIAAuwkABMMJyQmAAM4JgADVCTAAMAAwADAAgACAAIAAgACAAIAAgACAAIAAqwYWBNkIMAAwADAAMADdCeAJ6AnuCR4E9gkwAP4JBQoNCjAAMACAABUK0wiAAB0KJAosCjQKgAAwADwKQwqAAEsKvQmdCVMKWwowADAAgACAALcEMACAAGMKgABrCjAAMAAwADAAMAAwADAAMAAwADAAMAAeBDAAMAAwADAAMAAwADAAMAAwADAAMAAwAIkEPQFzCnoKiQSCCooKkAqJBJgKoAqkCokEGAGsCrQKvArBCjAAMADJCtEKFQHZCuEK/gHpCvEKMAAwADAAMACAAIwE+QowAIAAPwEBCzAAMAAwADAAMACAAAkLEQswAIAAPwEZCyELgAAOCCkLMAAxCzkLMAAwADAAMAAwADAAXgBeAEELMAAwADAAMAAwADAAMAAwAEkLTQtVC4AAXAtkC4AAiQkwADAAMAAwADAAMAAwADAAbAtxC3kLgAuFC4sLMAAwAJMLlwufCzAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAApwswADAAMACAAIAAgACvC4AAgACAAIAAgACAALcLMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAvwuAAMcLgACAAIAAgACAAIAAyguAAIAAgACAAIAA0QswADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAANkLgACAAIAA4AswADAAMAAwADAAMAAwADAAMAAwADAAMAAwAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACJCR4E6AswADAAhwHwC4AA+AsADAgMEAwwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMACAAIAAGAwdDCUMMAAwAC0MNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQw1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHPQwwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADUHNQc1BzUHNQc1BzUHNQc2BzAAMAA5DDUHNQc1BzUHNQc1BzUHNQc1BzUHNQdFDDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAgACAAIAATQxSDFoMMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAF4AXgBeAF4AXgBeAF4AYgxeAGoMXgBxDHkMfwxeAIUMXgBeAI0MMAAwADAAMAAwAF4AXgCVDJ0MMAAwADAAMABeAF4ApQxeAKsMswy7DF4Awgy9DMoMXgBeAF4AXgBeAF4AXgBeAF4AXgDRDNkMeQBqCeAM3Ax8AOYM7Az0DPgMXgBeAF4AXgBeAF4AXgBeAF4AXgBeAF4AXgBeAF4AXgCgAAANoAAHDQ4NFg0wADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAeDSYNMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAIAAgACAAIAAgACAAC4NMABeAF4ANg0wADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAD4NRg1ODVYNXg1mDTAAbQ0wADAAMAAwADAAMAAwADAA2gbaBtoG2gbaBtoG2gbaBnUNeg3CBYANwgWFDdoGjA3aBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gaUDZwNpA2oDdoG2gawDbcNvw3HDdoG2gbPDdYN3A3fDeYN2gbsDfMN2gbaBvoN/g3aBgYODg7aBl4AXgBeABYOXgBeACUG2gYeDl4AJA5eACwO2w3aBtoGMQ45DtoG2gbaBtoGQQ7aBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gZJDjUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1B1EO2gY1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQdZDjUHNQc1BzUHNQc1B2EONQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHaA41BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1B3AO2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gY1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1B2EO2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gZJDtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBkkOeA6gAKAAoAAwADAAMAAwAKAAoACgAKAAoACgAKAAgA4wADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAD//wQABAAEAAQABAAEAAQABAAEAA0AAwABAAEAAgAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAKABMAFwAeABsAGgAeABcAFgASAB4AGwAYAA8AGAAcAEsASwBLAEsASwBLAEsASwBLAEsAGAAYAB4AHgAeABMAHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAFgAbABIAHgAeAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABYADQARAB4ABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAAUABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAkAFgAaABsAGwAbAB4AHQAdAB4ATwAXAB4ADQAeAB4AGgAbAE8ATwAOAFAAHQAdAB0ATwBPABcATwBPAE8AFgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAB4AHgAeAB4AUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AHgAeAFAATwBAAE8ATwBPAEAATwBQAFAATwBQAB4AHgAeAB4AHgAeAB0AHQAdAB0AHgAdAB4ADgBQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgBQAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAJAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAkACQAJAAkACQAJAAkABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAFAAHgAeAB4AKwArAFAAUABQAFAAGABQACsAKwArACsAHgAeAFAAHgBQAFAAUAArAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAUAAeAB4AHgAeAB4AHgArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwAYAA0AKwArAB4AHgAbACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQADQAEAB4ABAAEAB4ABAAEABMABAArACsAKwArACsAKwArACsAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAKwArACsAKwArAFYAVgBWAB4AHgArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AGgAaABoAGAAYAB4AHgAEAAQABAAEAAQABAAEAAQABAAEAAQAEwAEACsAEwATAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABLAEsASwBLAEsASwBLAEsASwBLABoAGQAZAB4AUABQAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABMAUAAEAAQABAAEAAQABAAEAB4AHgAEAAQABAAEAAQABABQAFAABAAEAB4ABAAEAAQABABQAFAASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUAAeAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAFAABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQAUABQAB4AHgAYABMAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAFAABAAEAAQABAAEAFAABAAEAAQAUAAEAAQABAAEAAQAKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAArACsAHgArAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABABQAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAFAABAAEAAQABAAEAAQABABQAFAAUABQAFAAUABQAFAAUABQAAQABAANAA0ASwBLAEsASwBLAEsASwBLAEsASwAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQAKwBQAFAAUABQAFAAUABQAFAAKwArAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUAArAFAAKwArACsAUABQAFAAUAArACsABABQAAQABAAEAAQABAAEAAQAKwArAAQABAArACsABAAEAAQAUAArACsAKwArACsAKwArACsABAArACsAKwArAFAAUAArAFAAUABQAAQABAArACsASwBLAEsASwBLAEsASwBLAEsASwBQAFAAGgAaAFAAUABQAFAAUABMAB4AGwBQAB4AKwArACsABAAEAAQAKwBQAFAAUABQAFAAUAArACsAKwArAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUAArAFAAUAArAFAAUAArAFAAUAArACsABAArAAQABAAEAAQABAArACsAKwArAAQABAArACsABAAEAAQAKwArACsABAArACsAKwArACsAKwArAFAAUABQAFAAKwBQACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwAEAAQAUABQAFAABAArACsAKwArACsAKwArACsAKwArACsABAAEAAQAKwBQAFAAUABQAFAAUABQAFAAUAArAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUAArAFAAUAArAFAAUABQAFAAUAArACsABABQAAQABAAEAAQABAAEAAQABAArAAQABAAEACsABAAEAAQAKwArAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAAQABAArACsASwBLAEsASwBLAEsASwBLAEsASwAeABsAKwArACsAKwArACsAKwBQAAQABAAEAAQABAAEACsABAAEAAQAKwBQAFAAUABQAFAAUABQAFAAKwArAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQAKwArAAQABAArACsABAAEAAQAKwArACsAKwArACsAKwArAAQABAArACsAKwArAFAAUAArAFAAUABQAAQABAArACsASwBLAEsASwBLAEsASwBLAEsASwAeAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwAEAFAAKwBQAFAAUABQAFAAUAArACsAKwBQAFAAUAArAFAAUABQAFAAKwArACsAUABQACsAUAArAFAAUAArACsAKwBQAFAAKwArACsAUABQAFAAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwAEAAQABAAEAAQAKwArACsABAAEAAQAKwAEAAQABAAEACsAKwBQACsAKwArACsAKwArAAQAKwArACsAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLAFAAUABQAB4AHgAeAB4AHgAeABsAHgArACsAKwArACsABAAEAAQABAArAFAAUABQAFAAUABQAFAAUAArAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAFAABAAEAAQABAAEAAQABAArAAQABAAEACsABAAEAAQABAArACsAKwArACsAKwArAAQABAArAFAAUABQACsAKwArACsAKwBQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAB4AUAAEAAQABAArAFAAUABQAFAAUABQAFAAUAArAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQACsAKwAEAFAABAAEAAQABAAEAAQABAArAAQABAAEACsABAAEAAQABAArACsAKwArACsAKwArAAQABAArACsAKwArACsAKwArAFAAKwBQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAFAABAAEAAQABAAEAAQABAArAAQABAAEACsABAAEAAQABABQAB4AKwArACsAKwBQAFAAUAAEAFAAUABQAFAAUABQAFAAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAFAAUABQAFAAUABQAFAAUABQABoAUABQAFAAUABQAFAAKwArAAQABAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQACsAUAArACsAUABQAFAAUABQAFAAUAArACsAKwAEACsAKwArACsABAAEAAQABAAEAAQAKwAEACsABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArAAQABAAeACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAqAFwAXAAqACoAKgAqACoAKgAqACsAKwArACsAGwBcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAeAEsASwBLAEsASwBLAEsASwBLAEsADQANACsAKwArACsAKwBcAFwAKwBcACsAKwBcAFwAKwBcACsAKwBcACsAKwArACsAKwArAFwAXABcAFwAKwBcAFwAXABcAFwAXABcACsAXABcAFwAKwBcACsAXAArACsAXABcACsAXABcAFwAXAAqAFwAXAAqACoAKgAqACoAKgArACoAKgBcACsAKwBcAFwAXABcAFwAKwBcACsAKgAqACoAKgAqACoAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArAFwAXABcAFwAUAAOAA4ADgAOAB4ADgAOAAkADgAOAA0ACQATABMAEwATABMACQAeABMAHgAeAB4ABAAEAB4AHgAeAB4AHgAeAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAUABQAFAAUABQAFAAUAANAAQAHgAEAB4ABAAWABEAFgARAAQABABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAANAAQABAAEAAQABAANAAQABABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsADQANAB4AHgAeAB4AHgAeAAQAHgAeAB4AHgAeAB4AKwAeAB4ADgAOAA0ADgAeAB4AHgAeAB4ACQAJACsAKwArACsAKwBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqAFwASwBLAEsASwBLAEsASwBLAEsASwANAA0AHgAeAB4AHgBcAFwAXABcAFwAXAAqACoAKgAqAFwAXABcAFwAKgAqACoAXAAqACoAKgBcAFwAKgAqACoAKgAqACoAKgBcAFwAXAAqACoAKgAqAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAKgAqACoAKgAqACoAKgAqACoAXAAqAEsASwBLAEsASwBLAEsASwBLAEsAKgAqACoAKgAqACoAUABQAFAAUABQAFAAKwBQACsAKwArACsAKwBQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQACsAUAArAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUAArACsAUABQAFAAUABQAFAAUAArAFAAKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwAEAAQABAAeAA0AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQACsAKwANAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABYAEQArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAADQANAA0AUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAABAAEAAQAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAA0ADQArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQACsABAAEACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoADQANABUAXAANAB4ADQAbAFwAKgArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArAB4AHgATABMADQANAA4AHgATABMAHgAEAAQABAAJACsASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAUABQAFAAUABQAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABABQACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwAeACsAKwArABMAEwBLAEsASwBLAEsASwBLAEsASwBLAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACsAKwBcAFwAXABcAFwAKwArACsAKwArACsAKwArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcACsAKwArACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBcACsAKwArACoAKgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEACsAKwAeAB4AXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAKgAqACoAKgAqACoAKgArACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgArACsABABLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAKgAqACoAKgAqACoAKgBcACoAKgAqACoAKgAqACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArAAQABAAEAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQAUABQAFAAUABQAFAAUAArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsADQANAB4ADQANAA0ADQAeAB4AHgAeAB4AHgAeAB4AHgAeAAQABAAEAAQABAAEAAQABAAEAB4AHgAeAB4AHgAeAB4AHgAeACsAKwArAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAUABQAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArACsAKwArACsAHgAeAB4AHgBQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwANAA0ADQANAA0ASwBLAEsASwBLAEsASwBLAEsASwArACsAKwBQAFAAUABLAEsASwBLAEsASwBLAEsASwBLAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAANAA0AUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsABAAEAAQAHgAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAFAAUABQAFAABABQAFAAUABQAAQABAAEAFAAUAAEAAQABAArACsAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwAEAAQABAAEAAQAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUAArAFAAKwBQACsAUAArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAHgAeAB4AHgAeAB4AHgAeAFAAHgAeAB4AUABQAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAKwArAB4AHgAeAB4AHgAeACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAUABQAFAAKwAeAB4AHgAeAB4AHgAeAA4AHgArAA0ADQANAA0ADQANAA0ACQANAA0ADQAIAAQACwAEAAQADQAJAA0ADQAMAB0AHQAeABcAFwAWABcAFwAXABYAFwAdAB0AHgAeABQAFAAUAA0AAQABAAQABAAEAAQABAAJABoAGgAaABoAGgAaABoAGgAeABcAFwAdABUAFQAeAB4AHgAeAB4AHgAYABYAEQAVABUAFQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgANAB4ADQANAA0ADQAeAA0ADQANAAcAHgAeAB4AHgArAAQABAAEAAQABAAEAAQABAAEAAQAUABQACsAKwBPAFAAUABQAFAAUAAeAB4AHgAWABEATwBQAE8ATwBPAE8AUABQAFAAUABQAB4AHgAeABYAEQArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAGwAbABsAGwAbABsAGwAaABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAaABsAGwAbABsAGgAbABsAGgAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAB4AHgBQABoAHgAdAB4AUAAeABoAHgAeAB4AHgAeAB4AHgAeAB4ATwAeAFAAGwAeAB4AUABQAFAAUABQAB4AHgAeAB0AHQAeAFAAHgBQAB4AUAAeAFAATwBQAFAAHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAB4AUABQAFAAUABPAE8AUABQAFAAUABQAE8AUABQAE8AUABPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBQAFAAUABQAE8ATwBPAE8ATwBPAE8ATwBPAE8AUABQAFAAUABQAFAAUABQAFAAHgAeAFAAUABQAFAATwAeAB4AKwArACsAKwAdAB0AHQAdAB0AHQAdAB0AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAeAB0AHQAeAB4AHgAdAB0AHgAeAB0AHgAeAB4AHQAeAB0AGwAbAB4AHQAeAB4AHgAeAB0AHgAeAB0AHQAdAB0AHgAeAB0AHgAdAB4AHQAdAB0AHQAdAB0AHgAdAB4AHgAeAB4AHgAdAB0AHQAdAB4AHgAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAeAB4AHgAdAB4AHgAeAB4AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB4AHgAdAB0AHQAdAB4AHgAdAB0AHgAeAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHgAeAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AHQAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABQAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAWABEAFgARAB4AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAlACUAHgAeAB4AHgAeAB4AHgAeAB4AFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBQAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB4AHgAeAB4AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHgAdAB0AHQAdAB0AHQAdAB4AHgAeAB4AHgAeAB4AHgAdAB0AHgAeAB0AHQAeAB4AHgAeAB0AHQAeAB4AHgAeAB0AHQAdAB4AHgAdAB4AHgAdAB0AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAeAB0AHQAeAB4AHQAeAB4AHgAeAB0AHQAeAB4AHgAeACUAJQAdAB0AJQAeACUAJQAlACAAJQAlAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAHgAeAB4AHgAdAB4AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB4AHQAdAB0AHgAdACUAHQAdAB4AHQAdAB4AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAHQAdAB0AHQAlAB4AJQAlACUAHQAlACUAHQAdAB0AJQAlAB0AHQAlAB0AHQAlACUAJQAeAB0AHgAeAB4AHgAdAB0AJQAdAB0AHQAdAB0AHQAlACUAJQAlACUAHQAlACUAIAAlAB0AHQAlACUAJQAlACUAJQAlACUAHgAeAB4AJQAlACAAIAAgACAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHgAeABcAFwAXABcAFwAXAB4AEwATACUAHgAeAB4AFgARABYAEQAWABEAFgARABYAEQAWABEAFgARAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAWABEAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFgARABYAEQAWABEAFgARABYAEQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABYAEQAWABEAFgARABYAEQAWABEAFgARABYAEQAWABEAFgARABYAEQAWABEAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFgARABYAEQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABYAEQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB0AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAEAAQABAAeAB4AKwArACsAKwArABMADQANAA0AUAATAA0AUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAUAANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAA0ADQANAA0ADQANAA0ADQAeAA0AFgANAB4AHgAXABcAHgAeABcAFwAWABEAFgARABYAEQAWABEADQANAA0ADQATAFAADQANAB4ADQANAB4AHgAeAB4AHgAMAAwADQANAA0AHgANAA0AFgANAA0ADQANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwArACsAKwArACsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArAA0AEQARACUAJQBHAFcAVwAWABEAFgARABYAEQAWABEAFgARACUAJQAWABEAFgARABYAEQAWABEAFQAWABEAEQAlAFcAVwBXAFcAVwBXAFcAVwBXAAQABAAEAAQABAAEACUAVwBXAFcAVwA2ACUAJQBXAFcAVwBHAEcAJQAlACUAKwBRAFcAUQBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFEAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBRAFcAUQBXAFEAVwBXAFcAVwBXAFcAUQBXAFcAVwBXAFcAVwBRAFEAKwArAAQABAAVABUARwBHAFcAFQBRAFcAUQBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBRAFcAVwBXAFcAVwBXAFEAUQBXAFcAVwBXABUAUQBHAEcAVwArACsAKwArACsAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwArAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwArACUAJQBXAFcAVwBXACUAJQAlACUAJQAlACUAJQAlACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwArACsAKwArACUAJQAlACUAKwArACsAKwArACsAKwArACsAKwArACsAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACsAVwBXAFcAVwBXAFcAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAE8ATwBPAE8ATwBPAE8ATwAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQAlACUAJQAlACUAJQAlACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAEcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAADQATAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABLAEsASwBLAEsASwBLAEsASwBLAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAABAAEAAQABAAeAAQABAAEAAQABAAEAAQABAAEAAQAHgBQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUABQAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAeAA0ADQANAA0ADQArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAB4AHgAeAB4AHgAeAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAAQAUABQAFAABABQAFAAUABQAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAeAB4AHgAeACsAKwArACsAUABQAFAAUABQAFAAHgAeABoAHgArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAADgAOABMAEwArACsAKwArACsAKwArACsABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwANAA0ASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAFAAUAAeAB4AHgBQAA4AUAArACsAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAA0ADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArAB4AWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYACsAKwArAAQAHgAeAB4AHgAeAB4ADQANAA0AHgAeAB4AHgArAFAASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArAB4AHgBcAFwAXABcAFwAKgBcAFwAXABcAFwAXABcAFwAXABcAEsASwBLAEsASwBLAEsASwBLAEsAXABcAFwAXABcACsAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArAFAAUABQAAQAUABQAFAAUABQAFAAUABQAAQABAArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAHgANAA0ADQBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAXAAqACoAKgBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAqAFwAKgAqACoAXABcACoAKgBcAFwAXABcAFwAKgAqAFwAKgBcACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcACoAKgBQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAA0ADQBQAFAAUAAEAAQAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUAArACsAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQADQAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAVABVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBUAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVACsAKwArACsAKwArACsAKwArACsAKwArAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAKwArACsAKwBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAKwArACsAKwAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAKwArACsAKwArAFYABABWAFYAVgBWAFYAVgBWAFYAVgBWAB4AVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgArAFYAVgBWAFYAVgArAFYAKwBWAFYAKwBWAFYAKwBWAFYAVgBWAFYAVgBWAFYAVgBWAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAEQAWAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAaAB4AKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAGAARABEAGAAYABMAEwAWABEAFAArACsAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACUAJQAlACUAJQAWABEAFgARABYAEQAWABEAFgARABYAEQAlACUAFgARACUAJQAlACUAJQAlACUAEQAlABEAKwAVABUAEwATACUAFgARABYAEQAWABEAJQAlACUAJQAlACUAJQAlACsAJQAbABoAJQArACsAKwArAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAcAKwATACUAJQAbABoAJQAlABYAEQAlACUAEQAlABEAJQBXAFcAVwBXAFcAVwBXAFcAVwBXABUAFQAlACUAJQATACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXABYAJQARACUAJQAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAWACUAEQAlABYAEQARABYAEQARABUAVwBRAFEAUQBRAFEAUQBRAFEAUQBRAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAEcARwArACsAVwBXAFcAVwBXAFcAKwArAFcAVwBXAFcAVwBXACsAKwBXAFcAVwBXAFcAVwArACsAVwBXAFcAKwArACsAGgAbACUAJQAlABsAGwArAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwAEAAQABAAQAB0AKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsADQANAA0AKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsADQBQAFAAUABQACsAKwArACsAUABQAFAAUABQAFAAUABQAA0AUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUAArACsAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQACsAKwArAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgBQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwBQAFAAUABQAFAABAAEAAQAKwAEAAQAKwArACsAKwArAAQABAAEAAQAUABQAFAAUAArAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsABAAEAAQAKwArACsAKwAEAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsADQANAA0ADQANAA0ADQANAB4AKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AUABQAFAAUABQAFAAUABQAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEACsAKwArACsAUABQAFAAUABQAA0ADQANAA0ADQANABQAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwANAA0ADQANAA0ADQANAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwBQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAA0ADQAeAB4AHgAeAB4AKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsASwBLAEsASwBLAEsASwBLAEsASwANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAeAA4AUAArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAADQANAB4ADQAeAAQABAAEAB4AKwArAEsASwBLAEsASwBLAEsASwBLAEsAUAAOAFAADQANAA0AKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAANAA0AHgANAA0AHgAEACsAUABQAFAAUABQAFAAUAArAFAAKwBQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAA0AKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsABAAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABAArACsAUAArACsAKwArACsAKwAEACsAKwArACsAKwBQAFAAUABQAFAABAAEACsAKwAEAAQABAAEAAQABAAEACsAKwArAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAAQABABQAFAAUABQAA0ADQANAA0AHgBLAEsASwBLAEsASwBLAEsASwBLACsADQArAB4AKwArAAQABAAEAAQAUABQAB4AUAArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEACsAKwAEAAQABAAEAAQABAAEAAQABAAOAA0ADQATABMAHgAeAB4ADQANAA0ADQANAA0ADQANAA0ADQANAA0ADQANAA0AUABQAFAAUAAEAAQAKwArAAQADQANAB4AUAArACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAArACsAKwAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAXABcAA0ADQANACoASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwBQAFAABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAFAABAAEAAQABAAOAB4ADQANAA0ADQAOAB4ABAArACsAKwArACsAKwArACsAUAAEAAQABAAEAAQABAAEAAQABAAEAAQAUABQAFAAUAArACsAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAA0ADQANACsADgAOAA4ADQANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEACsABAAEAAQABAAEAAQABAAEAFAADQANAA0ADQANACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwAOABMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAArACsAKwAEACsABAAEACsABAAEAAQABAAEAAQABABQAAQAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsADQANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAASABIAEgAQwBDAEMAUABQAFAAUABDAFAAUABQAEgAQwBIAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAASABDAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABIAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwANAA0AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEAAQABAANACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAA0ADQANAB4AHgAeAB4AHgAeAFAAUABQAFAADQAeACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABAAEAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAEcARwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwArACsAKwArACsAKwArACsAKwArACsAKwArAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQACsAKwAeAAQABAANAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAB4AHgAeAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAHgAeAAQABAAEAAQABAAEAAQAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAEAAQABAAEAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAB4AHgAEAAQABAAeACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAFAAUAArACsAUAArACsAUABQACsAKwBQAFAAUABQACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwBQACsAUABQAFAAUABQAFAAUAArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAKwAeAB4AUABQAFAAUABQACsAUAArACsAKwBQAFAAUABQAFAAUABQACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AKwArAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAB4AHgAeAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAB4AHgAeAB4AHgAeAB4AHgAEAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAeAB4ADQANAA0ADQAeACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAAQABAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsABAAEAAQABAAEAAQABAArAAQABAArAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAEAAQABAAEAAQABAAEACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAFgAWAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUAArAFAAKwArAFAAKwBQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUAArAFAAKwBQACsAKwArACsAKwArAFAAKwArACsAKwBQACsAUAArAFAAKwBQAFAAUAArAFAAUAArAFAAKwArAFAAKwBQACsAUAArAFAAKwBQACsAUABQACsAUAArACsAUABQAFAAUAArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQACsAUABQAFAAUAArAFAAKwBQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwBQAFAAUAArAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwAlACUAJQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAeACUAHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeACUAJQAlACUAHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQAlACUAJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeACUAJQAlACUAJQAeACUAJQAlACUAJQAgACAAIAAlACUAIAAlACUAIAAgACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAIQAhACEAIQAhACUAJQAgACAAJQAlACAAIAAgACAAIAAgACAAIAAgACAAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAIAAgACAAIAAlACUAJQAlACAAJQAgACAAIAAgACAAIAAgACAAIAAlACUAJQAgACUAJQAlACUAIAAgACAAJQAgACAAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeACUAHgAlAB4AJQAlACUAJQAlACAAJQAlACUAJQAeACUAHgAeACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAIAAgACUAJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAIAAlACUAJQAlACAAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAIAAgACAAJQAlACUAIAAgACAAIAAgAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFwAXABcAFQAVABUAHgAeAB4AHgAlACUAJQAgACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAIAAgACAAJQAlACUAJQAlACUAJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAgACAAIAAlACAAIAAlACUAJQAlACUAJQAgACUAJQAlACUAJQAlACUAJQAlACAAIAAgACAAIAAgACAAIAAgACAAJQAlACUAIAAgACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACsAKwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsA';\n /* @flow */\n\n var LETTER_NUMBER_MODIFIER = 50; // Non-tailorable Line Breaking Classes\n\n var BK = 1; // Cause a line break (after)\n\n var CR = 2; // Cause a line break (after), except between CR and LF\n\n var LF = 3; // Cause a line break (after)\n\n var CM = 4; // Prohibit a line break between the character and the preceding character\n\n var NL = 5; // Cause a line break (after)\n\n var WJ = 7; // Prohibit line breaks before and after\n\n var ZW = 8; // Provide a break opportunity\n\n var GL = 9; // Prohibit line breaks before and after\n\n var SP = 10; // Enable indirect line breaks\n\n var ZWJ = 11; // Prohibit line breaks within joiner sequences\n // Break Opportunities\n\n var B2 = 12; // Provide a line break opportunity before and after the character\n\n var BA = 13; // Generally provide a line break opportunity after the character\n\n var BB = 14; // Generally provide a line break opportunity before the character\n\n var HY = 15; // Provide a line break opportunity after the character, except in numeric context\n\n var CB = 16; // Provide a line break opportunity contingent on additional information\n // Characters Prohibiting Certain Breaks\n\n var CL = 17; // Prohibit line breaks before\n\n var CP = 18; // Prohibit line breaks before\n\n var EX = 19; // Prohibit line breaks before\n\n var IN = 20; // Allow only indirect line breaks between pairs\n\n var NS = 21; // Allow only indirect line breaks before\n\n var OP = 22; // Prohibit line breaks after\n\n var QU = 23; // Act like they are both opening and closing\n // Numeric Context\n\n var IS = 24; // Prevent breaks after any and before numeric\n\n var NU = 25; // Form numeric expressions for line breaking purposes\n\n var PO = 26; // Do not break following a numeric expression\n\n var PR = 27; // Do not break in front of a numeric expression\n\n var SY = 28; // Prevent a break before; and allow a break after\n // Other Characters\n\n var AI = 29; // Act like AL when the resolvedEAW is N; otherwise; act as ID\n\n var AL = 30; // Are alphabetic characters or symbols that are used with alphabetic characters\n\n var CJ = 31; // Treat as NS or ID for strict or normal breaking.\n\n var EB = 32; // Do not break from following Emoji Modifier\n\n var EM = 33; // Do not break from preceding Emoji Base\n\n var H2 = 34; // Form Korean syllable blocks\n\n var H3 = 35; // Form Korean syllable blocks\n\n var HL = 36; // Do not break around a following hyphen; otherwise act as Alphabetic\n\n var ID = 37; // Break before or after; except in some numeric context\n\n var JL = 38; // Form Korean syllable blocks\n\n var JV = 39; // Form Korean syllable blocks\n\n var JT = 40; // Form Korean syllable blocks\n\n var RI = 41; // Keep pairs together. For pairs; break before and after other classes\n\n var SA = 42; // Provide a line break opportunity contingent on additional, language-specific context analysis\n\n var XX = 43; // Have as yet unknown line breaking behavior or unassigned code positions\n\n var BREAK_MANDATORY = '!';\n var BREAK_NOT_ALLOWED = '×';\n var BREAK_ALLOWED = '÷';\n var UnicodeTrie = createTrieFromBase64(base64);\n var ALPHABETICS = [AL, HL];\n var HARD_LINE_BREAKS = [BK, CR, LF, NL];\n var SPACE = [SP, ZW];\n var PREFIX_POSTFIX = [PR, PO];\n var LINE_BREAKS = HARD_LINE_BREAKS.concat(SPACE);\n var KOREAN_SYLLABLE_BLOCK = [JL, JV, JT, H2, H3];\n var HYPHEN = [HY, BA];\n\n var codePointsToCharacterClasses = function codePointsToCharacterClasses(codePoints, lineBreak) {\n if (lineBreak === void 0) {\n lineBreak = 'strict';\n }\n\n var types = [];\n var indicies = [];\n var categories = [];\n codePoints.forEach(function (codePoint, index) {\n var classType = UnicodeTrie.get(codePoint);\n\n if (classType > LETTER_NUMBER_MODIFIER) {\n categories.push(true);\n classType -= LETTER_NUMBER_MODIFIER;\n } else {\n categories.push(false);\n }\n\n if (['normal', 'auto', 'loose'].indexOf(lineBreak) !== -1) {\n // U+2010, – U+2013, 〜 U+301C, ゠ U+30A0\n if ([0x2010, 0x2013, 0x301c, 0x30a0].indexOf(codePoint) !== -1) {\n indicies.push(index);\n return types.push(CB);\n }\n }\n\n if (classType === CM || classType === ZWJ) {\n // LB10 Treat any remaining combining mark or ZWJ as AL.\n if (index === 0) {\n indicies.push(index);\n return types.push(AL);\n } // LB9 Do not break a combining character sequence; treat it as if it has the line breaking class of\n // the base character in all of the following rules. Treat ZWJ as if it were CM.\n\n\n var prev = types[index - 1];\n\n if (LINE_BREAKS.indexOf(prev) === -1) {\n indicies.push(indicies[index - 1]);\n return types.push(prev);\n }\n\n indicies.push(index);\n return types.push(AL);\n }\n\n indicies.push(index);\n\n if (classType === CJ) {\n return types.push(lineBreak === 'strict' ? NS : ID);\n }\n\n if (classType === SA) {\n return types.push(AL);\n }\n\n if (classType === AI) {\n return types.push(AL);\n } // For supplementary characters, a useful default is to treat characters in the range 10000..1FFFD as AL\n // and characters in the ranges 20000..2FFFD and 30000..3FFFD as ID, until the implementation can be revised\n // to take into account the actual line breaking properties for these characters.\n\n\n if (classType === XX) {\n if (codePoint >= 0x20000 && codePoint <= 0x2fffd || codePoint >= 0x30000 && codePoint <= 0x3fffd) {\n return types.push(ID);\n } else {\n return types.push(AL);\n }\n }\n\n types.push(classType);\n });\n return [indicies, types, categories];\n };\n\n var isAdjacentWithSpaceIgnored = function isAdjacentWithSpaceIgnored(a, b, currentIndex, classTypes) {\n var current = classTypes[currentIndex];\n\n if (Array.isArray(a) ? a.indexOf(current) !== -1 : a === current) {\n var i = currentIndex;\n\n while (i <= classTypes.length) {\n i++;\n var next = classTypes[i];\n\n if (next === b) {\n return true;\n }\n\n if (next !== SP) {\n break;\n }\n }\n }\n\n if (current === SP) {\n var i = currentIndex;\n\n while (i > 0) {\n i--;\n var prev = classTypes[i];\n\n if (Array.isArray(a) ? a.indexOf(prev) !== -1 : a === prev) {\n var n = currentIndex;\n\n while (n <= classTypes.length) {\n n++;\n var next = classTypes[n];\n\n if (next === b) {\n return true;\n }\n\n if (next !== SP) {\n break;\n }\n }\n }\n\n if (prev !== SP) {\n break;\n }\n }\n }\n\n return false;\n };\n\n var previousNonSpaceClassType = function previousNonSpaceClassType(currentIndex, classTypes) {\n var i = currentIndex;\n\n while (i >= 0) {\n var type = classTypes[i];\n\n if (type === SP) {\n i--;\n } else {\n return type;\n }\n }\n\n return 0;\n };\n\n var _lineBreakAtIndex = function _lineBreakAtIndex(codePoints, classTypes, indicies, index, forbiddenBreaks) {\n if (indicies[index] === 0) {\n return BREAK_NOT_ALLOWED;\n }\n\n var currentIndex = index - 1;\n\n if (Array.isArray(forbiddenBreaks) && forbiddenBreaks[currentIndex] === true) {\n return BREAK_NOT_ALLOWED;\n }\n\n var beforeIndex = currentIndex - 1;\n var afterIndex = currentIndex + 1;\n var current = classTypes[currentIndex]; // LB4 Always break after hard line breaks.\n // LB5 Treat CR followed by LF, as well as CR, LF, and NL as hard line breaks.\n\n var before = beforeIndex >= 0 ? classTypes[beforeIndex] : 0;\n var next = classTypes[afterIndex];\n\n if (current === CR && next === LF) {\n return BREAK_NOT_ALLOWED;\n }\n\n if (HARD_LINE_BREAKS.indexOf(current) !== -1) {\n return BREAK_MANDATORY;\n } // LB6 Do not break before hard line breaks.\n\n\n if (HARD_LINE_BREAKS.indexOf(next) !== -1) {\n return BREAK_NOT_ALLOWED;\n } // LB7 Do not break before spaces or zero width space.\n\n\n if (SPACE.indexOf(next) !== -1) {\n return BREAK_NOT_ALLOWED;\n } // LB8 Break before any character following a zero-width space, even if one or more spaces intervene.\n\n\n if (previousNonSpaceClassType(currentIndex, classTypes) === ZW) {\n return BREAK_ALLOWED;\n } // LB8a Do not break between a zero width joiner and an ideograph, emoji base or emoji modifier.\n\n\n if (UnicodeTrie.get(codePoints[currentIndex]) === ZWJ && (next === ID || next === EB || next === EM)) {\n return BREAK_NOT_ALLOWED;\n } // LB11 Do not break before or after Word joiner and related characters.\n\n\n if (current === WJ || next === WJ) {\n return BREAK_NOT_ALLOWED;\n } // LB12 Do not break after NBSP and related characters.\n\n\n if (current === GL) {\n return BREAK_NOT_ALLOWED;\n } // LB12a Do not break before NBSP and related characters, except after spaces and hyphens.\n\n\n if ([SP, BA, HY].indexOf(current) === -1 && next === GL) {\n return BREAK_NOT_ALLOWED;\n } // LB13 Do not break before ‘]’ or ‘!’ or ‘;’ or ‘/’, even after spaces.\n\n\n if ([CL, CP, EX, IS, SY].indexOf(next) !== -1) {\n return BREAK_NOT_ALLOWED;\n } // LB14 Do not break after ‘[’, even after spaces.\n\n\n if (previousNonSpaceClassType(currentIndex, classTypes) === OP) {\n return BREAK_NOT_ALLOWED;\n } // LB15 Do not break within ‘”[’, even with intervening spaces.\n\n\n if (isAdjacentWithSpaceIgnored(QU, OP, currentIndex, classTypes)) {\n return BREAK_NOT_ALLOWED;\n } // LB16 Do not break between closing punctuation and a nonstarter (lb=NS), even with intervening spaces.\n\n\n if (isAdjacentWithSpaceIgnored([CL, CP], NS, currentIndex, classTypes)) {\n return BREAK_NOT_ALLOWED;\n } // LB17 Do not break within ‘——’, even with intervening spaces.\n\n\n if (isAdjacentWithSpaceIgnored(B2, B2, currentIndex, classTypes)) {\n return BREAK_NOT_ALLOWED;\n } // LB18 Break after spaces.\n\n\n if (current === SP) {\n return BREAK_ALLOWED;\n } // LB19 Do not break before or after quotation marks, such as ‘ ” ’.\n\n\n if (current === QU || next === QU) {\n return BREAK_NOT_ALLOWED;\n } // LB20 Break before and after unresolved CB.\n\n\n if (next === CB || current === CB) {\n return BREAK_ALLOWED;\n } // LB21 Do not break before hyphen-minus, other hyphens, fixed-width spaces, small kana, and other non-starters, or after acute accents.\n\n\n if ([BA, HY, NS].indexOf(next) !== -1 || current === BB) {\n return BREAK_NOT_ALLOWED;\n } // LB21a Don't break after Hebrew + Hyphen.\n\n\n if (before === HL && HYPHEN.indexOf(current) !== -1) {\n return BREAK_NOT_ALLOWED;\n } // LB21b Don’t break between Solidus and Hebrew letters.\n\n\n if (current === SY && next === HL) {\n return BREAK_NOT_ALLOWED;\n } // LB22 Do not break between two ellipses, or between letters, numbers or exclamations and ellipsis.\n\n\n if (next === IN && ALPHABETICS.concat(IN, EX, NU, ID, EB, EM).indexOf(current) !== -1) {\n return BREAK_NOT_ALLOWED;\n } // LB23 Do not break between digits and letters.\n\n\n if (ALPHABETICS.indexOf(next) !== -1 && current === NU || ALPHABETICS.indexOf(current) !== -1 && next === NU) {\n return BREAK_NOT_ALLOWED;\n } // LB23a Do not break between numeric prefixes and ideographs, or between ideographs and numeric postfixes.\n\n\n if (current === PR && [ID, EB, EM].indexOf(next) !== -1 || [ID, EB, EM].indexOf(current) !== -1 && next === PO) {\n return BREAK_NOT_ALLOWED;\n } // LB24 Do not break between numeric prefix/postfix and letters, or between letters and prefix/postfix.\n\n\n if (ALPHABETICS.indexOf(current) !== -1 && PREFIX_POSTFIX.indexOf(next) !== -1 || PREFIX_POSTFIX.indexOf(current) !== -1 && ALPHABETICS.indexOf(next) !== -1) {\n return BREAK_NOT_ALLOWED;\n } // LB25 Do not break between the following pairs of classes relevant to numbers:\n\n\n if ( // (PR | PO) × ( OP | HY )? NU\n [PR, PO].indexOf(current) !== -1 && (next === NU || [OP, HY].indexOf(next) !== -1 && classTypes[afterIndex + 1] === NU) || // ( OP | HY ) × NU\n [OP, HY].indexOf(current) !== -1 && next === NU || // NU ×\t(NU | SY | IS)\n current === NU && [NU, SY, IS].indexOf(next) !== -1) {\n return BREAK_NOT_ALLOWED;\n } // NU (NU | SY | IS)* × (NU | SY | IS | CL | CP)\n\n\n if ([NU, SY, IS, CL, CP].indexOf(next) !== -1) {\n var prevIndex = currentIndex;\n\n while (prevIndex >= 0) {\n var type = classTypes[prevIndex];\n\n if (type === NU) {\n return BREAK_NOT_ALLOWED;\n } else if ([SY, IS].indexOf(type) !== -1) {\n prevIndex--;\n } else {\n break;\n }\n }\n } // NU (NU | SY | IS)* (CL | CP)? × (PO | PR))\n\n\n if ([PR, PO].indexOf(next) !== -1) {\n var prevIndex = [CL, CP].indexOf(current) !== -1 ? beforeIndex : currentIndex;\n\n while (prevIndex >= 0) {\n var type = classTypes[prevIndex];\n\n if (type === NU) {\n return BREAK_NOT_ALLOWED;\n } else if ([SY, IS].indexOf(type) !== -1) {\n prevIndex--;\n } else {\n break;\n }\n }\n } // LB26 Do not break a Korean syllable.\n\n\n if (JL === current && [JL, JV, H2, H3].indexOf(next) !== -1 || [JV, H2].indexOf(current) !== -1 && [JV, JT].indexOf(next) !== -1 || [JT, H3].indexOf(current) !== -1 && next === JT) {\n return BREAK_NOT_ALLOWED;\n } // LB27 Treat a Korean Syllable Block the same as ID.\n\n\n if (KOREAN_SYLLABLE_BLOCK.indexOf(current) !== -1 && [IN, PO].indexOf(next) !== -1 || KOREAN_SYLLABLE_BLOCK.indexOf(next) !== -1 && current === PR) {\n return BREAK_NOT_ALLOWED;\n } // LB28 Do not break between alphabetics (“at”).\n\n\n if (ALPHABETICS.indexOf(current) !== -1 && ALPHABETICS.indexOf(next) !== -1) {\n return BREAK_NOT_ALLOWED;\n } // LB29 Do not break between numeric punctuation and alphabetics (“e.g.”).\n\n\n if (current === IS && ALPHABETICS.indexOf(next) !== -1) {\n return BREAK_NOT_ALLOWED;\n } // LB30 Do not break between letters, numbers, or ordinary symbols and opening or closing parentheses.\n\n\n if (ALPHABETICS.concat(NU).indexOf(current) !== -1 && next === OP || ALPHABETICS.concat(NU).indexOf(next) !== -1 && current === CP) {\n return BREAK_NOT_ALLOWED;\n } // LB30a Break between two regional indicator symbols if and only if there are an even number of regional\n // indicators preceding the position of the break.\n\n\n if (current === RI && next === RI) {\n var i = indicies[currentIndex];\n var count = 1;\n\n while (i > 0) {\n i--;\n\n if (classTypes[i] === RI) {\n count++;\n } else {\n break;\n }\n }\n\n if (count % 2 !== 0) {\n return BREAK_NOT_ALLOWED;\n }\n } // LB30b Do not break between an emoji base and an emoji modifier.\n\n\n if (current === EB && next === EM) {\n return BREAK_NOT_ALLOWED;\n }\n\n return BREAK_ALLOWED;\n };\n\n var cssFormattedClasses = function cssFormattedClasses(codePoints, options) {\n if (!options) {\n options = {\n lineBreak: 'normal',\n wordBreak: 'normal'\n };\n }\n\n var _a = codePointsToCharacterClasses(codePoints, options.lineBreak),\n indicies = _a[0],\n classTypes = _a[1],\n isLetterNumber = _a[2];\n\n if (options.wordBreak === 'break-all' || options.wordBreak === 'break-word') {\n classTypes = classTypes.map(function (type) {\n return [NU, AL, SA].indexOf(type) !== -1 ? ID : type;\n });\n }\n\n var forbiddenBreakpoints = options.wordBreak === 'keep-all' ? isLetterNumber.map(function (letterNumber, i) {\n return letterNumber && codePoints[i] >= 0x4e00 && codePoints[i] <= 0x9fff;\n }) : undefined;\n return [indicies, classTypes, forbiddenBreakpoints];\n };\n\n var Break =\n /** @class */\n function () {\n function Break(codePoints, lineBreak, start, end) {\n this.codePoints = codePoints;\n this.required = lineBreak === BREAK_MANDATORY;\n this.start = start;\n this.end = end;\n }\n\n Break.prototype.slice = function () {\n return fromCodePoint.apply(void 0, this.codePoints.slice(this.start, this.end));\n };\n\n return Break;\n }();\n\n var LineBreaker = function LineBreaker(str, options) {\n var codePoints = toCodePoints(str);\n\n var _a = cssFormattedClasses(codePoints, options),\n indicies = _a[0],\n classTypes = _a[1],\n forbiddenBreakpoints = _a[2];\n\n var length = codePoints.length;\n var lastEnd = 0;\n var nextIndex = 0;\n return {\n next: function next() {\n if (nextIndex >= length) {\n return {\n done: true,\n value: null\n };\n }\n\n var lineBreak = BREAK_NOT_ALLOWED;\n\n while (nextIndex < length && (lineBreak = _lineBreakAtIndex(codePoints, classTypes, indicies, ++nextIndex, forbiddenBreakpoints)) === BREAK_NOT_ALLOWED) {}\n\n if (lineBreak !== BREAK_NOT_ALLOWED || nextIndex === length) {\n var value = new Break(codePoints, lineBreak, lastEnd, nextIndex);\n lastEnd = nextIndex;\n return {\n value: value,\n done: false\n };\n }\n\n return {\n done: true,\n value: null\n };\n }\n };\n }; // https://www.w3.org/TR/css-syntax-3\n\n\n var TokenType;\n\n (function (TokenType) {\n TokenType[TokenType[\"STRING_TOKEN\"] = 0] = \"STRING_TOKEN\";\n TokenType[TokenType[\"BAD_STRING_TOKEN\"] = 1] = \"BAD_STRING_TOKEN\";\n TokenType[TokenType[\"LEFT_PARENTHESIS_TOKEN\"] = 2] = \"LEFT_PARENTHESIS_TOKEN\";\n TokenType[TokenType[\"RIGHT_PARENTHESIS_TOKEN\"] = 3] = \"RIGHT_PARENTHESIS_TOKEN\";\n TokenType[TokenType[\"COMMA_TOKEN\"] = 4] = \"COMMA_TOKEN\";\n TokenType[TokenType[\"HASH_TOKEN\"] = 5] = \"HASH_TOKEN\";\n TokenType[TokenType[\"DELIM_TOKEN\"] = 6] = \"DELIM_TOKEN\";\n TokenType[TokenType[\"AT_KEYWORD_TOKEN\"] = 7] = \"AT_KEYWORD_TOKEN\";\n TokenType[TokenType[\"PREFIX_MATCH_TOKEN\"] = 8] = \"PREFIX_MATCH_TOKEN\";\n TokenType[TokenType[\"DASH_MATCH_TOKEN\"] = 9] = \"DASH_MATCH_TOKEN\";\n TokenType[TokenType[\"INCLUDE_MATCH_TOKEN\"] = 10] = \"INCLUDE_MATCH_TOKEN\";\n TokenType[TokenType[\"LEFT_CURLY_BRACKET_TOKEN\"] = 11] = \"LEFT_CURLY_BRACKET_TOKEN\";\n TokenType[TokenType[\"RIGHT_CURLY_BRACKET_TOKEN\"] = 12] = \"RIGHT_CURLY_BRACKET_TOKEN\";\n TokenType[TokenType[\"SUFFIX_MATCH_TOKEN\"] = 13] = \"SUFFIX_MATCH_TOKEN\";\n TokenType[TokenType[\"SUBSTRING_MATCH_TOKEN\"] = 14] = \"SUBSTRING_MATCH_TOKEN\";\n TokenType[TokenType[\"DIMENSION_TOKEN\"] = 15] = \"DIMENSION_TOKEN\";\n TokenType[TokenType[\"PERCENTAGE_TOKEN\"] = 16] = \"PERCENTAGE_TOKEN\";\n TokenType[TokenType[\"NUMBER_TOKEN\"] = 17] = \"NUMBER_TOKEN\";\n TokenType[TokenType[\"FUNCTION\"] = 18] = \"FUNCTION\";\n TokenType[TokenType[\"FUNCTION_TOKEN\"] = 19] = \"FUNCTION_TOKEN\";\n TokenType[TokenType[\"IDENT_TOKEN\"] = 20] = \"IDENT_TOKEN\";\n TokenType[TokenType[\"COLUMN_TOKEN\"] = 21] = \"COLUMN_TOKEN\";\n TokenType[TokenType[\"URL_TOKEN\"] = 22] = \"URL_TOKEN\";\n TokenType[TokenType[\"BAD_URL_TOKEN\"] = 23] = \"BAD_URL_TOKEN\";\n TokenType[TokenType[\"CDC_TOKEN\"] = 24] = \"CDC_TOKEN\";\n TokenType[TokenType[\"CDO_TOKEN\"] = 25] = \"CDO_TOKEN\";\n TokenType[TokenType[\"COLON_TOKEN\"] = 26] = \"COLON_TOKEN\";\n TokenType[TokenType[\"SEMICOLON_TOKEN\"] = 27] = \"SEMICOLON_TOKEN\";\n TokenType[TokenType[\"LEFT_SQUARE_BRACKET_TOKEN\"] = 28] = \"LEFT_SQUARE_BRACKET_TOKEN\";\n TokenType[TokenType[\"RIGHT_SQUARE_BRACKET_TOKEN\"] = 29] = \"RIGHT_SQUARE_BRACKET_TOKEN\";\n TokenType[TokenType[\"UNICODE_RANGE_TOKEN\"] = 30] = \"UNICODE_RANGE_TOKEN\";\n TokenType[TokenType[\"WHITESPACE_TOKEN\"] = 31] = \"WHITESPACE_TOKEN\";\n TokenType[TokenType[\"EOF_TOKEN\"] = 32] = \"EOF_TOKEN\";\n })(TokenType || (TokenType = {}));\n\n var FLAG_UNRESTRICTED = 1 << 0;\n var FLAG_ID = 1 << 1;\n var FLAG_INTEGER = 1 << 2;\n var FLAG_NUMBER = 1 << 3;\n var LINE_FEED = 0x000a;\n var SOLIDUS = 0x002f;\n var REVERSE_SOLIDUS = 0x005c;\n var CHARACTER_TABULATION = 0x0009;\n var SPACE$1 = 0x0020;\n var QUOTATION_MARK = 0x0022;\n var EQUALS_SIGN = 0x003d;\n var NUMBER_SIGN = 0x0023;\n var DOLLAR_SIGN = 0x0024;\n var PERCENTAGE_SIGN = 0x0025;\n var APOSTROPHE = 0x0027;\n var LEFT_PARENTHESIS = 0x0028;\n var RIGHT_PARENTHESIS = 0x0029;\n var LOW_LINE = 0x005f;\n var HYPHEN_MINUS = 0x002d;\n var EXCLAMATION_MARK = 0x0021;\n var LESS_THAN_SIGN = 0x003c;\n var GREATER_THAN_SIGN = 0x003e;\n var COMMERCIAL_AT = 0x0040;\n var LEFT_SQUARE_BRACKET = 0x005b;\n var RIGHT_SQUARE_BRACKET = 0x005d;\n var CIRCUMFLEX_ACCENT = 0x003d;\n var LEFT_CURLY_BRACKET = 0x007b;\n var QUESTION_MARK = 0x003f;\n var RIGHT_CURLY_BRACKET = 0x007d;\n var VERTICAL_LINE = 0x007c;\n var TILDE = 0x007e;\n var CONTROL = 0x0080;\n var REPLACEMENT_CHARACTER = 0xfffd;\n var ASTERISK = 0x002a;\n var PLUS_SIGN = 0x002b;\n var COMMA = 0x002c;\n var COLON = 0x003a;\n var SEMICOLON = 0x003b;\n var FULL_STOP = 0x002e;\n var NULL = 0x0000;\n var BACKSPACE = 0x0008;\n var LINE_TABULATION = 0x000b;\n var SHIFT_OUT = 0x000e;\n var INFORMATION_SEPARATOR_ONE = 0x001f;\n var DELETE = 0x007f;\n var EOF = -1;\n var ZERO = 0x0030;\n var a = 0x0061;\n var e = 0x0065;\n var f = 0x0066;\n var u = 0x0075;\n var z = 0x007a;\n var A = 0x0041;\n var E = 0x0045;\n var F = 0x0046;\n var U = 0x0055;\n var Z = 0x005a;\n\n var isDigit = function isDigit(codePoint) {\n return codePoint >= ZERO && codePoint <= 0x0039;\n };\n\n var isSurrogateCodePoint = function isSurrogateCodePoint(codePoint) {\n return codePoint >= 0xd800 && codePoint <= 0xdfff;\n };\n\n var isHex = function isHex(codePoint) {\n return isDigit(codePoint) || codePoint >= A && codePoint <= F || codePoint >= a && codePoint <= f;\n };\n\n var isLowerCaseLetter = function isLowerCaseLetter(codePoint) {\n return codePoint >= a && codePoint <= z;\n };\n\n var isUpperCaseLetter = function isUpperCaseLetter(codePoint) {\n return codePoint >= A && codePoint <= Z;\n };\n\n var isLetter = function isLetter(codePoint) {\n return isLowerCaseLetter(codePoint) || isUpperCaseLetter(codePoint);\n };\n\n var isNonASCIICodePoint = function isNonASCIICodePoint(codePoint) {\n return codePoint >= CONTROL;\n };\n\n var isWhiteSpace = function isWhiteSpace(codePoint) {\n return codePoint === LINE_FEED || codePoint === CHARACTER_TABULATION || codePoint === SPACE$1;\n };\n\n var isNameStartCodePoint = function isNameStartCodePoint(codePoint) {\n return isLetter(codePoint) || isNonASCIICodePoint(codePoint) || codePoint === LOW_LINE;\n };\n\n var isNameCodePoint = function isNameCodePoint(codePoint) {\n return isNameStartCodePoint(codePoint) || isDigit(codePoint) || codePoint === HYPHEN_MINUS;\n };\n\n var isNonPrintableCodePoint = function isNonPrintableCodePoint(codePoint) {\n return codePoint >= NULL && codePoint <= BACKSPACE || codePoint === LINE_TABULATION || codePoint >= SHIFT_OUT && codePoint <= INFORMATION_SEPARATOR_ONE || codePoint === DELETE;\n };\n\n var isValidEscape = function isValidEscape(c1, c2) {\n if (c1 !== REVERSE_SOLIDUS) {\n return false;\n }\n\n return c2 !== LINE_FEED;\n };\n\n var isIdentifierStart = function isIdentifierStart(c1, c2, c3) {\n if (c1 === HYPHEN_MINUS) {\n return isNameStartCodePoint(c2) || isValidEscape(c2, c3);\n } else if (isNameStartCodePoint(c1)) {\n return true;\n } else if (c1 === REVERSE_SOLIDUS && isValidEscape(c1, c2)) {\n return true;\n }\n\n return false;\n };\n\n var isNumberStart = function isNumberStart(c1, c2, c3) {\n if (c1 === PLUS_SIGN || c1 === HYPHEN_MINUS) {\n if (isDigit(c2)) {\n return true;\n }\n\n return c2 === FULL_STOP && isDigit(c3);\n }\n\n if (c1 === FULL_STOP) {\n return isDigit(c2);\n }\n\n return isDigit(c1);\n };\n\n var stringToNumber = function stringToNumber(codePoints) {\n var c = 0;\n var sign = 1;\n\n if (codePoints[c] === PLUS_SIGN || codePoints[c] === HYPHEN_MINUS) {\n if (codePoints[c] === HYPHEN_MINUS) {\n sign = -1;\n }\n\n c++;\n }\n\n var integers = [];\n\n while (isDigit(codePoints[c])) {\n integers.push(codePoints[c++]);\n }\n\n var int = integers.length ? parseInt(fromCodePoint.apply(void 0, integers), 10) : 0;\n\n if (codePoints[c] === FULL_STOP) {\n c++;\n }\n\n var fraction = [];\n\n while (isDigit(codePoints[c])) {\n fraction.push(codePoints[c++]);\n }\n\n var fracd = fraction.length;\n var frac = fracd ? parseInt(fromCodePoint.apply(void 0, fraction), 10) : 0;\n\n if (codePoints[c] === E || codePoints[c] === e) {\n c++;\n }\n\n var expsign = 1;\n\n if (codePoints[c] === PLUS_SIGN || codePoints[c] === HYPHEN_MINUS) {\n if (codePoints[c] === HYPHEN_MINUS) {\n expsign = -1;\n }\n\n c++;\n }\n\n var exponent = [];\n\n while (isDigit(codePoints[c])) {\n exponent.push(codePoints[c++]);\n }\n\n var exp = exponent.length ? parseInt(fromCodePoint.apply(void 0, exponent), 10) : 0;\n return sign * (int + frac * Math.pow(10, -fracd)) * Math.pow(10, expsign * exp);\n };\n\n var LEFT_PARENTHESIS_TOKEN = {\n type: TokenType.LEFT_PARENTHESIS_TOKEN\n };\n var RIGHT_PARENTHESIS_TOKEN = {\n type: TokenType.RIGHT_PARENTHESIS_TOKEN\n };\n var COMMA_TOKEN = {\n type: TokenType.COMMA_TOKEN\n };\n var SUFFIX_MATCH_TOKEN = {\n type: TokenType.SUFFIX_MATCH_TOKEN\n };\n var PREFIX_MATCH_TOKEN = {\n type: TokenType.PREFIX_MATCH_TOKEN\n };\n var COLUMN_TOKEN = {\n type: TokenType.COLUMN_TOKEN\n };\n var DASH_MATCH_TOKEN = {\n type: TokenType.DASH_MATCH_TOKEN\n };\n var INCLUDE_MATCH_TOKEN = {\n type: TokenType.INCLUDE_MATCH_TOKEN\n };\n var LEFT_CURLY_BRACKET_TOKEN = {\n type: TokenType.LEFT_CURLY_BRACKET_TOKEN\n };\n var RIGHT_CURLY_BRACKET_TOKEN = {\n type: TokenType.RIGHT_CURLY_BRACKET_TOKEN\n };\n var SUBSTRING_MATCH_TOKEN = {\n type: TokenType.SUBSTRING_MATCH_TOKEN\n };\n var BAD_URL_TOKEN = {\n type: TokenType.BAD_URL_TOKEN\n };\n var BAD_STRING_TOKEN = {\n type: TokenType.BAD_STRING_TOKEN\n };\n var CDO_TOKEN = {\n type: TokenType.CDO_TOKEN\n };\n var CDC_TOKEN = {\n type: TokenType.CDC_TOKEN\n };\n var COLON_TOKEN = {\n type: TokenType.COLON_TOKEN\n };\n var SEMICOLON_TOKEN = {\n type: TokenType.SEMICOLON_TOKEN\n };\n var LEFT_SQUARE_BRACKET_TOKEN = {\n type: TokenType.LEFT_SQUARE_BRACKET_TOKEN\n };\n var RIGHT_SQUARE_BRACKET_TOKEN = {\n type: TokenType.RIGHT_SQUARE_BRACKET_TOKEN\n };\n var WHITESPACE_TOKEN = {\n type: TokenType.WHITESPACE_TOKEN\n };\n var EOF_TOKEN = {\n type: TokenType.EOF_TOKEN\n };\n\n var Tokenizer =\n /** @class */\n function () {\n function Tokenizer() {\n this._value = [];\n }\n\n Tokenizer.prototype.write = function (chunk) {\n this._value = this._value.concat(toCodePoints(chunk));\n };\n\n Tokenizer.prototype.read = function () {\n var tokens = [];\n var token = this.consumeToken();\n\n while (token !== EOF_TOKEN) {\n tokens.push(token);\n token = this.consumeToken();\n }\n\n return tokens;\n };\n\n Tokenizer.prototype.consumeToken = function () {\n var codePoint = this.consumeCodePoint();\n\n switch (codePoint) {\n case QUOTATION_MARK:\n return this.consumeStringToken(QUOTATION_MARK);\n\n case NUMBER_SIGN:\n var c1 = this.peekCodePoint(0);\n var c2 = this.peekCodePoint(1);\n var c3 = this.peekCodePoint(2);\n\n if (isNameCodePoint(c1) || isValidEscape(c2, c3)) {\n var flags = isIdentifierStart(c1, c2, c3) ? FLAG_ID : FLAG_UNRESTRICTED;\n var value = this.consumeName();\n return {\n type: TokenType.HASH_TOKEN,\n value: value,\n flags: flags\n };\n }\n\n break;\n\n case DOLLAR_SIGN:\n if (this.peekCodePoint(0) === EQUALS_SIGN) {\n this.consumeCodePoint();\n return SUFFIX_MATCH_TOKEN;\n }\n\n break;\n\n case APOSTROPHE:\n return this.consumeStringToken(APOSTROPHE);\n\n case LEFT_PARENTHESIS:\n return LEFT_PARENTHESIS_TOKEN;\n\n case RIGHT_PARENTHESIS:\n return RIGHT_PARENTHESIS_TOKEN;\n\n case ASTERISK:\n if (this.peekCodePoint(0) === EQUALS_SIGN) {\n this.consumeCodePoint();\n return SUBSTRING_MATCH_TOKEN;\n }\n\n break;\n\n case PLUS_SIGN:\n if (isNumberStart(codePoint, this.peekCodePoint(0), this.peekCodePoint(1))) {\n this.reconsumeCodePoint(codePoint);\n return this.consumeNumericToken();\n }\n\n break;\n\n case COMMA:\n return COMMA_TOKEN;\n\n case HYPHEN_MINUS:\n var e1 = codePoint;\n var e2 = this.peekCodePoint(0);\n var e3 = this.peekCodePoint(1);\n\n if (isNumberStart(e1, e2, e3)) {\n this.reconsumeCodePoint(codePoint);\n return this.consumeNumericToken();\n }\n\n if (isIdentifierStart(e1, e2, e3)) {\n this.reconsumeCodePoint(codePoint);\n return this.consumeIdentLikeToken();\n }\n\n if (e2 === HYPHEN_MINUS && e3 === GREATER_THAN_SIGN) {\n this.consumeCodePoint();\n this.consumeCodePoint();\n return CDC_TOKEN;\n }\n\n break;\n\n case FULL_STOP:\n if (isNumberStart(codePoint, this.peekCodePoint(0), this.peekCodePoint(1))) {\n this.reconsumeCodePoint(codePoint);\n return this.consumeNumericToken();\n }\n\n break;\n\n case SOLIDUS:\n if (this.peekCodePoint(0) === ASTERISK) {\n this.consumeCodePoint();\n\n while (true) {\n var c = this.consumeCodePoint();\n\n if (c === ASTERISK) {\n c = this.consumeCodePoint();\n\n if (c === SOLIDUS) {\n return this.consumeToken();\n }\n }\n\n if (c === EOF) {\n return this.consumeToken();\n }\n }\n }\n\n break;\n\n case COLON:\n return COLON_TOKEN;\n\n case SEMICOLON:\n return SEMICOLON_TOKEN;\n\n case LESS_THAN_SIGN:\n if (this.peekCodePoint(0) === EXCLAMATION_MARK && this.peekCodePoint(1) === HYPHEN_MINUS && this.peekCodePoint(2) === HYPHEN_MINUS) {\n this.consumeCodePoint();\n this.consumeCodePoint();\n return CDO_TOKEN;\n }\n\n break;\n\n case COMMERCIAL_AT:\n var a1 = this.peekCodePoint(0);\n var a2 = this.peekCodePoint(1);\n var a3 = this.peekCodePoint(2);\n\n if (isIdentifierStart(a1, a2, a3)) {\n var value = this.consumeName();\n return {\n type: TokenType.AT_KEYWORD_TOKEN,\n value: value\n };\n }\n\n break;\n\n case LEFT_SQUARE_BRACKET:\n return LEFT_SQUARE_BRACKET_TOKEN;\n\n case REVERSE_SOLIDUS:\n if (isValidEscape(codePoint, this.peekCodePoint(0))) {\n this.reconsumeCodePoint(codePoint);\n return this.consumeIdentLikeToken();\n }\n\n break;\n\n case RIGHT_SQUARE_BRACKET:\n return RIGHT_SQUARE_BRACKET_TOKEN;\n\n case CIRCUMFLEX_ACCENT:\n if (this.peekCodePoint(0) === EQUALS_SIGN) {\n this.consumeCodePoint();\n return PREFIX_MATCH_TOKEN;\n }\n\n break;\n\n case LEFT_CURLY_BRACKET:\n return LEFT_CURLY_BRACKET_TOKEN;\n\n case RIGHT_CURLY_BRACKET:\n return RIGHT_CURLY_BRACKET_TOKEN;\n\n case u:\n case U:\n var u1 = this.peekCodePoint(0);\n var u2 = this.peekCodePoint(1);\n\n if (u1 === PLUS_SIGN && (isHex(u2) || u2 === QUESTION_MARK)) {\n this.consumeCodePoint();\n this.consumeUnicodeRangeToken();\n }\n\n this.reconsumeCodePoint(codePoint);\n return this.consumeIdentLikeToken();\n\n case VERTICAL_LINE:\n if (this.peekCodePoint(0) === EQUALS_SIGN) {\n this.consumeCodePoint();\n return DASH_MATCH_TOKEN;\n }\n\n if (this.peekCodePoint(0) === VERTICAL_LINE) {\n this.consumeCodePoint();\n return COLUMN_TOKEN;\n }\n\n break;\n\n case TILDE:\n if (this.peekCodePoint(0) === EQUALS_SIGN) {\n this.consumeCodePoint();\n return INCLUDE_MATCH_TOKEN;\n }\n\n break;\n\n case EOF:\n return EOF_TOKEN;\n }\n\n if (isWhiteSpace(codePoint)) {\n this.consumeWhiteSpace();\n return WHITESPACE_TOKEN;\n }\n\n if (isDigit(codePoint)) {\n this.reconsumeCodePoint(codePoint);\n return this.consumeNumericToken();\n }\n\n if (isNameStartCodePoint(codePoint)) {\n this.reconsumeCodePoint(codePoint);\n return this.consumeIdentLikeToken();\n }\n\n return {\n type: TokenType.DELIM_TOKEN,\n value: fromCodePoint(codePoint)\n };\n };\n\n Tokenizer.prototype.consumeCodePoint = function () {\n var value = this._value.shift();\n\n return typeof value === 'undefined' ? -1 : value;\n };\n\n Tokenizer.prototype.reconsumeCodePoint = function (codePoint) {\n this._value.unshift(codePoint);\n };\n\n Tokenizer.prototype.peekCodePoint = function (delta) {\n if (delta >= this._value.length) {\n return -1;\n }\n\n return this._value[delta];\n };\n\n Tokenizer.prototype.consumeUnicodeRangeToken = function () {\n var digits = [];\n var codePoint = this.consumeCodePoint();\n\n while (isHex(codePoint) && digits.length < 6) {\n digits.push(codePoint);\n codePoint = this.consumeCodePoint();\n }\n\n var questionMarks = false;\n\n while (codePoint === QUESTION_MARK && digits.length < 6) {\n digits.push(codePoint);\n codePoint = this.consumeCodePoint();\n questionMarks = true;\n }\n\n if (questionMarks) {\n var start_1 = parseInt(fromCodePoint.apply(void 0, digits.map(function (digit) {\n return digit === QUESTION_MARK ? ZERO : digit;\n })), 16);\n var end = parseInt(fromCodePoint.apply(void 0, digits.map(function (digit) {\n return digit === QUESTION_MARK ? F : digit;\n })), 16);\n return {\n type: TokenType.UNICODE_RANGE_TOKEN,\n start: start_1,\n end: end\n };\n }\n\n var start = parseInt(fromCodePoint.apply(void 0, digits), 16);\n\n if (this.peekCodePoint(0) === HYPHEN_MINUS && isHex(this.peekCodePoint(1))) {\n this.consumeCodePoint();\n codePoint = this.consumeCodePoint();\n var endDigits = [];\n\n while (isHex(codePoint) && endDigits.length < 6) {\n endDigits.push(codePoint);\n codePoint = this.consumeCodePoint();\n }\n\n var end = parseInt(fromCodePoint.apply(void 0, endDigits), 16);\n return {\n type: TokenType.UNICODE_RANGE_TOKEN,\n start: start,\n end: end\n };\n } else {\n return {\n type: TokenType.UNICODE_RANGE_TOKEN,\n start: start,\n end: start\n };\n }\n };\n\n Tokenizer.prototype.consumeIdentLikeToken = function () {\n var value = this.consumeName();\n\n if (value.toLowerCase() === 'url' && this.peekCodePoint(0) === LEFT_PARENTHESIS) {\n this.consumeCodePoint();\n return this.consumeUrlToken();\n } else if (this.peekCodePoint(0) === LEFT_PARENTHESIS) {\n this.consumeCodePoint();\n return {\n type: TokenType.FUNCTION_TOKEN,\n value: value\n };\n }\n\n return {\n type: TokenType.IDENT_TOKEN,\n value: value\n };\n };\n\n Tokenizer.prototype.consumeUrlToken = function () {\n var value = [];\n this.consumeWhiteSpace();\n\n if (this.peekCodePoint(0) === EOF) {\n return {\n type: TokenType.URL_TOKEN,\n value: ''\n };\n }\n\n var next = this.peekCodePoint(0);\n\n if (next === APOSTROPHE || next === QUOTATION_MARK) {\n var stringToken = this.consumeStringToken(this.consumeCodePoint());\n\n if (stringToken.type === TokenType.STRING_TOKEN) {\n this.consumeWhiteSpace();\n\n if (this.peekCodePoint(0) === EOF || this.peekCodePoint(0) === RIGHT_PARENTHESIS) {\n this.consumeCodePoint();\n return {\n type: TokenType.URL_TOKEN,\n value: stringToken.value\n };\n }\n }\n\n this.consumeBadUrlRemnants();\n return BAD_URL_TOKEN;\n }\n\n while (true) {\n var codePoint = this.consumeCodePoint();\n\n if (codePoint === EOF || codePoint === RIGHT_PARENTHESIS) {\n return {\n type: TokenType.URL_TOKEN,\n value: fromCodePoint.apply(void 0, value)\n };\n } else if (isWhiteSpace(codePoint)) {\n this.consumeWhiteSpace();\n\n if (this.peekCodePoint(0) === EOF || this.peekCodePoint(0) === RIGHT_PARENTHESIS) {\n this.consumeCodePoint();\n return {\n type: TokenType.URL_TOKEN,\n value: fromCodePoint.apply(void 0, value)\n };\n }\n\n this.consumeBadUrlRemnants();\n return BAD_URL_TOKEN;\n } else if (codePoint === QUOTATION_MARK || codePoint === APOSTROPHE || codePoint === LEFT_PARENTHESIS || isNonPrintableCodePoint(codePoint)) {\n this.consumeBadUrlRemnants();\n return BAD_URL_TOKEN;\n } else if (codePoint === REVERSE_SOLIDUS) {\n if (isValidEscape(codePoint, this.peekCodePoint(0))) {\n value.push(this.consumeEscapedCodePoint());\n } else {\n this.consumeBadUrlRemnants();\n return BAD_URL_TOKEN;\n }\n } else {\n value.push(codePoint);\n }\n }\n };\n\n Tokenizer.prototype.consumeWhiteSpace = function () {\n while (isWhiteSpace(this.peekCodePoint(0))) {\n this.consumeCodePoint();\n }\n };\n\n Tokenizer.prototype.consumeBadUrlRemnants = function () {\n while (true) {\n var codePoint = this.consumeCodePoint();\n\n if (codePoint === RIGHT_PARENTHESIS || codePoint === EOF) {\n return;\n }\n\n if (isValidEscape(codePoint, this.peekCodePoint(0))) {\n this.consumeEscapedCodePoint();\n }\n }\n };\n\n Tokenizer.prototype.consumeStringSlice = function (count) {\n var SLICE_STACK_SIZE = 60000;\n var value = '';\n\n while (count > 0) {\n var amount = Math.min(SLICE_STACK_SIZE, count);\n value += fromCodePoint.apply(void 0, this._value.splice(0, amount));\n count -= amount;\n }\n\n this._value.shift();\n\n return value;\n };\n\n Tokenizer.prototype.consumeStringToken = function (endingCodePoint) {\n var value = '';\n var i = 0;\n\n do {\n var codePoint = this._value[i];\n\n if (codePoint === EOF || codePoint === undefined || codePoint === endingCodePoint) {\n value += this.consumeStringSlice(i);\n return {\n type: TokenType.STRING_TOKEN,\n value: value\n };\n }\n\n if (codePoint === LINE_FEED) {\n this._value.splice(0, i);\n\n return BAD_STRING_TOKEN;\n }\n\n if (codePoint === REVERSE_SOLIDUS) {\n var next = this._value[i + 1];\n\n if (next !== EOF && next !== undefined) {\n if (next === LINE_FEED) {\n value += this.consumeStringSlice(i);\n i = -1;\n\n this._value.shift();\n } else if (isValidEscape(codePoint, next)) {\n value += this.consumeStringSlice(i);\n value += fromCodePoint(this.consumeEscapedCodePoint());\n i = -1;\n }\n }\n }\n\n i++;\n } while (true);\n };\n\n Tokenizer.prototype.consumeNumber = function () {\n var repr = [];\n var type = FLAG_INTEGER;\n var c1 = this.peekCodePoint(0);\n\n if (c1 === PLUS_SIGN || c1 === HYPHEN_MINUS) {\n repr.push(this.consumeCodePoint());\n }\n\n while (isDigit(this.peekCodePoint(0))) {\n repr.push(this.consumeCodePoint());\n }\n\n c1 = this.peekCodePoint(0);\n var c2 = this.peekCodePoint(1);\n\n if (c1 === FULL_STOP && isDigit(c2)) {\n repr.push(this.consumeCodePoint(), this.consumeCodePoint());\n type = FLAG_NUMBER;\n\n while (isDigit(this.peekCodePoint(0))) {\n repr.push(this.consumeCodePoint());\n }\n }\n\n c1 = this.peekCodePoint(0);\n c2 = this.peekCodePoint(1);\n var c3 = this.peekCodePoint(2);\n\n if ((c1 === E || c1 === e) && ((c2 === PLUS_SIGN || c2 === HYPHEN_MINUS) && isDigit(c3) || isDigit(c2))) {\n repr.push(this.consumeCodePoint(), this.consumeCodePoint());\n type = FLAG_NUMBER;\n\n while (isDigit(this.peekCodePoint(0))) {\n repr.push(this.consumeCodePoint());\n }\n }\n\n return [stringToNumber(repr), type];\n };\n\n Tokenizer.prototype.consumeNumericToken = function () {\n var _a = this.consumeNumber(),\n number = _a[0],\n flags = _a[1];\n\n var c1 = this.peekCodePoint(0);\n var c2 = this.peekCodePoint(1);\n var c3 = this.peekCodePoint(2);\n\n if (isIdentifierStart(c1, c2, c3)) {\n var unit = this.consumeName();\n return {\n type: TokenType.DIMENSION_TOKEN,\n number: number,\n flags: flags,\n unit: unit\n };\n }\n\n if (c1 === PERCENTAGE_SIGN) {\n this.consumeCodePoint();\n return {\n type: TokenType.PERCENTAGE_TOKEN,\n number: number,\n flags: flags\n };\n }\n\n return {\n type: TokenType.NUMBER_TOKEN,\n number: number,\n flags: flags\n };\n };\n\n Tokenizer.prototype.consumeEscapedCodePoint = function () {\n var codePoint = this.consumeCodePoint();\n\n if (isHex(codePoint)) {\n var hex = fromCodePoint(codePoint);\n\n while (isHex(this.peekCodePoint(0)) && hex.length < 6) {\n hex += fromCodePoint(this.consumeCodePoint());\n }\n\n if (isWhiteSpace(this.peekCodePoint(0))) {\n this.consumeCodePoint();\n }\n\n var hexCodePoint = parseInt(hex, 16);\n\n if (hexCodePoint === 0 || isSurrogateCodePoint(hexCodePoint) || hexCodePoint > 0x10ffff) {\n return REPLACEMENT_CHARACTER;\n }\n\n return hexCodePoint;\n }\n\n if (codePoint === EOF) {\n return REPLACEMENT_CHARACTER;\n }\n\n return codePoint;\n };\n\n Tokenizer.prototype.consumeName = function () {\n var result = '';\n\n while (true) {\n var codePoint = this.consumeCodePoint();\n\n if (isNameCodePoint(codePoint)) {\n result += fromCodePoint(codePoint);\n } else if (isValidEscape(codePoint, this.peekCodePoint(0))) {\n result += fromCodePoint(this.consumeEscapedCodePoint());\n } else {\n this.reconsumeCodePoint(codePoint);\n return result;\n }\n }\n };\n\n return Tokenizer;\n }();\n\n var Parser =\n /** @class */\n function () {\n function Parser(tokens) {\n this._tokens = tokens;\n }\n\n Parser.create = function (value) {\n var tokenizer = new Tokenizer();\n tokenizer.write(value);\n return new Parser(tokenizer.read());\n };\n\n Parser.parseValue = function (value) {\n return Parser.create(value).parseComponentValue();\n };\n\n Parser.parseValues = function (value) {\n return Parser.create(value).parseComponentValues();\n };\n\n Parser.prototype.parseComponentValue = function () {\n var token = this.consumeToken();\n\n while (token.type === TokenType.WHITESPACE_TOKEN) {\n token = this.consumeToken();\n }\n\n if (token.type === TokenType.EOF_TOKEN) {\n throw new SyntaxError(\"Error parsing CSS component value, unexpected EOF\");\n }\n\n this.reconsumeToken(token);\n var value = this.consumeComponentValue();\n\n do {\n token = this.consumeToken();\n } while (token.type === TokenType.WHITESPACE_TOKEN);\n\n if (token.type === TokenType.EOF_TOKEN) {\n return value;\n }\n\n throw new SyntaxError(\"Error parsing CSS component value, multiple values found when expecting only one\");\n };\n\n Parser.prototype.parseComponentValues = function () {\n var values = [];\n\n while (true) {\n var value = this.consumeComponentValue();\n\n if (value.type === TokenType.EOF_TOKEN) {\n return values;\n }\n\n values.push(value);\n values.push();\n }\n };\n\n Parser.prototype.consumeComponentValue = function () {\n var token = this.consumeToken();\n\n switch (token.type) {\n case TokenType.LEFT_CURLY_BRACKET_TOKEN:\n case TokenType.LEFT_SQUARE_BRACKET_TOKEN:\n case TokenType.LEFT_PARENTHESIS_TOKEN:\n return this.consumeSimpleBlock(token.type);\n\n case TokenType.FUNCTION_TOKEN:\n return this.consumeFunction(token);\n }\n\n return token;\n };\n\n Parser.prototype.consumeSimpleBlock = function (type) {\n var block = {\n type: type,\n values: []\n };\n var token = this.consumeToken();\n\n while (true) {\n if (token.type === TokenType.EOF_TOKEN || isEndingTokenFor(token, type)) {\n return block;\n }\n\n this.reconsumeToken(token);\n block.values.push(this.consumeComponentValue());\n token = this.consumeToken();\n }\n };\n\n Parser.prototype.consumeFunction = function (functionToken) {\n var cssFunction = {\n name: functionToken.value,\n values: [],\n type: TokenType.FUNCTION\n };\n\n while (true) {\n var token = this.consumeToken();\n\n if (token.type === TokenType.EOF_TOKEN || token.type === TokenType.RIGHT_PARENTHESIS_TOKEN) {\n return cssFunction;\n }\n\n this.reconsumeToken(token);\n cssFunction.values.push(this.consumeComponentValue());\n }\n };\n\n Parser.prototype.consumeToken = function () {\n var token = this._tokens.shift();\n\n return typeof token === 'undefined' ? EOF_TOKEN : token;\n };\n\n Parser.prototype.reconsumeToken = function (token) {\n this._tokens.unshift(token);\n };\n\n return Parser;\n }();\n\n var isDimensionToken = function isDimensionToken(token) {\n return token.type === TokenType.DIMENSION_TOKEN;\n };\n\n var isNumberToken = function isNumberToken(token) {\n return token.type === TokenType.NUMBER_TOKEN;\n };\n\n var isIdentToken = function isIdentToken(token) {\n return token.type === TokenType.IDENT_TOKEN;\n };\n\n var isStringToken = function isStringToken(token) {\n return token.type === TokenType.STRING_TOKEN;\n };\n\n var isIdentWithValue = function isIdentWithValue(token, value) {\n return isIdentToken(token) && token.value === value;\n };\n\n var nonWhiteSpace = function nonWhiteSpace(token) {\n return token.type !== TokenType.WHITESPACE_TOKEN;\n };\n\n var nonFunctionArgSeparator = function nonFunctionArgSeparator(token) {\n return token.type !== TokenType.WHITESPACE_TOKEN && token.type !== TokenType.COMMA_TOKEN;\n };\n\n var parseFunctionArgs = function parseFunctionArgs(tokens) {\n var args = [];\n var arg = [];\n tokens.forEach(function (token) {\n if (token.type === TokenType.COMMA_TOKEN) {\n if (arg.length === 0) {\n throw new Error(\"Error parsing function args, zero tokens for arg\");\n }\n\n args.push(arg);\n arg = [];\n return;\n }\n\n if (token.type !== TokenType.WHITESPACE_TOKEN) {\n arg.push(token);\n }\n });\n\n if (arg.length) {\n args.push(arg);\n }\n\n return args;\n };\n\n var isEndingTokenFor = function isEndingTokenFor(token, type) {\n if (type === TokenType.LEFT_CURLY_BRACKET_TOKEN && token.type === TokenType.RIGHT_CURLY_BRACKET_TOKEN) {\n return true;\n }\n\n if (type === TokenType.LEFT_SQUARE_BRACKET_TOKEN && token.type === TokenType.RIGHT_SQUARE_BRACKET_TOKEN) {\n return true;\n }\n\n return type === TokenType.LEFT_PARENTHESIS_TOKEN && token.type === TokenType.RIGHT_PARENTHESIS_TOKEN;\n };\n\n var isLength = function isLength(token) {\n return token.type === TokenType.NUMBER_TOKEN || token.type === TokenType.DIMENSION_TOKEN;\n };\n\n var isLengthPercentage = function isLengthPercentage(token) {\n return token.type === TokenType.PERCENTAGE_TOKEN || isLength(token);\n };\n\n var parseLengthPercentageTuple = function parseLengthPercentageTuple(tokens) {\n return tokens.length > 1 ? [tokens[0], tokens[1]] : [tokens[0]];\n };\n\n var ZERO_LENGTH = {\n type: TokenType.NUMBER_TOKEN,\n number: 0,\n flags: FLAG_INTEGER\n };\n var FIFTY_PERCENT = {\n type: TokenType.PERCENTAGE_TOKEN,\n number: 50,\n flags: FLAG_INTEGER\n };\n var HUNDRED_PERCENT = {\n type: TokenType.PERCENTAGE_TOKEN,\n number: 100,\n flags: FLAG_INTEGER\n };\n\n var getAbsoluteValueForTuple = function getAbsoluteValueForTuple(tuple, width, height) {\n var x = tuple[0],\n y = tuple[1];\n return [getAbsoluteValue(x, width), getAbsoluteValue(typeof y !== 'undefined' ? y : x, height)];\n };\n\n var getAbsoluteValue = function getAbsoluteValue(token, parent) {\n if (token.type === TokenType.PERCENTAGE_TOKEN) {\n return token.number / 100 * parent;\n }\n\n if (isDimensionToken(token)) {\n switch (token.unit) {\n case 'rem':\n case 'em':\n return 16 * token.number;\n // TODO use correct font-size\n\n case 'px':\n default:\n return token.number;\n }\n }\n\n return token.number;\n };\n\n var DEG = 'deg';\n var GRAD = 'grad';\n var RAD = 'rad';\n var TURN = 'turn';\n var angle = {\n name: 'angle',\n parse: function parse(value) {\n if (value.type === TokenType.DIMENSION_TOKEN) {\n switch (value.unit) {\n case DEG:\n return Math.PI * value.number / 180;\n\n case GRAD:\n return Math.PI / 200 * value.number;\n\n case RAD:\n return value.number;\n\n case TURN:\n return Math.PI * 2 * value.number;\n }\n }\n\n throw new Error(\"Unsupported angle type\");\n }\n };\n\n var isAngle = function isAngle(value) {\n if (value.type === TokenType.DIMENSION_TOKEN) {\n if (value.unit === DEG || value.unit === GRAD || value.unit === RAD || value.unit === TURN) {\n return true;\n }\n }\n\n return false;\n };\n\n var parseNamedSide = function parseNamedSide(tokens) {\n var sideOrCorner = tokens.filter(isIdentToken).map(function (ident) {\n return ident.value;\n }).join(' ');\n\n switch (sideOrCorner) {\n case 'to bottom right':\n case 'to right bottom':\n case 'left top':\n case 'top left':\n return [ZERO_LENGTH, ZERO_LENGTH];\n\n case 'to top':\n case 'bottom':\n return deg(0);\n\n case 'to bottom left':\n case 'to left bottom':\n case 'right top':\n case 'top right':\n return [ZERO_LENGTH, HUNDRED_PERCENT];\n\n case 'to right':\n case 'left':\n return deg(90);\n\n case 'to top left':\n case 'to left top':\n case 'right bottom':\n case 'bottom right':\n return [HUNDRED_PERCENT, HUNDRED_PERCENT];\n\n case 'to bottom':\n case 'top':\n return deg(180);\n\n case 'to top right':\n case 'to right top':\n case 'left bottom':\n case 'bottom left':\n return [HUNDRED_PERCENT, ZERO_LENGTH];\n\n case 'to left':\n case 'right':\n return deg(270);\n }\n\n return 0;\n };\n\n var deg = function deg(_deg) {\n return Math.PI * _deg / 180;\n };\n\n var color = {\n name: 'color',\n parse: function parse(value) {\n if (value.type === TokenType.FUNCTION) {\n var colorFunction = SUPPORTED_COLOR_FUNCTIONS[value.name];\n\n if (typeof colorFunction === 'undefined') {\n throw new Error(\"Attempting to parse an unsupported color function \\\"\" + value.name + \"\\\"\");\n }\n\n return colorFunction(value.values);\n }\n\n if (value.type === TokenType.HASH_TOKEN) {\n if (value.value.length === 3) {\n var r = value.value.substring(0, 1);\n var g = value.value.substring(1, 2);\n var b = value.value.substring(2, 3);\n return pack(parseInt(r + r, 16), parseInt(g + g, 16), parseInt(b + b, 16), 1);\n }\n\n if (value.value.length === 4) {\n var r = value.value.substring(0, 1);\n var g = value.value.substring(1, 2);\n var b = value.value.substring(2, 3);\n var a = value.value.substring(3, 4);\n return pack(parseInt(r + r, 16), parseInt(g + g, 16), parseInt(b + b, 16), parseInt(a + a, 16) / 255);\n }\n\n if (value.value.length === 6) {\n var r = value.value.substring(0, 2);\n var g = value.value.substring(2, 4);\n var b = value.value.substring(4, 6);\n return pack(parseInt(r, 16), parseInt(g, 16), parseInt(b, 16), 1);\n }\n\n if (value.value.length === 8) {\n var r = value.value.substring(0, 2);\n var g = value.value.substring(2, 4);\n var b = value.value.substring(4, 6);\n var a = value.value.substring(6, 8);\n return pack(parseInt(r, 16), parseInt(g, 16), parseInt(b, 16), parseInt(a, 16) / 255);\n }\n }\n\n if (value.type === TokenType.IDENT_TOKEN) {\n var namedColor = COLORS[value.value.toUpperCase()];\n\n if (typeof namedColor !== 'undefined') {\n return namedColor;\n }\n }\n\n return COLORS.TRANSPARENT;\n }\n };\n\n var isTransparent = function isTransparent(color) {\n return (0xff & color) === 0;\n };\n\n var asString = function asString(color) {\n var alpha = 0xff & color;\n var blue = 0xff & color >> 8;\n var green = 0xff & color >> 16;\n var red = 0xff & color >> 24;\n return alpha < 255 ? \"rgba(\" + red + \",\" + green + \",\" + blue + \",\" + alpha / 255 + \")\" : \"rgb(\" + red + \",\" + green + \",\" + blue + \")\";\n };\n\n var pack = function pack(r, g, b, a) {\n return (r << 24 | g << 16 | b << 8 | Math.round(a * 255) << 0) >>> 0;\n };\n\n var getTokenColorValue = function getTokenColorValue(token, i) {\n if (token.type === TokenType.NUMBER_TOKEN) {\n return token.number;\n }\n\n if (token.type === TokenType.PERCENTAGE_TOKEN) {\n var max = i === 3 ? 1 : 255;\n return i === 3 ? token.number / 100 * max : Math.round(token.number / 100 * max);\n }\n\n return 0;\n };\n\n var rgb = function rgb(args) {\n var tokens = args.filter(nonFunctionArgSeparator);\n\n if (tokens.length === 3) {\n var _a = tokens.map(getTokenColorValue),\n r = _a[0],\n g = _a[1],\n b = _a[2];\n\n return pack(r, g, b, 1);\n }\n\n if (tokens.length === 4) {\n var _b = tokens.map(getTokenColorValue),\n r = _b[0],\n g = _b[1],\n b = _b[2],\n a = _b[3];\n\n return pack(r, g, b, a);\n }\n\n return 0;\n };\n\n function hue2rgb(t1, t2, hue) {\n if (hue < 0) {\n hue += 1;\n }\n\n if (hue >= 1) {\n hue -= 1;\n }\n\n if (hue < 1 / 6) {\n return (t2 - t1) * hue * 6 + t1;\n } else if (hue < 1 / 2) {\n return t2;\n } else if (hue < 2 / 3) {\n return (t2 - t1) * 6 * (2 / 3 - hue) + t1;\n } else {\n return t1;\n }\n }\n\n var hsl = function hsl(args) {\n var tokens = args.filter(nonFunctionArgSeparator);\n var hue = tokens[0],\n saturation = tokens[1],\n lightness = tokens[2],\n alpha = tokens[3];\n var h = (hue.type === TokenType.NUMBER_TOKEN ? deg(hue.number) : angle.parse(hue)) / (Math.PI * 2);\n var s = isLengthPercentage(saturation) ? saturation.number / 100 : 0;\n var l = isLengthPercentage(lightness) ? lightness.number / 100 : 0;\n var a = typeof alpha !== 'undefined' && isLengthPercentage(alpha) ? getAbsoluteValue(alpha, 1) : 1;\n\n if (s === 0) {\n return pack(l * 255, l * 255, l * 255, 1);\n }\n\n var t2 = l <= 0.5 ? l * (s + 1) : l + s - l * s;\n var t1 = l * 2 - t2;\n var r = hue2rgb(t1, t2, h + 1 / 3);\n var g = hue2rgb(t1, t2, h);\n var b = hue2rgb(t1, t2, h - 1 / 3);\n return pack(r * 255, g * 255, b * 255, a);\n };\n\n var SUPPORTED_COLOR_FUNCTIONS = {\n hsl: hsl,\n hsla: hsl,\n rgb: rgb,\n rgba: rgb\n };\n var COLORS = {\n ALICEBLUE: 0xf0f8ffff,\n ANTIQUEWHITE: 0xfaebd7ff,\n AQUA: 0x00ffffff,\n AQUAMARINE: 0x7fffd4ff,\n AZURE: 0xf0ffffff,\n BEIGE: 0xf5f5dcff,\n BISQUE: 0xffe4c4ff,\n BLACK: 0x000000ff,\n BLANCHEDALMOND: 0xffebcdff,\n BLUE: 0x0000ffff,\n BLUEVIOLET: 0x8a2be2ff,\n BROWN: 0xa52a2aff,\n BURLYWOOD: 0xdeb887ff,\n CADETBLUE: 0x5f9ea0ff,\n CHARTREUSE: 0x7fff00ff,\n CHOCOLATE: 0xd2691eff,\n CORAL: 0xff7f50ff,\n CORNFLOWERBLUE: 0x6495edff,\n CORNSILK: 0xfff8dcff,\n CRIMSON: 0xdc143cff,\n CYAN: 0x00ffffff,\n DARKBLUE: 0x00008bff,\n DARKCYAN: 0x008b8bff,\n DARKGOLDENROD: 0xb886bbff,\n DARKGRAY: 0xa9a9a9ff,\n DARKGREEN: 0x006400ff,\n DARKGREY: 0xa9a9a9ff,\n DARKKHAKI: 0xbdb76bff,\n DARKMAGENTA: 0x8b008bff,\n DARKOLIVEGREEN: 0x556b2fff,\n DARKORANGE: 0xff8c00ff,\n DARKORCHID: 0x9932ccff,\n DARKRED: 0x8b0000ff,\n DARKSALMON: 0xe9967aff,\n DARKSEAGREEN: 0x8fbc8fff,\n DARKSLATEBLUE: 0x483d8bff,\n DARKSLATEGRAY: 0x2f4f4fff,\n DARKSLATEGREY: 0x2f4f4fff,\n DARKTURQUOISE: 0x00ced1ff,\n DARKVIOLET: 0x9400d3ff,\n DEEPPINK: 0xff1493ff,\n DEEPSKYBLUE: 0x00bfffff,\n DIMGRAY: 0x696969ff,\n DIMGREY: 0x696969ff,\n DODGERBLUE: 0x1e90ffff,\n FIREBRICK: 0xb22222ff,\n FLORALWHITE: 0xfffaf0ff,\n FORESTGREEN: 0x228b22ff,\n FUCHSIA: 0xff00ffff,\n GAINSBORO: 0xdcdcdcff,\n GHOSTWHITE: 0xf8f8ffff,\n GOLD: 0xffd700ff,\n GOLDENROD: 0xdaa520ff,\n GRAY: 0x808080ff,\n GREEN: 0x008000ff,\n GREENYELLOW: 0xadff2fff,\n GREY: 0x808080ff,\n HONEYDEW: 0xf0fff0ff,\n HOTPINK: 0xff69b4ff,\n INDIANRED: 0xcd5c5cff,\n INDIGO: 0x4b0082ff,\n IVORY: 0xfffff0ff,\n KHAKI: 0xf0e68cff,\n LAVENDER: 0xe6e6faff,\n LAVENDERBLUSH: 0xfff0f5ff,\n LAWNGREEN: 0x7cfc00ff,\n LEMONCHIFFON: 0xfffacdff,\n LIGHTBLUE: 0xadd8e6ff,\n LIGHTCORAL: 0xf08080ff,\n LIGHTCYAN: 0xe0ffffff,\n LIGHTGOLDENRODYELLOW: 0xfafad2ff,\n LIGHTGRAY: 0xd3d3d3ff,\n LIGHTGREEN: 0x90ee90ff,\n LIGHTGREY: 0xd3d3d3ff,\n LIGHTPINK: 0xffb6c1ff,\n LIGHTSALMON: 0xffa07aff,\n LIGHTSEAGREEN: 0x20b2aaff,\n LIGHTSKYBLUE: 0x87cefaff,\n LIGHTSLATEGRAY: 0x778899ff,\n LIGHTSLATEGREY: 0x778899ff,\n LIGHTSTEELBLUE: 0xb0c4deff,\n LIGHTYELLOW: 0xffffe0ff,\n LIME: 0x00ff00ff,\n LIMEGREEN: 0x32cd32ff,\n LINEN: 0xfaf0e6ff,\n MAGENTA: 0xff00ffff,\n MAROON: 0x800000ff,\n MEDIUMAQUAMARINE: 0x66cdaaff,\n MEDIUMBLUE: 0x0000cdff,\n MEDIUMORCHID: 0xba55d3ff,\n MEDIUMPURPLE: 0x9370dbff,\n MEDIUMSEAGREEN: 0x3cb371ff,\n MEDIUMSLATEBLUE: 0x7b68eeff,\n MEDIUMSPRINGGREEN: 0x00fa9aff,\n MEDIUMTURQUOISE: 0x48d1ccff,\n MEDIUMVIOLETRED: 0xc71585ff,\n MIDNIGHTBLUE: 0x191970ff,\n MINTCREAM: 0xf5fffaff,\n MISTYROSE: 0xffe4e1ff,\n MOCCASIN: 0xffe4b5ff,\n NAVAJOWHITE: 0xffdeadff,\n NAVY: 0x000080ff,\n OLDLACE: 0xfdf5e6ff,\n OLIVE: 0x808000ff,\n OLIVEDRAB: 0x6b8e23ff,\n ORANGE: 0xffa500ff,\n ORANGERED: 0xff4500ff,\n ORCHID: 0xda70d6ff,\n PALEGOLDENROD: 0xeee8aaff,\n PALEGREEN: 0x98fb98ff,\n PALETURQUOISE: 0xafeeeeff,\n PALEVIOLETRED: 0xdb7093ff,\n PAPAYAWHIP: 0xffefd5ff,\n PEACHPUFF: 0xffdab9ff,\n PERU: 0xcd853fff,\n PINK: 0xffc0cbff,\n PLUM: 0xdda0ddff,\n POWDERBLUE: 0xb0e0e6ff,\n PURPLE: 0x800080ff,\n REBECCAPURPLE: 0x663399ff,\n RED: 0xff0000ff,\n ROSYBROWN: 0xbc8f8fff,\n ROYALBLUE: 0x4169e1ff,\n SADDLEBROWN: 0x8b4513ff,\n SALMON: 0xfa8072ff,\n SANDYBROWN: 0xf4a460ff,\n SEAGREEN: 0x2e8b57ff,\n SEASHELL: 0xfff5eeff,\n SIENNA: 0xa0522dff,\n SILVER: 0xc0c0c0ff,\n SKYBLUE: 0x87ceebff,\n SLATEBLUE: 0x6a5acdff,\n SLATEGRAY: 0x708090ff,\n SLATEGREY: 0x708090ff,\n SNOW: 0xfffafaff,\n SPRINGGREEN: 0x00ff7fff,\n STEELBLUE: 0x4682b4ff,\n TAN: 0xd2b48cff,\n TEAL: 0x008080ff,\n THISTLE: 0xd8bfd8ff,\n TOMATO: 0xff6347ff,\n TRANSPARENT: 0x00000000,\n TURQUOISE: 0x40e0d0ff,\n VIOLET: 0xee82eeff,\n WHEAT: 0xf5deb3ff,\n WHITE: 0xffffffff,\n WHITESMOKE: 0xf5f5f5ff,\n YELLOW: 0xffff00ff,\n YELLOWGREEN: 0x9acd32ff\n };\n var PropertyDescriptorParsingType;\n\n (function (PropertyDescriptorParsingType) {\n PropertyDescriptorParsingType[PropertyDescriptorParsingType[\"VALUE\"] = 0] = \"VALUE\";\n PropertyDescriptorParsingType[PropertyDescriptorParsingType[\"LIST\"] = 1] = \"LIST\";\n PropertyDescriptorParsingType[PropertyDescriptorParsingType[\"IDENT_VALUE\"] = 2] = \"IDENT_VALUE\";\n PropertyDescriptorParsingType[PropertyDescriptorParsingType[\"TYPE_VALUE\"] = 3] = \"TYPE_VALUE\";\n PropertyDescriptorParsingType[PropertyDescriptorParsingType[\"TOKEN_VALUE\"] = 4] = \"TOKEN_VALUE\";\n })(PropertyDescriptorParsingType || (PropertyDescriptorParsingType = {}));\n\n var BACKGROUND_CLIP;\n\n (function (BACKGROUND_CLIP) {\n BACKGROUND_CLIP[BACKGROUND_CLIP[\"BORDER_BOX\"] = 0] = \"BORDER_BOX\";\n BACKGROUND_CLIP[BACKGROUND_CLIP[\"PADDING_BOX\"] = 1] = \"PADDING_BOX\";\n BACKGROUND_CLIP[BACKGROUND_CLIP[\"CONTENT_BOX\"] = 2] = \"CONTENT_BOX\";\n })(BACKGROUND_CLIP || (BACKGROUND_CLIP = {}));\n\n var backgroundClip = {\n name: 'background-clip',\n initialValue: 'border-box',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: function parse(tokens) {\n return tokens.map(function (token) {\n if (isIdentToken(token)) {\n switch (token.value) {\n case 'padding-box':\n return BACKGROUND_CLIP.PADDING_BOX;\n\n case 'content-box':\n return BACKGROUND_CLIP.CONTENT_BOX;\n }\n }\n\n return BACKGROUND_CLIP.BORDER_BOX;\n });\n }\n };\n var backgroundColor = {\n name: \"background-color\",\n initialValue: 'transparent',\n prefix: false,\n type: PropertyDescriptorParsingType.TYPE_VALUE,\n format: 'color'\n };\n\n var parseColorStop = function parseColorStop(args) {\n var color$1 = color.parse(args[0]);\n var stop = args[1];\n return stop && isLengthPercentage(stop) ? {\n color: color$1,\n stop: stop\n } : {\n color: color$1,\n stop: null\n };\n };\n\n var processColorStops = function processColorStops(stops, lineLength) {\n var first = stops[0];\n var last = stops[stops.length - 1];\n\n if (first.stop === null) {\n first.stop = ZERO_LENGTH;\n }\n\n if (last.stop === null) {\n last.stop = HUNDRED_PERCENT;\n }\n\n var processStops = [];\n var previous = 0;\n\n for (var i = 0; i < stops.length; i++) {\n var stop_1 = stops[i].stop;\n\n if (stop_1 !== null) {\n var absoluteValue = getAbsoluteValue(stop_1, lineLength);\n\n if (absoluteValue > previous) {\n processStops.push(absoluteValue);\n } else {\n processStops.push(previous);\n }\n\n previous = absoluteValue;\n } else {\n processStops.push(null);\n }\n }\n\n var gapBegin = null;\n\n for (var i = 0; i < processStops.length; i++) {\n var stop_2 = processStops[i];\n\n if (stop_2 === null) {\n if (gapBegin === null) {\n gapBegin = i;\n }\n } else if (gapBegin !== null) {\n var gapLength = i - gapBegin;\n var beforeGap = processStops[gapBegin - 1];\n var gapValue = (stop_2 - beforeGap) / (gapLength + 1);\n\n for (var g = 1; g <= gapLength; g++) {\n processStops[gapBegin + g - 1] = gapValue * g;\n }\n\n gapBegin = null;\n }\n }\n\n return stops.map(function (_a, i) {\n var color = _a.color;\n return {\n color: color,\n stop: Math.max(Math.min(1, processStops[i] / lineLength), 0)\n };\n });\n };\n\n var getAngleFromCorner = function getAngleFromCorner(corner, width, height) {\n var centerX = width / 2;\n var centerY = height / 2;\n var x = getAbsoluteValue(corner[0], width) - centerX;\n var y = centerY - getAbsoluteValue(corner[1], height);\n return (Math.atan2(y, x) + Math.PI * 2) % (Math.PI * 2);\n };\n\n var calculateGradientDirection = function calculateGradientDirection(angle, width, height) {\n var radian = typeof angle === 'number' ? angle : getAngleFromCorner(angle, width, height);\n var lineLength = Math.abs(width * Math.sin(radian)) + Math.abs(height * Math.cos(radian));\n var halfWidth = width / 2;\n var halfHeight = height / 2;\n var halfLineLength = lineLength / 2;\n var yDiff = Math.sin(radian - Math.PI / 2) * halfLineLength;\n var xDiff = Math.cos(radian - Math.PI / 2) * halfLineLength;\n return [lineLength, halfWidth - xDiff, halfWidth + xDiff, halfHeight - yDiff, halfHeight + yDiff];\n };\n\n var distance = function distance(a, b) {\n return Math.sqrt(a * a + b * b);\n };\n\n var findCorner = function findCorner(width, height, x, y, closest) {\n var corners = [[0, 0], [0, height], [width, 0], [width, height]];\n return corners.reduce(function (stat, corner) {\n var cx = corner[0],\n cy = corner[1];\n var d = distance(x - cx, y - cy);\n\n if (closest ? d < stat.optimumDistance : d > stat.optimumDistance) {\n return {\n optimumCorner: corner,\n optimumDistance: d\n };\n }\n\n return stat;\n }, {\n optimumDistance: closest ? Infinity : -Infinity,\n optimumCorner: null\n }).optimumCorner;\n };\n\n var calculateRadius = function calculateRadius(gradient, x, y, width, height) {\n var rx = 0;\n var ry = 0;\n\n switch (gradient.size) {\n case CSSRadialExtent.CLOSEST_SIDE:\n // The ending shape is sized so that that it exactly meets the side of the gradient box closest to the gradient’s center.\n // If the shape is an ellipse, it exactly meets the closest side in each dimension.\n if (gradient.shape === CSSRadialShape.CIRCLE) {\n rx = ry = Math.min(Math.abs(x), Math.abs(x - width), Math.abs(y), Math.abs(y - height));\n } else if (gradient.shape === CSSRadialShape.ELLIPSE) {\n rx = Math.min(Math.abs(x), Math.abs(x - width));\n ry = Math.min(Math.abs(y), Math.abs(y - height));\n }\n\n break;\n\n case CSSRadialExtent.CLOSEST_CORNER:\n // The ending shape is sized so that that it passes through the corner of the gradient box closest to the gradient’s center.\n // If the shape is an ellipse, the ending shape is given the same aspect-ratio it would have if closest-side were specified.\n if (gradient.shape === CSSRadialShape.CIRCLE) {\n rx = ry = Math.min(distance(x, y), distance(x, y - height), distance(x - width, y), distance(x - width, y - height));\n } else if (gradient.shape === CSSRadialShape.ELLIPSE) {\n // Compute the ratio ry/rx (which is to be the same as for \"closest-side\")\n var c = Math.min(Math.abs(y), Math.abs(y - height)) / Math.min(Math.abs(x), Math.abs(x - width));\n\n var _a = findCorner(width, height, x, y, true),\n cx = _a[0],\n cy = _a[1];\n\n rx = distance(cx - x, (cy - y) / c);\n ry = c * rx;\n }\n\n break;\n\n case CSSRadialExtent.FARTHEST_SIDE:\n // Same as closest-side, except the ending shape is sized based on the farthest side(s)\n if (gradient.shape === CSSRadialShape.CIRCLE) {\n rx = ry = Math.max(Math.abs(x), Math.abs(x - width), Math.abs(y), Math.abs(y - height));\n } else if (gradient.shape === CSSRadialShape.ELLIPSE) {\n rx = Math.max(Math.abs(x), Math.abs(x - width));\n ry = Math.max(Math.abs(y), Math.abs(y - height));\n }\n\n break;\n\n case CSSRadialExtent.FARTHEST_CORNER:\n // Same as closest-corner, except the ending shape is sized based on the farthest corner.\n // If the shape is an ellipse, the ending shape is given the same aspect ratio it would have if farthest-side were specified.\n if (gradient.shape === CSSRadialShape.CIRCLE) {\n rx = ry = Math.max(distance(x, y), distance(x, y - height), distance(x - width, y), distance(x - width, y - height));\n } else if (gradient.shape === CSSRadialShape.ELLIPSE) {\n // Compute the ratio ry/rx (which is to be the same as for \"farthest-side\")\n var c = Math.max(Math.abs(y), Math.abs(y - height)) / Math.max(Math.abs(x), Math.abs(x - width));\n\n var _b = findCorner(width, height, x, y, false),\n cx = _b[0],\n cy = _b[1];\n\n rx = distance(cx - x, (cy - y) / c);\n ry = c * rx;\n }\n\n break;\n }\n\n if (Array.isArray(gradient.size)) {\n rx = getAbsoluteValue(gradient.size[0], width);\n ry = gradient.size.length === 2 ? getAbsoluteValue(gradient.size[1], height) : rx;\n }\n\n return [rx, ry];\n };\n\n var linearGradient = function linearGradient(tokens) {\n var angle$1 = deg(180);\n var stops = [];\n parseFunctionArgs(tokens).forEach(function (arg, i) {\n if (i === 0) {\n var firstToken = arg[0];\n\n if (firstToken.type === TokenType.IDENT_TOKEN && firstToken.value === 'to') {\n angle$1 = parseNamedSide(arg);\n return;\n } else if (isAngle(firstToken)) {\n angle$1 = angle.parse(firstToken);\n return;\n }\n }\n\n var colorStop = parseColorStop(arg);\n stops.push(colorStop);\n });\n return {\n angle: angle$1,\n stops: stops,\n type: CSSImageType.LINEAR_GRADIENT\n };\n };\n\n var prefixLinearGradient = function prefixLinearGradient(tokens) {\n var angle$1 = deg(180);\n var stops = [];\n parseFunctionArgs(tokens).forEach(function (arg, i) {\n if (i === 0) {\n var firstToken = arg[0];\n\n if (firstToken.type === TokenType.IDENT_TOKEN && ['top', 'left', 'right', 'bottom'].indexOf(firstToken.value) !== -1) {\n angle$1 = parseNamedSide(arg);\n return;\n } else if (isAngle(firstToken)) {\n angle$1 = (angle.parse(firstToken) + deg(270)) % deg(360);\n return;\n }\n }\n\n var colorStop = parseColorStop(arg);\n stops.push(colorStop);\n });\n return {\n angle: angle$1,\n stops: stops,\n type: CSSImageType.LINEAR_GRADIENT\n };\n };\n\n var testRangeBounds = function testRangeBounds(document) {\n var TEST_HEIGHT = 123;\n\n if (document.createRange) {\n var range = document.createRange();\n\n if (range.getBoundingClientRect) {\n var testElement = document.createElement('boundtest');\n testElement.style.height = TEST_HEIGHT + \"px\";\n testElement.style.display = 'block';\n document.body.appendChild(testElement);\n range.selectNode(testElement);\n var rangeBounds = range.getBoundingClientRect();\n var rangeHeight = Math.round(rangeBounds.height);\n document.body.removeChild(testElement);\n\n if (rangeHeight === TEST_HEIGHT) {\n return true;\n }\n }\n }\n\n return false;\n };\n\n var testCORS = function testCORS() {\n return typeof new Image().crossOrigin !== 'undefined';\n };\n\n var testResponseType = function testResponseType() {\n return typeof new XMLHttpRequest().responseType === 'string';\n };\n\n var testSVG = function testSVG(document) {\n var img = new Image();\n var canvas = document.createElement('canvas');\n var ctx = canvas.getContext('2d');\n\n if (!ctx) {\n return false;\n }\n\n img.src = \"data:image/svg+xml,\";\n\n try {\n ctx.drawImage(img, 0, 0);\n canvas.toDataURL();\n } catch (e) {\n return false;\n }\n\n return true;\n };\n\n var isGreenPixel = function isGreenPixel(data) {\n return data[0] === 0 && data[1] === 255 && data[2] === 0 && data[3] === 255;\n };\n\n var testForeignObject = function testForeignObject(document) {\n var canvas = document.createElement('canvas');\n var size = 100;\n canvas.width = size;\n canvas.height = size;\n var ctx = canvas.getContext('2d');\n\n if (!ctx) {\n return Promise.reject(false);\n }\n\n ctx.fillStyle = 'rgb(0, 255, 0)';\n ctx.fillRect(0, 0, size, size);\n var img = new Image();\n var greenImageSrc = canvas.toDataURL();\n img.src = greenImageSrc;\n var svg = createForeignObjectSVG(size, size, 0, 0, img);\n ctx.fillStyle = 'red';\n ctx.fillRect(0, 0, size, size);\n return loadSerializedSVG(svg).then(function (img) {\n ctx.drawImage(img, 0, 0);\n var data = ctx.getImageData(0, 0, size, size).data;\n ctx.fillStyle = 'red';\n ctx.fillRect(0, 0, size, size);\n var node = document.createElement('div');\n node.style.backgroundImage = \"url(\" + greenImageSrc + \")\";\n node.style.height = size + \"px\"; // Firefox 55 does not render inline tags\n\n return isGreenPixel(data) ? loadSerializedSVG(createForeignObjectSVG(size, size, 0, 0, node)) : Promise.reject(false);\n }).then(function (img) {\n ctx.drawImage(img, 0, 0); // Edge does not render background-images\n\n return isGreenPixel(ctx.getImageData(0, 0, size, size).data);\n }).catch(function () {\n return false;\n });\n };\n\n var createForeignObjectSVG = function createForeignObjectSVG(width, height, x, y, node) {\n var xmlns = 'http://www.w3.org/2000/svg';\n var svg = document.createElementNS(xmlns, 'svg');\n var foreignObject = document.createElementNS(xmlns, 'foreignObject');\n svg.setAttributeNS(null, 'width', width.toString());\n svg.setAttributeNS(null, 'height', height.toString());\n foreignObject.setAttributeNS(null, 'width', '100%');\n foreignObject.setAttributeNS(null, 'height', '100%');\n foreignObject.setAttributeNS(null, 'x', x.toString());\n foreignObject.setAttributeNS(null, 'y', y.toString());\n foreignObject.setAttributeNS(null, 'externalResourcesRequired', 'true');\n svg.appendChild(foreignObject);\n foreignObject.appendChild(node);\n return svg;\n };\n\n var loadSerializedSVG = function loadSerializedSVG(svg) {\n return new Promise(function (resolve, reject) {\n var img = new Image();\n\n img.onload = function () {\n return resolve(img);\n };\n\n img.onerror = reject;\n img.src = \"data:image/svg+xml;charset=utf-8,\" + encodeURIComponent(new XMLSerializer().serializeToString(svg));\n });\n };\n\n var FEATURES = {\n get SUPPORT_RANGE_BOUNDS() {\n var value = testRangeBounds(document);\n Object.defineProperty(FEATURES, 'SUPPORT_RANGE_BOUNDS', {\n value: value\n });\n return value;\n },\n\n get SUPPORT_SVG_DRAWING() {\n var value = testSVG(document);\n Object.defineProperty(FEATURES, 'SUPPORT_SVG_DRAWING', {\n value: value\n });\n return value;\n },\n\n get SUPPORT_FOREIGNOBJECT_DRAWING() {\n var value = typeof Array.from === 'function' && typeof window.fetch === 'function' ? testForeignObject(document) : Promise.resolve(false);\n Object.defineProperty(FEATURES, 'SUPPORT_FOREIGNOBJECT_DRAWING', {\n value: value\n });\n return value;\n },\n\n get SUPPORT_CORS_IMAGES() {\n var value = testCORS();\n Object.defineProperty(FEATURES, 'SUPPORT_CORS_IMAGES', {\n value: value\n });\n return value;\n },\n\n get SUPPORT_RESPONSE_TYPE() {\n var value = testResponseType();\n Object.defineProperty(FEATURES, 'SUPPORT_RESPONSE_TYPE', {\n value: value\n });\n return value;\n },\n\n get SUPPORT_CORS_XHR() {\n var value = 'withCredentials' in new XMLHttpRequest();\n Object.defineProperty(FEATURES, 'SUPPORT_CORS_XHR', {\n value: value\n });\n return value;\n }\n\n };\n\n var Logger =\n /** @class */\n function () {\n function Logger(_a) {\n var id = _a.id,\n enabled = _a.enabled;\n this.id = id;\n this.enabled = enabled;\n this.start = Date.now();\n } // eslint-disable-next-line @typescript-eslint/no-explicit-any\n\n\n Logger.prototype.debug = function () {\n var args = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n\n if (this.enabled) {\n // eslint-disable-next-line no-console\n if (typeof window !== 'undefined' && window.console && typeof console.debug === 'function') {\n // eslint-disable-next-line no-console\n console.debug.apply(console, [this.id, this.getTime() + \"ms\"].concat(args));\n } else {\n this.info.apply(this, args);\n }\n }\n };\n\n Logger.prototype.getTime = function () {\n return Date.now() - this.start;\n };\n\n Logger.create = function (options) {\n Logger.instances[options.id] = new Logger(options);\n };\n\n Logger.destroy = function (id) {\n delete Logger.instances[id];\n };\n\n Logger.getInstance = function (id) {\n var instance = Logger.instances[id];\n\n if (typeof instance === 'undefined') {\n throw new Error(\"No logger instance found with id \" + id);\n }\n\n return instance;\n }; // eslint-disable-next-line @typescript-eslint/no-explicit-any\n\n\n Logger.prototype.info = function () {\n var args = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n\n if (this.enabled) {\n // eslint-disable-next-line no-console\n if (typeof window !== 'undefined' && window.console && typeof console.info === 'function') {\n // eslint-disable-next-line no-console\n console.info.apply(console, [this.id, this.getTime() + \"ms\"].concat(args));\n }\n }\n }; // eslint-disable-next-line @typescript-eslint/no-explicit-any\n\n\n Logger.prototype.error = function () {\n var args = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n\n if (this.enabled) {\n // eslint-disable-next-line no-console\n if (typeof window !== 'undefined' && window.console && typeof console.error === 'function') {\n // eslint-disable-next-line no-console\n console.error.apply(console, [this.id, this.getTime() + \"ms\"].concat(args));\n } else {\n this.info.apply(this, args);\n }\n }\n };\n\n Logger.instances = {};\n return Logger;\n }();\n\n var CacheStorage =\n /** @class */\n function () {\n function CacheStorage() {}\n\n CacheStorage.create = function (name, options) {\n return CacheStorage._caches[name] = new Cache(name, options);\n };\n\n CacheStorage.destroy = function (name) {\n delete CacheStorage._caches[name];\n };\n\n CacheStorage.open = function (name) {\n var cache = CacheStorage._caches[name];\n\n if (typeof cache !== 'undefined') {\n return cache;\n }\n\n throw new Error(\"Cache with key \\\"\" + name + \"\\\" not found\");\n };\n\n CacheStorage.getOrigin = function (url) {\n var link = CacheStorage._link;\n\n if (!link) {\n return 'about:blank';\n }\n\n link.href = url;\n link.href = link.href; // IE9, LOL! - http://jsfiddle.net/niklasvh/2e48b/\n\n return link.protocol + link.hostname + link.port;\n };\n\n CacheStorage.isSameOrigin = function (src) {\n return CacheStorage.getOrigin(src) === CacheStorage._origin;\n };\n\n CacheStorage.setContext = function (window) {\n CacheStorage._link = window.document.createElement('a');\n CacheStorage._origin = CacheStorage.getOrigin(window.location.href);\n };\n\n CacheStorage.getInstance = function () {\n var current = CacheStorage._current;\n\n if (current === null) {\n throw new Error(\"No cache instance attached\");\n }\n\n return current;\n };\n\n CacheStorage.attachInstance = function (cache) {\n CacheStorage._current = cache;\n };\n\n CacheStorage.detachInstance = function () {\n CacheStorage._current = null;\n };\n\n CacheStorage._caches = {};\n CacheStorage._origin = 'about:blank';\n CacheStorage._current = null;\n return CacheStorage;\n }();\n\n var Cache =\n /** @class */\n function () {\n function Cache(id, options) {\n this.id = id;\n this._options = options;\n this._cache = {};\n }\n\n Cache.prototype.addImage = function (src) {\n var result = Promise.resolve();\n\n if (this.has(src)) {\n return result;\n }\n\n if (isBlobImage(src) || isRenderable(src)) {\n this._cache[src] = this.loadImage(src);\n return result;\n }\n\n return result;\n }; // eslint-disable-next-line @typescript-eslint/no-explicit-any\n\n\n Cache.prototype.match = function (src) {\n return this._cache[src];\n };\n\n Cache.prototype.loadImage = function (key) {\n return __awaiter(this, void 0, void 0, function () {\n var isSameOrigin, useCORS, useProxy, src;\n\n var _this = this;\n\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n isSameOrigin = CacheStorage.isSameOrigin(key);\n useCORS = !isInlineImage(key) && this._options.useCORS === true && FEATURES.SUPPORT_CORS_IMAGES && !isSameOrigin;\n useProxy = !isInlineImage(key) && !isSameOrigin && typeof this._options.proxy === 'string' && FEATURES.SUPPORT_CORS_XHR && !useCORS;\n\n if (!isSameOrigin && this._options.allowTaint === false && !isInlineImage(key) && !useProxy && !useCORS) {\n return [2\n /*return*/\n ];\n }\n\n src = key;\n if (!useProxy) return [3\n /*break*/\n , 2];\n return [4\n /*yield*/\n , this.proxy(src)];\n\n case 1:\n src = _a.sent();\n _a.label = 2;\n\n case 2:\n Logger.getInstance(this.id).debug(\"Added image \" + key.substring(0, 256));\n return [4\n /*yield*/\n , new Promise(function (resolve, reject) {\n var img = new Image();\n\n img.onload = function () {\n return resolve(img);\n };\n\n img.onerror = reject; //ios safari 10.3 taints canvas with data urls unless crossOrigin is set to anonymous\n\n if (isInlineBase64Image(src) || useCORS) {\n img.crossOrigin = 'anonymous';\n }\n\n img.src = src;\n\n if (img.complete === true) {\n // Inline XML images may fail to parse, throwing an Error later on\n setTimeout(function () {\n return resolve(img);\n }, 500);\n }\n\n if (_this._options.imageTimeout > 0) {\n setTimeout(function () {\n return reject(\"Timed out (\" + _this._options.imageTimeout + \"ms) loading image\");\n }, _this._options.imageTimeout);\n }\n })];\n\n case 3:\n return [2\n /*return*/\n , _a.sent()];\n }\n });\n });\n };\n\n Cache.prototype.has = function (key) {\n return typeof this._cache[key] !== 'undefined';\n };\n\n Cache.prototype.keys = function () {\n return Promise.resolve(Object.keys(this._cache));\n };\n\n Cache.prototype.proxy = function (src) {\n var _this = this;\n\n var proxy = this._options.proxy;\n\n if (!proxy) {\n throw new Error('No proxy defined');\n }\n\n var key = src.substring(0, 256);\n return new Promise(function (resolve, reject) {\n var responseType = FEATURES.SUPPORT_RESPONSE_TYPE ? 'blob' : 'text';\n var xhr = new XMLHttpRequest();\n\n xhr.onload = function () {\n if (xhr.status === 200) {\n if (responseType === 'text') {\n resolve(xhr.response);\n } else {\n var reader_1 = new FileReader();\n reader_1.addEventListener('load', function () {\n return resolve(reader_1.result);\n }, false);\n reader_1.addEventListener('error', function (e) {\n return reject(e);\n }, false);\n reader_1.readAsDataURL(xhr.response);\n }\n } else {\n reject(\"Failed to proxy resource \" + key + \" with status code \" + xhr.status);\n }\n };\n\n xhr.onerror = reject;\n xhr.open('GET', proxy + \"?url=\" + encodeURIComponent(src) + \"&responseType=\" + responseType);\n\n if (responseType !== 'text' && xhr instanceof XMLHttpRequest) {\n xhr.responseType = responseType;\n }\n\n if (_this._options.imageTimeout) {\n var timeout_1 = _this._options.imageTimeout;\n xhr.timeout = timeout_1;\n\n xhr.ontimeout = function () {\n return reject(\"Timed out (\" + timeout_1 + \"ms) proxying \" + key);\n };\n }\n\n xhr.send();\n });\n };\n\n return Cache;\n }();\n\n var INLINE_SVG = /^data:image\\/svg\\+xml/i;\n var INLINE_BASE64 = /^data:image\\/.*;base64,/i;\n var INLINE_IMG = /^data:image\\/.*/i;\n\n var isRenderable = function isRenderable(src) {\n return FEATURES.SUPPORT_SVG_DRAWING || !isSVG(src);\n };\n\n var isInlineImage = function isInlineImage(src) {\n return INLINE_IMG.test(src);\n };\n\n var isInlineBase64Image = function isInlineBase64Image(src) {\n return INLINE_BASE64.test(src);\n };\n\n var isBlobImage = function isBlobImage(src) {\n return src.substr(0, 4) === 'blob';\n };\n\n var isSVG = function isSVG(src) {\n return src.substr(-3).toLowerCase() === 'svg' || INLINE_SVG.test(src);\n };\n\n var webkitGradient = function webkitGradient(tokens) {\n var angle = deg(180);\n var stops = [];\n var type = CSSImageType.LINEAR_GRADIENT;\n var shape = CSSRadialShape.CIRCLE;\n var size = CSSRadialExtent.FARTHEST_CORNER;\n var position = [];\n parseFunctionArgs(tokens).forEach(function (arg, i) {\n var firstToken = arg[0];\n\n if (i === 0) {\n if (isIdentToken(firstToken) && firstToken.value === 'linear') {\n type = CSSImageType.LINEAR_GRADIENT;\n return;\n } else if (isIdentToken(firstToken) && firstToken.value === 'radial') {\n type = CSSImageType.RADIAL_GRADIENT;\n return;\n }\n }\n\n if (firstToken.type === TokenType.FUNCTION) {\n if (firstToken.name === 'from') {\n var color$1 = color.parse(firstToken.values[0]);\n stops.push({\n stop: ZERO_LENGTH,\n color: color$1\n });\n } else if (firstToken.name === 'to') {\n var color$1 = color.parse(firstToken.values[0]);\n stops.push({\n stop: HUNDRED_PERCENT,\n color: color$1\n });\n } else if (firstToken.name === 'color-stop') {\n var values = firstToken.values.filter(nonFunctionArgSeparator);\n\n if (values.length === 2) {\n var color$1 = color.parse(values[1]);\n var stop_1 = values[0];\n\n if (isNumberToken(stop_1)) {\n stops.push({\n stop: {\n type: TokenType.PERCENTAGE_TOKEN,\n number: stop_1.number * 100,\n flags: stop_1.flags\n },\n color: color$1\n });\n }\n }\n }\n }\n });\n return type === CSSImageType.LINEAR_GRADIENT ? {\n angle: (angle + deg(180)) % deg(360),\n stops: stops,\n type: type\n } : {\n size: size,\n shape: shape,\n stops: stops,\n position: position,\n type: type\n };\n };\n\n var CLOSEST_SIDE = 'closest-side';\n var FARTHEST_SIDE = 'farthest-side';\n var CLOSEST_CORNER = 'closest-corner';\n var FARTHEST_CORNER = 'farthest-corner';\n var CIRCLE = 'circle';\n var ELLIPSE = 'ellipse';\n var COVER = 'cover';\n var CONTAIN = 'contain';\n\n var radialGradient = function radialGradient(tokens) {\n var shape = CSSRadialShape.CIRCLE;\n var size = CSSRadialExtent.FARTHEST_CORNER;\n var stops = [];\n var position = [];\n parseFunctionArgs(tokens).forEach(function (arg, i) {\n var isColorStop = true;\n\n if (i === 0) {\n var isAtPosition_1 = false;\n isColorStop = arg.reduce(function (acc, token) {\n if (isAtPosition_1) {\n if (isIdentToken(token)) {\n switch (token.value) {\n case 'center':\n position.push(FIFTY_PERCENT);\n return acc;\n\n case 'top':\n case 'left':\n position.push(ZERO_LENGTH);\n return acc;\n\n case 'right':\n case 'bottom':\n position.push(HUNDRED_PERCENT);\n return acc;\n }\n } else if (isLengthPercentage(token) || isLength(token)) {\n position.push(token);\n }\n } else if (isIdentToken(token)) {\n switch (token.value) {\n case CIRCLE:\n shape = CSSRadialShape.CIRCLE;\n return false;\n\n case ELLIPSE:\n shape = CSSRadialShape.ELLIPSE;\n return false;\n\n case 'at':\n isAtPosition_1 = true;\n return false;\n\n case CLOSEST_SIDE:\n size = CSSRadialExtent.CLOSEST_SIDE;\n return false;\n\n case COVER:\n case FARTHEST_SIDE:\n size = CSSRadialExtent.FARTHEST_SIDE;\n return false;\n\n case CONTAIN:\n case CLOSEST_CORNER:\n size = CSSRadialExtent.CLOSEST_CORNER;\n return false;\n\n case FARTHEST_CORNER:\n size = CSSRadialExtent.FARTHEST_CORNER;\n return false;\n }\n } else if (isLength(token) || isLengthPercentage(token)) {\n if (!Array.isArray(size)) {\n size = [];\n }\n\n size.push(token);\n return false;\n }\n\n return acc;\n }, isColorStop);\n }\n\n if (isColorStop) {\n var colorStop = parseColorStop(arg);\n stops.push(colorStop);\n }\n });\n return {\n size: size,\n shape: shape,\n stops: stops,\n position: position,\n type: CSSImageType.RADIAL_GRADIENT\n };\n };\n\n var prefixRadialGradient = function prefixRadialGradient(tokens) {\n var shape = CSSRadialShape.CIRCLE;\n var size = CSSRadialExtent.FARTHEST_CORNER;\n var stops = [];\n var position = [];\n parseFunctionArgs(tokens).forEach(function (arg, i) {\n var isColorStop = true;\n\n if (i === 0) {\n isColorStop = arg.reduce(function (acc, token) {\n if (isIdentToken(token)) {\n switch (token.value) {\n case 'center':\n position.push(FIFTY_PERCENT);\n return false;\n\n case 'top':\n case 'left':\n position.push(ZERO_LENGTH);\n return false;\n\n case 'right':\n case 'bottom':\n position.push(HUNDRED_PERCENT);\n return false;\n }\n } else if (isLengthPercentage(token) || isLength(token)) {\n position.push(token);\n return false;\n }\n\n return acc;\n }, isColorStop);\n } else if (i === 1) {\n isColorStop = arg.reduce(function (acc, token) {\n if (isIdentToken(token)) {\n switch (token.value) {\n case CIRCLE:\n shape = CSSRadialShape.CIRCLE;\n return false;\n\n case ELLIPSE:\n shape = CSSRadialShape.ELLIPSE;\n return false;\n\n case CONTAIN:\n case CLOSEST_SIDE:\n size = CSSRadialExtent.CLOSEST_SIDE;\n return false;\n\n case FARTHEST_SIDE:\n size = CSSRadialExtent.FARTHEST_SIDE;\n return false;\n\n case CLOSEST_CORNER:\n size = CSSRadialExtent.CLOSEST_CORNER;\n return false;\n\n case COVER:\n case FARTHEST_CORNER:\n size = CSSRadialExtent.FARTHEST_CORNER;\n return false;\n }\n } else if (isLength(token) || isLengthPercentage(token)) {\n if (!Array.isArray(size)) {\n size = [];\n }\n\n size.push(token);\n return false;\n }\n\n return acc;\n }, isColorStop);\n }\n\n if (isColorStop) {\n var colorStop = parseColorStop(arg);\n stops.push(colorStop);\n }\n });\n return {\n size: size,\n shape: shape,\n stops: stops,\n position: position,\n type: CSSImageType.RADIAL_GRADIENT\n };\n };\n\n var CSSImageType;\n\n (function (CSSImageType) {\n CSSImageType[CSSImageType[\"URL\"] = 0] = \"URL\";\n CSSImageType[CSSImageType[\"LINEAR_GRADIENT\"] = 1] = \"LINEAR_GRADIENT\";\n CSSImageType[CSSImageType[\"RADIAL_GRADIENT\"] = 2] = \"RADIAL_GRADIENT\";\n })(CSSImageType || (CSSImageType = {}));\n\n var isLinearGradient = function isLinearGradient(background) {\n return background.type === CSSImageType.LINEAR_GRADIENT;\n };\n\n var isRadialGradient = function isRadialGradient(background) {\n return background.type === CSSImageType.RADIAL_GRADIENT;\n };\n\n var CSSRadialShape;\n\n (function (CSSRadialShape) {\n CSSRadialShape[CSSRadialShape[\"CIRCLE\"] = 0] = \"CIRCLE\";\n CSSRadialShape[CSSRadialShape[\"ELLIPSE\"] = 1] = \"ELLIPSE\";\n })(CSSRadialShape || (CSSRadialShape = {}));\n\n var CSSRadialExtent;\n\n (function (CSSRadialExtent) {\n CSSRadialExtent[CSSRadialExtent[\"CLOSEST_SIDE\"] = 0] = \"CLOSEST_SIDE\";\n CSSRadialExtent[CSSRadialExtent[\"FARTHEST_SIDE\"] = 1] = \"FARTHEST_SIDE\";\n CSSRadialExtent[CSSRadialExtent[\"CLOSEST_CORNER\"] = 2] = \"CLOSEST_CORNER\";\n CSSRadialExtent[CSSRadialExtent[\"FARTHEST_CORNER\"] = 3] = \"FARTHEST_CORNER\";\n })(CSSRadialExtent || (CSSRadialExtent = {}));\n\n var image = {\n name: 'image',\n parse: function parse(value) {\n if (value.type === TokenType.URL_TOKEN) {\n var image_1 = {\n url: value.value,\n type: CSSImageType.URL\n };\n CacheStorage.getInstance().addImage(value.value);\n return image_1;\n }\n\n if (value.type === TokenType.FUNCTION) {\n var imageFunction = SUPPORTED_IMAGE_FUNCTIONS[value.name];\n\n if (typeof imageFunction === 'undefined') {\n throw new Error(\"Attempting to parse an unsupported image function \\\"\" + value.name + \"\\\"\");\n }\n\n return imageFunction(value.values);\n }\n\n throw new Error(\"Unsupported image type\");\n }\n };\n\n function isSupportedImage(value) {\n return value.type !== TokenType.FUNCTION || SUPPORTED_IMAGE_FUNCTIONS[value.name];\n }\n\n var SUPPORTED_IMAGE_FUNCTIONS = {\n 'linear-gradient': linearGradient,\n '-moz-linear-gradient': prefixLinearGradient,\n '-ms-linear-gradient': prefixLinearGradient,\n '-o-linear-gradient': prefixLinearGradient,\n '-webkit-linear-gradient': prefixLinearGradient,\n 'radial-gradient': radialGradient,\n '-moz-radial-gradient': prefixRadialGradient,\n '-ms-radial-gradient': prefixRadialGradient,\n '-o-radial-gradient': prefixRadialGradient,\n '-webkit-radial-gradient': prefixRadialGradient,\n '-webkit-gradient': webkitGradient\n };\n var backgroundImage = {\n name: 'background-image',\n initialValue: 'none',\n type: PropertyDescriptorParsingType.LIST,\n prefix: false,\n parse: function parse(tokens) {\n if (tokens.length === 0) {\n return [];\n }\n\n var first = tokens[0];\n\n if (first.type === TokenType.IDENT_TOKEN && first.value === 'none') {\n return [];\n }\n\n return tokens.filter(function (value) {\n return nonFunctionArgSeparator(value) && isSupportedImage(value);\n }).map(image.parse);\n }\n };\n var backgroundOrigin = {\n name: 'background-origin',\n initialValue: 'border-box',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: function parse(tokens) {\n return tokens.map(function (token) {\n if (isIdentToken(token)) {\n switch (token.value) {\n case 'padding-box':\n return 1\n /* PADDING_BOX */\n ;\n\n case 'content-box':\n return 2\n /* CONTENT_BOX */\n ;\n }\n }\n\n return 0\n /* BORDER_BOX */\n ;\n });\n }\n };\n var backgroundPosition = {\n name: 'background-position',\n initialValue: '0% 0%',\n type: PropertyDescriptorParsingType.LIST,\n prefix: false,\n parse: function parse(tokens) {\n return parseFunctionArgs(tokens).map(function (values) {\n return values.filter(isLengthPercentage);\n }).map(parseLengthPercentageTuple);\n }\n };\n var BACKGROUND_REPEAT;\n\n (function (BACKGROUND_REPEAT) {\n BACKGROUND_REPEAT[BACKGROUND_REPEAT[\"REPEAT\"] = 0] = \"REPEAT\";\n BACKGROUND_REPEAT[BACKGROUND_REPEAT[\"NO_REPEAT\"] = 1] = \"NO_REPEAT\";\n BACKGROUND_REPEAT[BACKGROUND_REPEAT[\"REPEAT_X\"] = 2] = \"REPEAT_X\";\n BACKGROUND_REPEAT[BACKGROUND_REPEAT[\"REPEAT_Y\"] = 3] = \"REPEAT_Y\";\n })(BACKGROUND_REPEAT || (BACKGROUND_REPEAT = {}));\n\n var backgroundRepeat = {\n name: 'background-repeat',\n initialValue: 'repeat',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: function parse(tokens) {\n return parseFunctionArgs(tokens).map(function (values) {\n return values.filter(isIdentToken).map(function (token) {\n return token.value;\n }).join(' ');\n }).map(parseBackgroundRepeat);\n }\n };\n\n var parseBackgroundRepeat = function parseBackgroundRepeat(value) {\n switch (value) {\n case 'no-repeat':\n return BACKGROUND_REPEAT.NO_REPEAT;\n\n case 'repeat-x':\n case 'repeat no-repeat':\n return BACKGROUND_REPEAT.REPEAT_X;\n\n case 'repeat-y':\n case 'no-repeat repeat':\n return BACKGROUND_REPEAT.REPEAT_Y;\n\n case 'repeat':\n default:\n return BACKGROUND_REPEAT.REPEAT;\n }\n };\n\n var BACKGROUND_SIZE;\n\n (function (BACKGROUND_SIZE) {\n BACKGROUND_SIZE[\"AUTO\"] = \"auto\";\n BACKGROUND_SIZE[\"CONTAIN\"] = \"contain\";\n BACKGROUND_SIZE[\"COVER\"] = \"cover\";\n })(BACKGROUND_SIZE || (BACKGROUND_SIZE = {}));\n\n var backgroundSize = {\n name: 'background-size',\n initialValue: '0',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: function parse(tokens) {\n return parseFunctionArgs(tokens).map(function (values) {\n return values.filter(isBackgroundSizeInfoToken);\n });\n }\n };\n\n var isBackgroundSizeInfoToken = function isBackgroundSizeInfoToken(value) {\n return isIdentToken(value) || isLengthPercentage(value);\n };\n\n var borderColorForSide = function borderColorForSide(side) {\n return {\n name: \"border-\" + side + \"-color\",\n initialValue: 'transparent',\n prefix: false,\n type: PropertyDescriptorParsingType.TYPE_VALUE,\n format: 'color'\n };\n };\n\n var borderTopColor = borderColorForSide('top');\n var borderRightColor = borderColorForSide('right');\n var borderBottomColor = borderColorForSide('bottom');\n var borderLeftColor = borderColorForSide('left');\n\n var borderRadiusForSide = function borderRadiusForSide(side) {\n return {\n name: \"border-radius-\" + side,\n initialValue: '0 0',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: function parse(tokens) {\n return parseLengthPercentageTuple(tokens.filter(isLengthPercentage));\n }\n };\n };\n\n var borderTopLeftRadius = borderRadiusForSide('top-left');\n var borderTopRightRadius = borderRadiusForSide('top-right');\n var borderBottomRightRadius = borderRadiusForSide('bottom-right');\n var borderBottomLeftRadius = borderRadiusForSide('bottom-left');\n var BORDER_STYLE;\n\n (function (BORDER_STYLE) {\n BORDER_STYLE[BORDER_STYLE[\"NONE\"] = 0] = \"NONE\";\n BORDER_STYLE[BORDER_STYLE[\"SOLID\"] = 1] = \"SOLID\";\n })(BORDER_STYLE || (BORDER_STYLE = {}));\n\n var borderStyleForSide = function borderStyleForSide(side) {\n return {\n name: \"border-\" + side + \"-style\",\n initialValue: 'solid',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: function parse(style) {\n switch (style) {\n case 'none':\n return BORDER_STYLE.NONE;\n }\n\n return BORDER_STYLE.SOLID;\n }\n };\n };\n\n var borderTopStyle = borderStyleForSide('top');\n var borderRightStyle = borderStyleForSide('right');\n var borderBottomStyle = borderStyleForSide('bottom');\n var borderLeftStyle = borderStyleForSide('left');\n\n var borderWidthForSide = function borderWidthForSide(side) {\n return {\n name: \"border-\" + side + \"-width\",\n initialValue: '0',\n type: PropertyDescriptorParsingType.VALUE,\n prefix: false,\n parse: function parse(token) {\n if (isDimensionToken(token)) {\n return token.number;\n }\n\n return 0;\n }\n };\n };\n\n var borderTopWidth = borderWidthForSide('top');\n var borderRightWidth = borderWidthForSide('right');\n var borderBottomWidth = borderWidthForSide('bottom');\n var borderLeftWidth = borderWidthForSide('left');\n var color$1 = {\n name: \"color\",\n initialValue: 'transparent',\n prefix: false,\n type: PropertyDescriptorParsingType.TYPE_VALUE,\n format: 'color'\n };\n var display = {\n name: 'display',\n initialValue: 'inline-block',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: function parse(tokens) {\n return tokens.filter(isIdentToken).reduce(function (bit, token) {\n return bit | parseDisplayValue(token.value);\n }, 0\n /* NONE */\n );\n }\n };\n\n var parseDisplayValue = function parseDisplayValue(display) {\n switch (display) {\n case 'block':\n return 2\n /* BLOCK */\n ;\n\n case 'inline':\n return 4\n /* INLINE */\n ;\n\n case 'run-in':\n return 8\n /* RUN_IN */\n ;\n\n case 'flow':\n return 16\n /* FLOW */\n ;\n\n case 'flow-root':\n return 32\n /* FLOW_ROOT */\n ;\n\n case 'table':\n return 64\n /* TABLE */\n ;\n\n case 'flex':\n case '-webkit-flex':\n return 128\n /* FLEX */\n ;\n\n case 'grid':\n case '-ms-grid':\n return 256\n /* GRID */\n ;\n\n case 'ruby':\n return 512\n /* RUBY */\n ;\n\n case 'subgrid':\n return 1024\n /* SUBGRID */\n ;\n\n case 'list-item':\n return 2048\n /* LIST_ITEM */\n ;\n\n case 'table-row-group':\n return 4096\n /* TABLE_ROW_GROUP */\n ;\n\n case 'table-header-group':\n return 8192\n /* TABLE_HEADER_GROUP */\n ;\n\n case 'table-footer-group':\n return 16384\n /* TABLE_FOOTER_GROUP */\n ;\n\n case 'table-row':\n return 32768\n /* TABLE_ROW */\n ;\n\n case 'table-cell':\n return 65536\n /* TABLE_CELL */\n ;\n\n case 'table-column-group':\n return 131072\n /* TABLE_COLUMN_GROUP */\n ;\n\n case 'table-column':\n return 262144\n /* TABLE_COLUMN */\n ;\n\n case 'table-caption':\n return 524288\n /* TABLE_CAPTION */\n ;\n\n case 'ruby-base':\n return 1048576\n /* RUBY_BASE */\n ;\n\n case 'ruby-text':\n return 2097152\n /* RUBY_TEXT */\n ;\n\n case 'ruby-base-container':\n return 4194304\n /* RUBY_BASE_CONTAINER */\n ;\n\n case 'ruby-text-container':\n return 8388608\n /* RUBY_TEXT_CONTAINER */\n ;\n\n case 'contents':\n return 16777216\n /* CONTENTS */\n ;\n\n case 'inline-block':\n return 33554432\n /* INLINE_BLOCK */\n ;\n\n case 'inline-list-item':\n return 67108864\n /* INLINE_LIST_ITEM */\n ;\n\n case 'inline-table':\n return 134217728\n /* INLINE_TABLE */\n ;\n\n case 'inline-flex':\n return 268435456\n /* INLINE_FLEX */\n ;\n\n case 'inline-grid':\n return 536870912\n /* INLINE_GRID */\n ;\n }\n\n return 0\n /* NONE */\n ;\n };\n\n var FLOAT;\n\n (function (FLOAT) {\n FLOAT[FLOAT[\"NONE\"] = 0] = \"NONE\";\n FLOAT[FLOAT[\"LEFT\"] = 1] = \"LEFT\";\n FLOAT[FLOAT[\"RIGHT\"] = 2] = \"RIGHT\";\n FLOAT[FLOAT[\"INLINE_START\"] = 3] = \"INLINE_START\";\n FLOAT[FLOAT[\"INLINE_END\"] = 4] = \"INLINE_END\";\n })(FLOAT || (FLOAT = {}));\n\n var float = {\n name: 'float',\n initialValue: 'none',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: function parse(float) {\n switch (float) {\n case 'left':\n return FLOAT.LEFT;\n\n case 'right':\n return FLOAT.RIGHT;\n\n case 'inline-start':\n return FLOAT.INLINE_START;\n\n case 'inline-end':\n return FLOAT.INLINE_END;\n }\n\n return FLOAT.NONE;\n }\n };\n var letterSpacing = {\n name: 'letter-spacing',\n initialValue: '0',\n prefix: false,\n type: PropertyDescriptorParsingType.VALUE,\n parse: function parse(token) {\n if (token.type === TokenType.IDENT_TOKEN && token.value === 'normal') {\n return 0;\n }\n\n if (token.type === TokenType.NUMBER_TOKEN) {\n return token.number;\n }\n\n if (token.type === TokenType.DIMENSION_TOKEN) {\n return token.number;\n }\n\n return 0;\n }\n };\n var LINE_BREAK;\n\n (function (LINE_BREAK) {\n LINE_BREAK[\"NORMAL\"] = \"normal\";\n LINE_BREAK[\"STRICT\"] = \"strict\";\n })(LINE_BREAK || (LINE_BREAK = {}));\n\n var lineBreak = {\n name: 'line-break',\n initialValue: 'normal',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: function parse(lineBreak) {\n switch (lineBreak) {\n case 'strict':\n return LINE_BREAK.STRICT;\n\n case 'normal':\n default:\n return LINE_BREAK.NORMAL;\n }\n }\n };\n var lineHeight = {\n name: 'line-height',\n initialValue: 'normal',\n prefix: false,\n type: PropertyDescriptorParsingType.TOKEN_VALUE\n };\n\n var computeLineHeight = function computeLineHeight(token, fontSize) {\n if (isIdentToken(token) && token.value === 'normal') {\n return 1.2 * fontSize;\n } else if (token.type === TokenType.NUMBER_TOKEN) {\n return fontSize * token.number;\n } else if (isLengthPercentage(token)) {\n return getAbsoluteValue(token, fontSize);\n }\n\n return fontSize;\n };\n\n var listStyleImage = {\n name: 'list-style-image',\n initialValue: 'none',\n type: PropertyDescriptorParsingType.VALUE,\n prefix: false,\n parse: function parse(token) {\n if (token.type === TokenType.IDENT_TOKEN && token.value === 'none') {\n return null;\n }\n\n return image.parse(token);\n }\n };\n var LIST_STYLE_POSITION;\n\n (function (LIST_STYLE_POSITION) {\n LIST_STYLE_POSITION[LIST_STYLE_POSITION[\"INSIDE\"] = 0] = \"INSIDE\";\n LIST_STYLE_POSITION[LIST_STYLE_POSITION[\"OUTSIDE\"] = 1] = \"OUTSIDE\";\n })(LIST_STYLE_POSITION || (LIST_STYLE_POSITION = {}));\n\n var listStylePosition = {\n name: 'list-style-position',\n initialValue: 'outside',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: function parse(position) {\n switch (position) {\n case 'inside':\n return LIST_STYLE_POSITION.INSIDE;\n\n case 'outside':\n default:\n return LIST_STYLE_POSITION.OUTSIDE;\n }\n }\n };\n var LIST_STYLE_TYPE;\n\n (function (LIST_STYLE_TYPE) {\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"NONE\"] = -1] = \"NONE\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"DISC\"] = 0] = \"DISC\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"CIRCLE\"] = 1] = \"CIRCLE\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"SQUARE\"] = 2] = \"SQUARE\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"DECIMAL\"] = 3] = \"DECIMAL\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"CJK_DECIMAL\"] = 4] = \"CJK_DECIMAL\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"DECIMAL_LEADING_ZERO\"] = 5] = \"DECIMAL_LEADING_ZERO\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"LOWER_ROMAN\"] = 6] = \"LOWER_ROMAN\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"UPPER_ROMAN\"] = 7] = \"UPPER_ROMAN\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"LOWER_GREEK\"] = 8] = \"LOWER_GREEK\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"LOWER_ALPHA\"] = 9] = \"LOWER_ALPHA\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"UPPER_ALPHA\"] = 10] = \"UPPER_ALPHA\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"ARABIC_INDIC\"] = 11] = \"ARABIC_INDIC\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"ARMENIAN\"] = 12] = \"ARMENIAN\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"BENGALI\"] = 13] = \"BENGALI\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"CAMBODIAN\"] = 14] = \"CAMBODIAN\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"CJK_EARTHLY_BRANCH\"] = 15] = \"CJK_EARTHLY_BRANCH\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"CJK_HEAVENLY_STEM\"] = 16] = \"CJK_HEAVENLY_STEM\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"CJK_IDEOGRAPHIC\"] = 17] = \"CJK_IDEOGRAPHIC\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"DEVANAGARI\"] = 18] = \"DEVANAGARI\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"ETHIOPIC_NUMERIC\"] = 19] = \"ETHIOPIC_NUMERIC\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"GEORGIAN\"] = 20] = \"GEORGIAN\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"GUJARATI\"] = 21] = \"GUJARATI\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"GURMUKHI\"] = 22] = \"GURMUKHI\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"HEBREW\"] = 22] = \"HEBREW\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"HIRAGANA\"] = 23] = \"HIRAGANA\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"HIRAGANA_IROHA\"] = 24] = \"HIRAGANA_IROHA\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"JAPANESE_FORMAL\"] = 25] = \"JAPANESE_FORMAL\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"JAPANESE_INFORMAL\"] = 26] = \"JAPANESE_INFORMAL\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"KANNADA\"] = 27] = \"KANNADA\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"KATAKANA\"] = 28] = \"KATAKANA\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"KATAKANA_IROHA\"] = 29] = \"KATAKANA_IROHA\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"KHMER\"] = 30] = \"KHMER\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"KOREAN_HANGUL_FORMAL\"] = 31] = \"KOREAN_HANGUL_FORMAL\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"KOREAN_HANJA_FORMAL\"] = 32] = \"KOREAN_HANJA_FORMAL\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"KOREAN_HANJA_INFORMAL\"] = 33] = \"KOREAN_HANJA_INFORMAL\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"LAO\"] = 34] = \"LAO\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"LOWER_ARMENIAN\"] = 35] = \"LOWER_ARMENIAN\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"MALAYALAM\"] = 36] = \"MALAYALAM\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"MONGOLIAN\"] = 37] = \"MONGOLIAN\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"MYANMAR\"] = 38] = \"MYANMAR\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"ORIYA\"] = 39] = \"ORIYA\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"PERSIAN\"] = 40] = \"PERSIAN\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"SIMP_CHINESE_FORMAL\"] = 41] = \"SIMP_CHINESE_FORMAL\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"SIMP_CHINESE_INFORMAL\"] = 42] = \"SIMP_CHINESE_INFORMAL\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"TAMIL\"] = 43] = \"TAMIL\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"TELUGU\"] = 44] = \"TELUGU\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"THAI\"] = 45] = \"THAI\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"TIBETAN\"] = 46] = \"TIBETAN\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"TRAD_CHINESE_FORMAL\"] = 47] = \"TRAD_CHINESE_FORMAL\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"TRAD_CHINESE_INFORMAL\"] = 48] = \"TRAD_CHINESE_INFORMAL\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"UPPER_ARMENIAN\"] = 49] = \"UPPER_ARMENIAN\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"DISCLOSURE_OPEN\"] = 50] = \"DISCLOSURE_OPEN\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"DISCLOSURE_CLOSED\"] = 51] = \"DISCLOSURE_CLOSED\";\n })(LIST_STYLE_TYPE || (LIST_STYLE_TYPE = {}));\n\n var listStyleType = {\n name: 'list-style-type',\n initialValue: 'none',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: function parse(type) {\n switch (type) {\n case 'disc':\n return LIST_STYLE_TYPE.DISC;\n\n case 'circle':\n return LIST_STYLE_TYPE.CIRCLE;\n\n case 'square':\n return LIST_STYLE_TYPE.SQUARE;\n\n case 'decimal':\n return LIST_STYLE_TYPE.DECIMAL;\n\n case 'cjk-decimal':\n return LIST_STYLE_TYPE.CJK_DECIMAL;\n\n case 'decimal-leading-zero':\n return LIST_STYLE_TYPE.DECIMAL_LEADING_ZERO;\n\n case 'lower-roman':\n return LIST_STYLE_TYPE.LOWER_ROMAN;\n\n case 'upper-roman':\n return LIST_STYLE_TYPE.UPPER_ROMAN;\n\n case 'lower-greek':\n return LIST_STYLE_TYPE.LOWER_GREEK;\n\n case 'lower-alpha':\n return LIST_STYLE_TYPE.LOWER_ALPHA;\n\n case 'upper-alpha':\n return LIST_STYLE_TYPE.UPPER_ALPHA;\n\n case 'arabic-indic':\n return LIST_STYLE_TYPE.ARABIC_INDIC;\n\n case 'armenian':\n return LIST_STYLE_TYPE.ARMENIAN;\n\n case 'bengali':\n return LIST_STYLE_TYPE.BENGALI;\n\n case 'cambodian':\n return LIST_STYLE_TYPE.CAMBODIAN;\n\n case 'cjk-earthly-branch':\n return LIST_STYLE_TYPE.CJK_EARTHLY_BRANCH;\n\n case 'cjk-heavenly-stem':\n return LIST_STYLE_TYPE.CJK_HEAVENLY_STEM;\n\n case 'cjk-ideographic':\n return LIST_STYLE_TYPE.CJK_IDEOGRAPHIC;\n\n case 'devanagari':\n return LIST_STYLE_TYPE.DEVANAGARI;\n\n case 'ethiopic-numeric':\n return LIST_STYLE_TYPE.ETHIOPIC_NUMERIC;\n\n case 'georgian':\n return LIST_STYLE_TYPE.GEORGIAN;\n\n case 'gujarati':\n return LIST_STYLE_TYPE.GUJARATI;\n\n case 'gurmukhi':\n return LIST_STYLE_TYPE.GURMUKHI;\n\n case 'hebrew':\n return LIST_STYLE_TYPE.HEBREW;\n\n case 'hiragana':\n return LIST_STYLE_TYPE.HIRAGANA;\n\n case 'hiragana-iroha':\n return LIST_STYLE_TYPE.HIRAGANA_IROHA;\n\n case 'japanese-formal':\n return LIST_STYLE_TYPE.JAPANESE_FORMAL;\n\n case 'japanese-informal':\n return LIST_STYLE_TYPE.JAPANESE_INFORMAL;\n\n case 'kannada':\n return LIST_STYLE_TYPE.KANNADA;\n\n case 'katakana':\n return LIST_STYLE_TYPE.KATAKANA;\n\n case 'katakana-iroha':\n return LIST_STYLE_TYPE.KATAKANA_IROHA;\n\n case 'khmer':\n return LIST_STYLE_TYPE.KHMER;\n\n case 'korean-hangul-formal':\n return LIST_STYLE_TYPE.KOREAN_HANGUL_FORMAL;\n\n case 'korean-hanja-formal':\n return LIST_STYLE_TYPE.KOREAN_HANJA_FORMAL;\n\n case 'korean-hanja-informal':\n return LIST_STYLE_TYPE.KOREAN_HANJA_INFORMAL;\n\n case 'lao':\n return LIST_STYLE_TYPE.LAO;\n\n case 'lower-armenian':\n return LIST_STYLE_TYPE.LOWER_ARMENIAN;\n\n case 'malayalam':\n return LIST_STYLE_TYPE.MALAYALAM;\n\n case 'mongolian':\n return LIST_STYLE_TYPE.MONGOLIAN;\n\n case 'myanmar':\n return LIST_STYLE_TYPE.MYANMAR;\n\n case 'oriya':\n return LIST_STYLE_TYPE.ORIYA;\n\n case 'persian':\n return LIST_STYLE_TYPE.PERSIAN;\n\n case 'simp-chinese-formal':\n return LIST_STYLE_TYPE.SIMP_CHINESE_FORMAL;\n\n case 'simp-chinese-informal':\n return LIST_STYLE_TYPE.SIMP_CHINESE_INFORMAL;\n\n case 'tamil':\n return LIST_STYLE_TYPE.TAMIL;\n\n case 'telugu':\n return LIST_STYLE_TYPE.TELUGU;\n\n case 'thai':\n return LIST_STYLE_TYPE.THAI;\n\n case 'tibetan':\n return LIST_STYLE_TYPE.TIBETAN;\n\n case 'trad-chinese-formal':\n return LIST_STYLE_TYPE.TRAD_CHINESE_FORMAL;\n\n case 'trad-chinese-informal':\n return LIST_STYLE_TYPE.TRAD_CHINESE_INFORMAL;\n\n case 'upper-armenian':\n return LIST_STYLE_TYPE.UPPER_ARMENIAN;\n\n case 'disclosure-open':\n return LIST_STYLE_TYPE.DISCLOSURE_OPEN;\n\n case 'disclosure-closed':\n return LIST_STYLE_TYPE.DISCLOSURE_CLOSED;\n\n case 'none':\n default:\n return LIST_STYLE_TYPE.NONE;\n }\n }\n };\n\n var marginForSide = function marginForSide(side) {\n return {\n name: \"margin-\" + side,\n initialValue: '0',\n prefix: false,\n type: PropertyDescriptorParsingType.TOKEN_VALUE\n };\n };\n\n var marginTop = marginForSide('top');\n var marginRight = marginForSide('right');\n var marginBottom = marginForSide('bottom');\n var marginLeft = marginForSide('left');\n var OVERFLOW;\n\n (function (OVERFLOW) {\n OVERFLOW[OVERFLOW[\"VISIBLE\"] = 0] = \"VISIBLE\";\n OVERFLOW[OVERFLOW[\"HIDDEN\"] = 1] = \"HIDDEN\";\n OVERFLOW[OVERFLOW[\"SCROLL\"] = 2] = \"SCROLL\";\n OVERFLOW[OVERFLOW[\"AUTO\"] = 3] = \"AUTO\";\n })(OVERFLOW || (OVERFLOW = {}));\n\n var overflow = {\n name: 'overflow',\n initialValue: 'visible',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: function parse(tokens) {\n return tokens.filter(isIdentToken).map(function (overflow) {\n switch (overflow.value) {\n case 'hidden':\n return OVERFLOW.HIDDEN;\n\n case 'scroll':\n return OVERFLOW.SCROLL;\n\n case 'auto':\n return OVERFLOW.AUTO;\n\n case 'visible':\n default:\n return OVERFLOW.VISIBLE;\n }\n });\n }\n };\n var OVERFLOW_WRAP;\n\n (function (OVERFLOW_WRAP) {\n OVERFLOW_WRAP[\"NORMAL\"] = \"normal\";\n OVERFLOW_WRAP[\"BREAK_WORD\"] = \"break-word\";\n })(OVERFLOW_WRAP || (OVERFLOW_WRAP = {}));\n\n var overflowWrap = {\n name: 'overflow-wrap',\n initialValue: 'normal',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: function parse(overflow) {\n switch (overflow) {\n case 'break-word':\n return OVERFLOW_WRAP.BREAK_WORD;\n\n case 'normal':\n default:\n return OVERFLOW_WRAP.NORMAL;\n }\n }\n };\n\n var paddingForSide = function paddingForSide(side) {\n return {\n name: \"padding-\" + side,\n initialValue: '0',\n prefix: false,\n type: PropertyDescriptorParsingType.TYPE_VALUE,\n format: 'length-percentage'\n };\n };\n\n var paddingTop = paddingForSide('top');\n var paddingRight = paddingForSide('right');\n var paddingBottom = paddingForSide('bottom');\n var paddingLeft = paddingForSide('left');\n var TEXT_ALIGN;\n\n (function (TEXT_ALIGN) {\n TEXT_ALIGN[TEXT_ALIGN[\"LEFT\"] = 0] = \"LEFT\";\n TEXT_ALIGN[TEXT_ALIGN[\"CENTER\"] = 1] = \"CENTER\";\n TEXT_ALIGN[TEXT_ALIGN[\"RIGHT\"] = 2] = \"RIGHT\";\n })(TEXT_ALIGN || (TEXT_ALIGN = {}));\n\n var textAlign = {\n name: 'text-align',\n initialValue: 'left',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: function parse(textAlign) {\n switch (textAlign) {\n case 'right':\n return TEXT_ALIGN.RIGHT;\n\n case 'center':\n case 'justify':\n return TEXT_ALIGN.CENTER;\n\n case 'left':\n default:\n return TEXT_ALIGN.LEFT;\n }\n }\n };\n var POSITION;\n\n (function (POSITION) {\n POSITION[POSITION[\"STATIC\"] = 0] = \"STATIC\";\n POSITION[POSITION[\"RELATIVE\"] = 1] = \"RELATIVE\";\n POSITION[POSITION[\"ABSOLUTE\"] = 2] = \"ABSOLUTE\";\n POSITION[POSITION[\"FIXED\"] = 3] = \"FIXED\";\n POSITION[POSITION[\"STICKY\"] = 4] = \"STICKY\";\n })(POSITION || (POSITION = {}));\n\n var position = {\n name: 'position',\n initialValue: 'static',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: function parse(position) {\n switch (position) {\n case 'relative':\n return POSITION.RELATIVE;\n\n case 'absolute':\n return POSITION.ABSOLUTE;\n\n case 'fixed':\n return POSITION.FIXED;\n\n case 'sticky':\n return POSITION.STICKY;\n }\n\n return POSITION.STATIC;\n }\n };\n var textShadow = {\n name: 'text-shadow',\n initialValue: 'none',\n type: PropertyDescriptorParsingType.LIST,\n prefix: false,\n parse: function parse(tokens) {\n if (tokens.length === 1 && isIdentWithValue(tokens[0], 'none')) {\n return [];\n }\n\n return parseFunctionArgs(tokens).map(function (values) {\n var shadow = {\n color: COLORS.TRANSPARENT,\n offsetX: ZERO_LENGTH,\n offsetY: ZERO_LENGTH,\n blur: ZERO_LENGTH\n };\n var c = 0;\n\n for (var i = 0; i < values.length; i++) {\n var token = values[i];\n\n if (isLength(token)) {\n if (c === 0) {\n shadow.offsetX = token;\n } else if (c === 1) {\n shadow.offsetY = token;\n } else {\n shadow.blur = token;\n }\n\n c++;\n } else {\n shadow.color = color.parse(token);\n }\n }\n\n return shadow;\n });\n }\n };\n var TEXT_TRANSFORM;\n\n (function (TEXT_TRANSFORM) {\n TEXT_TRANSFORM[TEXT_TRANSFORM[\"NONE\"] = 0] = \"NONE\";\n TEXT_TRANSFORM[TEXT_TRANSFORM[\"LOWERCASE\"] = 1] = \"LOWERCASE\";\n TEXT_TRANSFORM[TEXT_TRANSFORM[\"UPPERCASE\"] = 2] = \"UPPERCASE\";\n TEXT_TRANSFORM[TEXT_TRANSFORM[\"CAPITALIZE\"] = 3] = \"CAPITALIZE\";\n })(TEXT_TRANSFORM || (TEXT_TRANSFORM = {}));\n\n var textTransform = {\n name: 'text-transform',\n initialValue: 'none',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: function parse(textTransform) {\n switch (textTransform) {\n case 'uppercase':\n return TEXT_TRANSFORM.UPPERCASE;\n\n case 'lowercase':\n return TEXT_TRANSFORM.LOWERCASE;\n\n case 'capitalize':\n return TEXT_TRANSFORM.CAPITALIZE;\n }\n\n return TEXT_TRANSFORM.NONE;\n }\n };\n var transform = {\n name: 'transform',\n initialValue: 'none',\n prefix: true,\n type: PropertyDescriptorParsingType.VALUE,\n parse: function parse(token) {\n if (token.type === TokenType.IDENT_TOKEN && token.value === 'none') {\n return null;\n }\n\n if (token.type === TokenType.FUNCTION) {\n var transformFunction = SUPPORTED_TRANSFORM_FUNCTIONS[token.name];\n\n if (typeof transformFunction === 'undefined') {\n throw new Error(\"Attempting to parse an unsupported transform function \\\"\" + token.name + \"\\\"\");\n }\n\n return transformFunction(token.values);\n }\n\n return null;\n }\n };\n\n var matrix = function matrix(args) {\n var values = args.filter(function (arg) {\n return arg.type === TokenType.NUMBER_TOKEN;\n }).map(function (arg) {\n return arg.number;\n });\n return values.length === 6 ? values : null;\n }; // doesn't support 3D transforms at the moment\n\n\n var matrix3d = function matrix3d(args) {\n var values = args.filter(function (arg) {\n return arg.type === TokenType.NUMBER_TOKEN;\n }).map(function (arg) {\n return arg.number;\n });\n var a1 = values[0],\n b1 = values[1],\n _a = values[2],\n _b = values[3],\n a2 = values[4],\n b2 = values[5],\n _c = values[6],\n _d = values[7],\n _e = values[8],\n _f = values[9],\n _g = values[10],\n _h = values[11],\n a4 = values[12],\n b4 = values[13],\n _j = values[14],\n _k = values[15];\n return values.length === 16 ? [a1, b1, a2, b2, a4, b4] : null;\n };\n\n var SUPPORTED_TRANSFORM_FUNCTIONS = {\n matrix: matrix,\n matrix3d: matrix3d\n };\n var DEFAULT_VALUE = {\n type: TokenType.PERCENTAGE_TOKEN,\n number: 50,\n flags: FLAG_INTEGER\n };\n var DEFAULT = [DEFAULT_VALUE, DEFAULT_VALUE];\n var transformOrigin = {\n name: 'transform-origin',\n initialValue: '50% 50%',\n prefix: true,\n type: PropertyDescriptorParsingType.LIST,\n parse: function parse(tokens) {\n var origins = tokens.filter(isLengthPercentage);\n\n if (origins.length !== 2) {\n return DEFAULT;\n }\n\n return [origins[0], origins[1]];\n }\n };\n var VISIBILITY;\n\n (function (VISIBILITY) {\n VISIBILITY[VISIBILITY[\"VISIBLE\"] = 0] = \"VISIBLE\";\n VISIBILITY[VISIBILITY[\"HIDDEN\"] = 1] = \"HIDDEN\";\n VISIBILITY[VISIBILITY[\"COLLAPSE\"] = 2] = \"COLLAPSE\";\n })(VISIBILITY || (VISIBILITY = {}));\n\n var visibility = {\n name: 'visible',\n initialValue: 'none',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: function parse(visibility) {\n switch (visibility) {\n case 'hidden':\n return VISIBILITY.HIDDEN;\n\n case 'collapse':\n return VISIBILITY.COLLAPSE;\n\n case 'visible':\n default:\n return VISIBILITY.VISIBLE;\n }\n }\n };\n var WORD_BREAK;\n\n (function (WORD_BREAK) {\n WORD_BREAK[\"NORMAL\"] = \"normal\";\n WORD_BREAK[\"BREAK_ALL\"] = \"break-all\";\n WORD_BREAK[\"KEEP_ALL\"] = \"keep-all\";\n })(WORD_BREAK || (WORD_BREAK = {}));\n\n var wordBreak = {\n name: 'word-break',\n initialValue: 'normal',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: function parse(wordBreak) {\n switch (wordBreak) {\n case 'break-all':\n return WORD_BREAK.BREAK_ALL;\n\n case 'keep-all':\n return WORD_BREAK.KEEP_ALL;\n\n case 'normal':\n default:\n return WORD_BREAK.NORMAL;\n }\n }\n };\n var zIndex = {\n name: 'z-index',\n initialValue: 'auto',\n prefix: false,\n type: PropertyDescriptorParsingType.VALUE,\n parse: function parse(token) {\n if (token.type === TokenType.IDENT_TOKEN) {\n return {\n auto: true,\n order: 0\n };\n }\n\n if (isNumberToken(token)) {\n return {\n auto: false,\n order: token.number\n };\n }\n\n throw new Error(\"Invalid z-index number parsed\");\n }\n };\n var opacity = {\n name: 'opacity',\n initialValue: '1',\n type: PropertyDescriptorParsingType.VALUE,\n prefix: false,\n parse: function parse(token) {\n if (isNumberToken(token)) {\n return token.number;\n }\n\n return 1;\n }\n };\n var textDecorationColor = {\n name: \"text-decoration-color\",\n initialValue: 'transparent',\n prefix: false,\n type: PropertyDescriptorParsingType.TYPE_VALUE,\n format: 'color'\n };\n var textDecorationLine = {\n name: 'text-decoration-line',\n initialValue: 'none',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: function parse(tokens) {\n return tokens.filter(isIdentToken).map(function (token) {\n switch (token.value) {\n case 'underline':\n return 1\n /* UNDERLINE */\n ;\n\n case 'overline':\n return 2\n /* OVERLINE */\n ;\n\n case 'line-through':\n return 3\n /* LINE_THROUGH */\n ;\n\n case 'none':\n return 4\n /* BLINK */\n ;\n }\n\n return 0\n /* NONE */\n ;\n }).filter(function (line) {\n return line !== 0\n /* NONE */\n ;\n });\n }\n };\n var fontFamily = {\n name: \"font-family\",\n initialValue: '',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: function parse(tokens) {\n var accumulator = [];\n var results = [];\n tokens.forEach(function (token) {\n switch (token.type) {\n case TokenType.IDENT_TOKEN:\n case TokenType.STRING_TOKEN:\n accumulator.push(token.value);\n break;\n\n case TokenType.NUMBER_TOKEN:\n accumulator.push(token.number.toString());\n break;\n\n case TokenType.COMMA_TOKEN:\n results.push(accumulator.join(' '));\n accumulator.length = 0;\n break;\n }\n });\n\n if (accumulator.length) {\n results.push(accumulator.join(' '));\n }\n\n return results.map(function (result) {\n return result.indexOf(' ') === -1 ? result : \"'\" + result + \"'\";\n });\n }\n };\n var fontSize = {\n name: \"font-size\",\n initialValue: '0',\n prefix: false,\n type: PropertyDescriptorParsingType.TYPE_VALUE,\n format: 'length'\n };\n var fontWeight = {\n name: 'font-weight',\n initialValue: 'normal',\n type: PropertyDescriptorParsingType.VALUE,\n prefix: false,\n parse: function parse(token) {\n if (isNumberToken(token)) {\n return token.number;\n }\n\n if (isIdentToken(token)) {\n switch (token.value) {\n case 'bold':\n return 700;\n\n case 'normal':\n default:\n return 400;\n }\n }\n\n return 400;\n }\n };\n var fontVariant = {\n name: 'font-variant',\n initialValue: 'none',\n type: PropertyDescriptorParsingType.LIST,\n prefix: false,\n parse: function parse(tokens) {\n return tokens.filter(isIdentToken).map(function (token) {\n return token.value;\n });\n }\n };\n var FONT_STYLE;\n\n (function (FONT_STYLE) {\n FONT_STYLE[\"NORMAL\"] = \"normal\";\n FONT_STYLE[\"ITALIC\"] = \"italic\";\n FONT_STYLE[\"OBLIQUE\"] = \"oblique\";\n })(FONT_STYLE || (FONT_STYLE = {}));\n\n var fontStyle = {\n name: 'font-style',\n initialValue: 'normal',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: function parse(overflow) {\n switch (overflow) {\n case 'oblique':\n return FONT_STYLE.OBLIQUE;\n\n case 'italic':\n return FONT_STYLE.ITALIC;\n\n case 'normal':\n default:\n return FONT_STYLE.NORMAL;\n }\n }\n };\n\n var contains = function contains(bit, value) {\n return (bit & value) !== 0;\n };\n\n var content = {\n name: 'content',\n initialValue: 'none',\n type: PropertyDescriptorParsingType.LIST,\n prefix: false,\n parse: function parse(tokens) {\n if (tokens.length === 0) {\n return [];\n }\n\n var first = tokens[0];\n\n if (first.type === TokenType.IDENT_TOKEN && first.value === 'none') {\n return [];\n }\n\n return tokens;\n }\n };\n var counterIncrement = {\n name: 'counter-increment',\n initialValue: 'none',\n prefix: true,\n type: PropertyDescriptorParsingType.LIST,\n parse: function parse(tokens) {\n if (tokens.length === 0) {\n return null;\n }\n\n var first = tokens[0];\n\n if (first.type === TokenType.IDENT_TOKEN && first.value === 'none') {\n return null;\n }\n\n var increments = [];\n var filtered = tokens.filter(nonWhiteSpace);\n\n for (var i = 0; i < filtered.length; i++) {\n var counter = filtered[i];\n var next = filtered[i + 1];\n\n if (counter.type === TokenType.IDENT_TOKEN) {\n var increment = next && isNumberToken(next) ? next.number : 1;\n increments.push({\n counter: counter.value,\n increment: increment\n });\n }\n }\n\n return increments;\n }\n };\n var counterReset = {\n name: 'counter-reset',\n initialValue: 'none',\n prefix: true,\n type: PropertyDescriptorParsingType.LIST,\n parse: function parse(tokens) {\n if (tokens.length === 0) {\n return [];\n }\n\n var resets = [];\n var filtered = tokens.filter(nonWhiteSpace);\n\n for (var i = 0; i < filtered.length; i++) {\n var counter = filtered[i];\n var next = filtered[i + 1];\n\n if (isIdentToken(counter) && counter.value !== 'none') {\n var reset = next && isNumberToken(next) ? next.number : 0;\n resets.push({\n counter: counter.value,\n reset: reset\n });\n }\n }\n\n return resets;\n }\n };\n var quotes = {\n name: 'quotes',\n initialValue: 'none',\n prefix: true,\n type: PropertyDescriptorParsingType.LIST,\n parse: function parse(tokens) {\n if (tokens.length === 0) {\n return null;\n }\n\n var first = tokens[0];\n\n if (first.type === TokenType.IDENT_TOKEN && first.value === 'none') {\n return null;\n }\n\n var quotes = [];\n var filtered = tokens.filter(isStringToken);\n\n if (filtered.length % 2 !== 0) {\n return null;\n }\n\n for (var i = 0; i < filtered.length; i += 2) {\n var open_1 = filtered[i].value;\n var close_1 = filtered[i + 1].value;\n quotes.push({\n open: open_1,\n close: close_1\n });\n }\n\n return quotes;\n }\n };\n\n var getQuote = function getQuote(quotes, depth, open) {\n if (!quotes) {\n return '';\n }\n\n var quote = quotes[Math.min(depth, quotes.length - 1)];\n\n if (!quote) {\n return '';\n }\n\n return open ? quote.open : quote.close;\n };\n\n var boxShadow = {\n name: 'box-shadow',\n initialValue: 'none',\n type: PropertyDescriptorParsingType.LIST,\n prefix: false,\n parse: function parse(tokens) {\n if (tokens.length === 1 && isIdentWithValue(tokens[0], 'none')) {\n return [];\n }\n\n return parseFunctionArgs(tokens).map(function (values) {\n var shadow = {\n color: 0x000000ff,\n offsetX: ZERO_LENGTH,\n offsetY: ZERO_LENGTH,\n blur: ZERO_LENGTH,\n spread: ZERO_LENGTH,\n inset: false\n };\n var c = 0;\n\n for (var i = 0; i < values.length; i++) {\n var token = values[i];\n\n if (isIdentWithValue(token, 'inset')) {\n shadow.inset = true;\n } else if (isLength(token)) {\n if (c === 0) {\n shadow.offsetX = token;\n } else if (c === 1) {\n shadow.offsetY = token;\n } else if (c === 2) {\n shadow.blur = token;\n } else {\n shadow.spread = token;\n }\n\n c++;\n } else {\n shadow.color = color.parse(token);\n }\n }\n\n return shadow;\n });\n }\n };\n\n var CSSParsedDeclaration =\n /** @class */\n function () {\n function CSSParsedDeclaration(declaration) {\n this.backgroundClip = parse(backgroundClip, declaration.backgroundClip);\n this.backgroundColor = parse(backgroundColor, declaration.backgroundColor);\n this.backgroundImage = parse(backgroundImage, declaration.backgroundImage);\n this.backgroundOrigin = parse(backgroundOrigin, declaration.backgroundOrigin);\n this.backgroundPosition = parse(backgroundPosition, declaration.backgroundPosition);\n this.backgroundRepeat = parse(backgroundRepeat, declaration.backgroundRepeat);\n this.backgroundSize = parse(backgroundSize, declaration.backgroundSize);\n this.borderTopColor = parse(borderTopColor, declaration.borderTopColor);\n this.borderRightColor = parse(borderRightColor, declaration.borderRightColor);\n this.borderBottomColor = parse(borderBottomColor, declaration.borderBottomColor);\n this.borderLeftColor = parse(borderLeftColor, declaration.borderLeftColor);\n this.borderTopLeftRadius = parse(borderTopLeftRadius, declaration.borderTopLeftRadius);\n this.borderTopRightRadius = parse(borderTopRightRadius, declaration.borderTopRightRadius);\n this.borderBottomRightRadius = parse(borderBottomRightRadius, declaration.borderBottomRightRadius);\n this.borderBottomLeftRadius = parse(borderBottomLeftRadius, declaration.borderBottomLeftRadius);\n this.borderTopStyle = parse(borderTopStyle, declaration.borderTopStyle);\n this.borderRightStyle = parse(borderRightStyle, declaration.borderRightStyle);\n this.borderBottomStyle = parse(borderBottomStyle, declaration.borderBottomStyle);\n this.borderLeftStyle = parse(borderLeftStyle, declaration.borderLeftStyle);\n this.borderTopWidth = parse(borderTopWidth, declaration.borderTopWidth);\n this.borderRightWidth = parse(borderRightWidth, declaration.borderRightWidth);\n this.borderBottomWidth = parse(borderBottomWidth, declaration.borderBottomWidth);\n this.borderLeftWidth = parse(borderLeftWidth, declaration.borderLeftWidth);\n this.boxShadow = parse(boxShadow, declaration.boxShadow);\n this.color = parse(color$1, declaration.color);\n this.display = parse(display, declaration.display);\n this.float = parse(float, declaration.cssFloat);\n this.fontFamily = parse(fontFamily, declaration.fontFamily);\n this.fontSize = parse(fontSize, declaration.fontSize);\n this.fontStyle = parse(fontStyle, declaration.fontStyle);\n this.fontVariant = parse(fontVariant, declaration.fontVariant);\n this.fontWeight = parse(fontWeight, declaration.fontWeight);\n this.letterSpacing = parse(letterSpacing, declaration.letterSpacing);\n this.lineBreak = parse(lineBreak, declaration.lineBreak);\n this.lineHeight = parse(lineHeight, declaration.lineHeight);\n this.listStyleImage = parse(listStyleImage, declaration.listStyleImage);\n this.listStylePosition = parse(listStylePosition, declaration.listStylePosition);\n this.listStyleType = parse(listStyleType, declaration.listStyleType);\n this.marginTop = parse(marginTop, declaration.marginTop);\n this.marginRight = parse(marginRight, declaration.marginRight);\n this.marginBottom = parse(marginBottom, declaration.marginBottom);\n this.marginLeft = parse(marginLeft, declaration.marginLeft);\n this.opacity = parse(opacity, declaration.opacity);\n var overflowTuple = parse(overflow, declaration.overflow);\n this.overflowX = overflowTuple[0];\n this.overflowY = overflowTuple[overflowTuple.length > 1 ? 1 : 0];\n this.overflowWrap = parse(overflowWrap, declaration.overflowWrap);\n this.paddingTop = parse(paddingTop, declaration.paddingTop);\n this.paddingRight = parse(paddingRight, declaration.paddingRight);\n this.paddingBottom = parse(paddingBottom, declaration.paddingBottom);\n this.paddingLeft = parse(paddingLeft, declaration.paddingLeft);\n this.position = parse(position, declaration.position);\n this.textAlign = parse(textAlign, declaration.textAlign);\n this.textDecorationColor = parse(textDecorationColor, declaration.textDecorationColor || declaration.color);\n this.textDecorationLine = parse(textDecorationLine, declaration.textDecorationLine);\n this.textShadow = parse(textShadow, declaration.textShadow);\n this.textTransform = parse(textTransform, declaration.textTransform);\n this.transform = parse(transform, declaration.transform);\n this.transformOrigin = parse(transformOrigin, declaration.transformOrigin);\n this.visibility = parse(visibility, declaration.visibility);\n this.wordBreak = parse(wordBreak, declaration.wordBreak);\n this.zIndex = parse(zIndex, declaration.zIndex);\n }\n\n CSSParsedDeclaration.prototype.isVisible = function () {\n return this.display > 0 && this.opacity > 0 && this.visibility === VISIBILITY.VISIBLE;\n };\n\n CSSParsedDeclaration.prototype.isTransparent = function () {\n return isTransparent(this.backgroundColor);\n };\n\n CSSParsedDeclaration.prototype.isTransformed = function () {\n return this.transform !== null;\n };\n\n CSSParsedDeclaration.prototype.isPositioned = function () {\n return this.position !== POSITION.STATIC;\n };\n\n CSSParsedDeclaration.prototype.isPositionedWithZIndex = function () {\n return this.isPositioned() && !this.zIndex.auto;\n };\n\n CSSParsedDeclaration.prototype.isFloating = function () {\n return this.float !== FLOAT.NONE;\n };\n\n CSSParsedDeclaration.prototype.isInlineLevel = function () {\n return contains(this.display, 4\n /* INLINE */\n ) || contains(this.display, 33554432\n /* INLINE_BLOCK */\n ) || contains(this.display, 268435456\n /* INLINE_FLEX */\n ) || contains(this.display, 536870912\n /* INLINE_GRID */\n ) || contains(this.display, 67108864\n /* INLINE_LIST_ITEM */\n ) || contains(this.display, 134217728\n /* INLINE_TABLE */\n );\n };\n\n return CSSParsedDeclaration;\n }();\n\n var CSSParsedPseudoDeclaration =\n /** @class */\n function () {\n function CSSParsedPseudoDeclaration(declaration) {\n this.content = parse(content, declaration.content);\n this.quotes = parse(quotes, declaration.quotes);\n }\n\n return CSSParsedPseudoDeclaration;\n }();\n\n var CSSParsedCounterDeclaration =\n /** @class */\n function () {\n function CSSParsedCounterDeclaration(declaration) {\n this.counterIncrement = parse(counterIncrement, declaration.counterIncrement);\n this.counterReset = parse(counterReset, declaration.counterReset);\n }\n\n return CSSParsedCounterDeclaration;\n }(); // eslint-disable-next-line @typescript-eslint/no-explicit-any\n\n\n var parse = function parse(descriptor, style) {\n var tokenizer = new Tokenizer();\n var value = style !== null && typeof style !== 'undefined' ? style.toString() : descriptor.initialValue;\n tokenizer.write(value);\n var parser = new Parser(tokenizer.read());\n\n switch (descriptor.type) {\n case PropertyDescriptorParsingType.IDENT_VALUE:\n var token = parser.parseComponentValue();\n return descriptor.parse(isIdentToken(token) ? token.value : descriptor.initialValue);\n\n case PropertyDescriptorParsingType.VALUE:\n return descriptor.parse(parser.parseComponentValue());\n\n case PropertyDescriptorParsingType.LIST:\n return descriptor.parse(parser.parseComponentValues());\n\n case PropertyDescriptorParsingType.TOKEN_VALUE:\n return parser.parseComponentValue();\n\n case PropertyDescriptorParsingType.TYPE_VALUE:\n switch (descriptor.format) {\n case 'angle':\n return angle.parse(parser.parseComponentValue());\n\n case 'color':\n return color.parse(parser.parseComponentValue());\n\n case 'image':\n return image.parse(parser.parseComponentValue());\n\n case 'length':\n var length_1 = parser.parseComponentValue();\n return isLength(length_1) ? length_1 : ZERO_LENGTH;\n\n case 'length-percentage':\n var value_1 = parser.parseComponentValue();\n return isLengthPercentage(value_1) ? value_1 : ZERO_LENGTH;\n }\n\n }\n\n throw new Error(\"Attempting to parse unsupported css format type \" + descriptor.format);\n };\n\n var ElementContainer =\n /** @class */\n function () {\n function ElementContainer(element) {\n this.styles = new CSSParsedDeclaration(window.getComputedStyle(element, null));\n this.textNodes = [];\n this.elements = [];\n\n if (this.styles.transform !== null && isHTMLElementNode(element)) {\n // getBoundingClientRect takes transforms into account\n element.style.transform = 'none';\n }\n\n this.bounds = parseBounds(element);\n this.flags = 0;\n }\n\n return ElementContainer;\n }();\n\n var TextBounds =\n /** @class */\n function () {\n function TextBounds(text, bounds) {\n this.text = text;\n this.bounds = bounds;\n }\n\n return TextBounds;\n }();\n\n var parseTextBounds = function parseTextBounds(value, styles, node) {\n var textList = breakText(value, styles);\n var textBounds = [];\n var offset = 0;\n textList.forEach(function (text) {\n if (styles.textDecorationLine.length || text.trim().length > 0) {\n if (FEATURES.SUPPORT_RANGE_BOUNDS) {\n textBounds.push(new TextBounds(text, getRangeBounds(node, offset, text.length)));\n } else {\n var replacementNode = node.splitText(text.length);\n textBounds.push(new TextBounds(text, getWrapperBounds(node)));\n node = replacementNode;\n }\n } else if (!FEATURES.SUPPORT_RANGE_BOUNDS) {\n node = node.splitText(text.length);\n }\n\n offset += text.length;\n });\n return textBounds;\n };\n\n var getWrapperBounds = function getWrapperBounds(node) {\n var ownerDocument = node.ownerDocument;\n\n if (ownerDocument) {\n var wrapper = ownerDocument.createElement('html2canvaswrapper');\n wrapper.appendChild(node.cloneNode(true));\n var parentNode = node.parentNode;\n\n if (parentNode) {\n parentNode.replaceChild(wrapper, node);\n var bounds = parseBounds(wrapper);\n\n if (wrapper.firstChild) {\n parentNode.replaceChild(wrapper.firstChild, wrapper);\n }\n\n return bounds;\n }\n }\n\n return new Bounds(0, 0, 0, 0);\n };\n\n var getRangeBounds = function getRangeBounds(node, offset, length) {\n var ownerDocument = node.ownerDocument;\n\n if (!ownerDocument) {\n throw new Error('Node has no owner document');\n }\n\n var range = ownerDocument.createRange();\n range.setStart(node, offset);\n range.setEnd(node, offset + length);\n return Bounds.fromClientRect(range.getBoundingClientRect());\n };\n\n var breakText = function breakText(value, styles) {\n return styles.letterSpacing !== 0 ? toCodePoints(value).map(function (i) {\n return fromCodePoint(i);\n }) : breakWords(value, styles);\n };\n\n var breakWords = function breakWords(str, styles) {\n var breaker = LineBreaker(str, {\n lineBreak: styles.lineBreak,\n wordBreak: styles.overflowWrap === OVERFLOW_WRAP.BREAK_WORD ? 'break-word' : styles.wordBreak\n });\n var words = [];\n var bk;\n\n while (!(bk = breaker.next()).done) {\n if (bk.value) {\n words.push(bk.value.slice());\n }\n }\n\n return words;\n };\n\n var TextContainer =\n /** @class */\n function () {\n function TextContainer(node, styles) {\n this.text = transform$1(node.data, styles.textTransform);\n this.textBounds = parseTextBounds(this.text, styles, node);\n }\n\n return TextContainer;\n }();\n\n var transform$1 = function transform$1(text, transform) {\n switch (transform) {\n case TEXT_TRANSFORM.LOWERCASE:\n return text.toLowerCase();\n\n case TEXT_TRANSFORM.CAPITALIZE:\n return text.replace(CAPITALIZE, capitalize);\n\n case TEXT_TRANSFORM.UPPERCASE:\n return text.toUpperCase();\n\n default:\n return text;\n }\n };\n\n var CAPITALIZE = /(^|\\s|:|-|\\(|\\))([a-z])/g;\n\n var capitalize = function capitalize(m, p1, p2) {\n if (m.length > 0) {\n return p1 + p2.toUpperCase();\n }\n\n return m;\n };\n\n var ImageElementContainer =\n /** @class */\n function (_super) {\n __extends(ImageElementContainer, _super);\n\n function ImageElementContainer(img) {\n var _this = _super.call(this, img) || this;\n\n _this.src = img.currentSrc || img.src;\n _this.intrinsicWidth = img.naturalWidth;\n _this.intrinsicHeight = img.naturalHeight;\n CacheStorage.getInstance().addImage(_this.src);\n return _this;\n }\n\n return ImageElementContainer;\n }(ElementContainer);\n\n var CanvasElementContainer =\n /** @class */\n function (_super) {\n __extends(CanvasElementContainer, _super);\n\n function CanvasElementContainer(canvas) {\n var _this = _super.call(this, canvas) || this;\n\n _this.canvas = canvas;\n _this.intrinsicWidth = canvas.width;\n _this.intrinsicHeight = canvas.height;\n return _this;\n }\n\n return CanvasElementContainer;\n }(ElementContainer);\n\n var SVGElementContainer =\n /** @class */\n function (_super) {\n __extends(SVGElementContainer, _super);\n\n function SVGElementContainer(img) {\n var _this = _super.call(this, img) || this;\n\n var s = new XMLSerializer();\n _this.svg = \"data:image/svg+xml,\" + encodeURIComponent(s.serializeToString(img));\n _this.intrinsicWidth = img.width.baseVal.value;\n _this.intrinsicHeight = img.height.baseVal.value;\n CacheStorage.getInstance().addImage(_this.svg);\n return _this;\n }\n\n return SVGElementContainer;\n }(ElementContainer);\n\n var LIElementContainer =\n /** @class */\n function (_super) {\n __extends(LIElementContainer, _super);\n\n function LIElementContainer(element) {\n var _this = _super.call(this, element) || this;\n\n _this.value = element.value;\n return _this;\n }\n\n return LIElementContainer;\n }(ElementContainer);\n\n var OLElementContainer =\n /** @class */\n function (_super) {\n __extends(OLElementContainer, _super);\n\n function OLElementContainer(element) {\n var _this = _super.call(this, element) || this;\n\n _this.start = element.start;\n _this.reversed = typeof element.reversed === 'boolean' && element.reversed === true;\n return _this;\n }\n\n return OLElementContainer;\n }(ElementContainer);\n\n var CHECKBOX_BORDER_RADIUS = [{\n type: TokenType.DIMENSION_TOKEN,\n flags: 0,\n unit: 'px',\n number: 3\n }];\n var RADIO_BORDER_RADIUS = [{\n type: TokenType.PERCENTAGE_TOKEN,\n flags: 0,\n number: 50\n }];\n\n var reformatInputBounds = function reformatInputBounds(bounds) {\n if (bounds.width > bounds.height) {\n return new Bounds(bounds.left + (bounds.width - bounds.height) / 2, bounds.top, bounds.height, bounds.height);\n } else if (bounds.width < bounds.height) {\n return new Bounds(bounds.left, bounds.top + (bounds.height - bounds.width) / 2, bounds.width, bounds.width);\n }\n\n return bounds;\n };\n\n var getInputValue = function getInputValue(node) {\n var value = node.type === PASSWORD ? new Array(node.value.length + 1).join('\\u2022') : node.value;\n return value.length === 0 ? node.placeholder || '' : value;\n };\n\n var CHECKBOX = 'checkbox';\n var RADIO = 'radio';\n var PASSWORD = 'password';\n var INPUT_COLOR = 0x2a2a2aff;\n\n var InputElementContainer =\n /** @class */\n function (_super) {\n __extends(InputElementContainer, _super);\n\n function InputElementContainer(input) {\n var _this = _super.call(this, input) || this;\n\n _this.type = input.type.toLowerCase();\n _this.checked = input.checked;\n _this.value = getInputValue(input);\n\n if (_this.type === CHECKBOX || _this.type === RADIO) {\n _this.styles.backgroundColor = 0xdededeff;\n _this.styles.borderTopColor = _this.styles.borderRightColor = _this.styles.borderBottomColor = _this.styles.borderLeftColor = 0xa5a5a5ff;\n _this.styles.borderTopWidth = _this.styles.borderRightWidth = _this.styles.borderBottomWidth = _this.styles.borderLeftWidth = 1;\n _this.styles.borderTopStyle = _this.styles.borderRightStyle = _this.styles.borderBottomStyle = _this.styles.borderLeftStyle = BORDER_STYLE.SOLID;\n _this.styles.backgroundClip = [BACKGROUND_CLIP.BORDER_BOX];\n _this.styles.backgroundOrigin = [0\n /* BORDER_BOX */\n ];\n _this.bounds = reformatInputBounds(_this.bounds);\n }\n\n switch (_this.type) {\n case CHECKBOX:\n _this.styles.borderTopRightRadius = _this.styles.borderTopLeftRadius = _this.styles.borderBottomRightRadius = _this.styles.borderBottomLeftRadius = CHECKBOX_BORDER_RADIUS;\n break;\n\n case RADIO:\n _this.styles.borderTopRightRadius = _this.styles.borderTopLeftRadius = _this.styles.borderBottomRightRadius = _this.styles.borderBottomLeftRadius = RADIO_BORDER_RADIUS;\n break;\n }\n\n return _this;\n }\n\n return InputElementContainer;\n }(ElementContainer);\n\n var SelectElementContainer =\n /** @class */\n function (_super) {\n __extends(SelectElementContainer, _super);\n\n function SelectElementContainer(element) {\n var _this = _super.call(this, element) || this;\n\n var option = element.options[element.selectedIndex || 0];\n _this.value = option ? option.text || '' : '';\n return _this;\n }\n\n return SelectElementContainer;\n }(ElementContainer);\n\n var TextareaElementContainer =\n /** @class */\n function (_super) {\n __extends(TextareaElementContainer, _super);\n\n function TextareaElementContainer(element) {\n var _this = _super.call(this, element) || this;\n\n _this.value = element.value;\n return _this;\n }\n\n return TextareaElementContainer;\n }(ElementContainer);\n\n var parseColor = function parseColor(value) {\n return color.parse(Parser.create(value).parseComponentValue());\n };\n\n var IFrameElementContainer =\n /** @class */\n function (_super) {\n __extends(IFrameElementContainer, _super);\n\n function IFrameElementContainer(iframe) {\n var _this = _super.call(this, iframe) || this;\n\n _this.src = iframe.src;\n _this.width = parseInt(iframe.width, 10) || 0;\n _this.height = parseInt(iframe.height, 10) || 0;\n _this.backgroundColor = _this.styles.backgroundColor;\n\n try {\n if (iframe.contentWindow && iframe.contentWindow.document && iframe.contentWindow.document.documentElement) {\n _this.tree = parseTree(iframe.contentWindow.document.documentElement); // http://www.w3.org/TR/css3-background/#special-backgrounds\n\n var documentBackgroundColor = iframe.contentWindow.document.documentElement ? parseColor(getComputedStyle(iframe.contentWindow.document.documentElement).backgroundColor) : COLORS.TRANSPARENT;\n var bodyBackgroundColor = iframe.contentWindow.document.body ? parseColor(getComputedStyle(iframe.contentWindow.document.body).backgroundColor) : COLORS.TRANSPARENT;\n _this.backgroundColor = isTransparent(documentBackgroundColor) ? isTransparent(bodyBackgroundColor) ? _this.styles.backgroundColor : bodyBackgroundColor : documentBackgroundColor;\n }\n } catch (e) {}\n\n return _this;\n }\n\n return IFrameElementContainer;\n }(ElementContainer);\n\n var LIST_OWNERS = ['OL', 'UL', 'MENU'];\n\n var parseNodeTree = function parseNodeTree(node, parent, root) {\n for (var childNode = node.firstChild, nextNode = void 0; childNode; childNode = nextNode) {\n nextNode = childNode.nextSibling;\n\n if (isTextNode(childNode) && childNode.data.trim().length > 0) {\n parent.textNodes.push(new TextContainer(childNode, parent.styles));\n } else if (isElementNode(childNode)) {\n var container = createContainer(childNode);\n\n if (container.styles.isVisible()) {\n if (createsRealStackingContext(childNode, container, root)) {\n container.flags |= 4\n /* CREATES_REAL_STACKING_CONTEXT */\n ;\n } else if (createsStackingContext(container.styles)) {\n container.flags |= 2\n /* CREATES_STACKING_CONTEXT */\n ;\n }\n\n if (LIST_OWNERS.indexOf(childNode.tagName) !== -1) {\n container.flags |= 8\n /* IS_LIST_OWNER */\n ;\n }\n\n parent.elements.push(container);\n\n if (!isTextareaElement(childNode) && !isSVGElement(childNode) && !isSelectElement(childNode)) {\n parseNodeTree(childNode, container, root);\n }\n }\n }\n }\n };\n\n var createContainer = function createContainer(element) {\n if (isImageElement(element)) {\n return new ImageElementContainer(element);\n }\n\n if (isCanvasElement(element)) {\n return new CanvasElementContainer(element);\n }\n\n if (isSVGElement(element)) {\n return new SVGElementContainer(element);\n }\n\n if (isLIElement(element)) {\n return new LIElementContainer(element);\n }\n\n if (isOLElement(element)) {\n return new OLElementContainer(element);\n }\n\n if (isInputElement(element)) {\n return new InputElementContainer(element);\n }\n\n if (isSelectElement(element)) {\n return new SelectElementContainer(element);\n }\n\n if (isTextareaElement(element)) {\n return new TextareaElementContainer(element);\n }\n\n if (isIFrameElement(element)) {\n return new IFrameElementContainer(element);\n }\n\n return new ElementContainer(element);\n };\n\n var parseTree = function parseTree(element) {\n var container = createContainer(element);\n container.flags |= 4\n /* CREATES_REAL_STACKING_CONTEXT */\n ;\n parseNodeTree(element, container, container);\n return container;\n };\n\n var createsRealStackingContext = function createsRealStackingContext(node, container, root) {\n return container.styles.isPositionedWithZIndex() || container.styles.opacity < 1 || container.styles.isTransformed() || isBodyElement(node) && root.styles.isTransparent();\n };\n\n var createsStackingContext = function createsStackingContext(styles) {\n return styles.isPositioned() || styles.isFloating();\n };\n\n var isTextNode = function isTextNode(node) {\n return node.nodeType === Node.TEXT_NODE;\n };\n\n var isElementNode = function isElementNode(node) {\n return node.nodeType === Node.ELEMENT_NODE;\n };\n\n var isHTMLElementNode = function isHTMLElementNode(node) {\n return isElementNode(node) && typeof node.style !== 'undefined' && !isSVGElementNode(node);\n };\n\n var isSVGElementNode = function isSVGElementNode(element) {\n return typeof element.className === 'object';\n };\n\n var isLIElement = function isLIElement(node) {\n return node.tagName === 'LI';\n };\n\n var isOLElement = function isOLElement(node) {\n return node.tagName === 'OL';\n };\n\n var isInputElement = function isInputElement(node) {\n return node.tagName === 'INPUT';\n };\n\n var isHTMLElement = function isHTMLElement(node) {\n return node.tagName === 'HTML';\n };\n\n var isSVGElement = function isSVGElement(node) {\n return node.tagName === 'svg';\n };\n\n var isBodyElement = function isBodyElement(node) {\n return node.tagName === 'BODY';\n };\n\n var isCanvasElement = function isCanvasElement(node) {\n return node.tagName === 'CANVAS';\n };\n\n var isImageElement = function isImageElement(node) {\n return node.tagName === 'IMG';\n };\n\n var isIFrameElement = function isIFrameElement(node) {\n return node.tagName === 'IFRAME';\n };\n\n var isStyleElement = function isStyleElement(node) {\n return node.tagName === 'STYLE';\n };\n\n var isScriptElement = function isScriptElement(node) {\n return node.tagName === 'SCRIPT';\n };\n\n var isTextareaElement = function isTextareaElement(node) {\n return node.tagName === 'TEXTAREA';\n };\n\n var isSelectElement = function isSelectElement(node) {\n return node.tagName === 'SELECT';\n };\n\n var CounterState =\n /** @class */\n function () {\n function CounterState() {\n this.counters = {};\n }\n\n CounterState.prototype.getCounterValue = function (name) {\n var counter = this.counters[name];\n\n if (counter && counter.length) {\n return counter[counter.length - 1];\n }\n\n return 1;\n };\n\n CounterState.prototype.getCounterValues = function (name) {\n var counter = this.counters[name];\n return counter ? counter : [];\n };\n\n CounterState.prototype.pop = function (counters) {\n var _this = this;\n\n counters.forEach(function (counter) {\n return _this.counters[counter].pop();\n });\n };\n\n CounterState.prototype.parse = function (style) {\n var _this = this;\n\n var counterIncrement = style.counterIncrement;\n var counterReset = style.counterReset;\n var canReset = true;\n\n if (counterIncrement !== null) {\n counterIncrement.forEach(function (entry) {\n var counter = _this.counters[entry.counter];\n\n if (counter && entry.increment !== 0) {\n canReset = false;\n counter[Math.max(0, counter.length - 1)] += entry.increment;\n }\n });\n }\n\n var counterNames = [];\n\n if (canReset) {\n counterReset.forEach(function (entry) {\n var counter = _this.counters[entry.counter];\n counterNames.push(entry.counter);\n\n if (!counter) {\n counter = _this.counters[entry.counter] = [];\n }\n\n counter.push(entry.reset);\n });\n }\n\n return counterNames;\n };\n\n return CounterState;\n }();\n\n var ROMAN_UPPER = {\n integers: [1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1],\n values: ['M', 'CM', 'D', 'CD', 'C', 'XC', 'L', 'XL', 'X', 'IX', 'V', 'IV', 'I']\n };\n var ARMENIAN = {\n integers: [9000, 8000, 7000, 6000, 5000, 4000, 3000, 2000, 1000, 900, 800, 700, 600, 500, 400, 300, 200, 100, 90, 80, 70, 60, 50, 40, 30, 20, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1],\n values: ['Ք', 'Փ', 'Ւ', 'Ց', 'Ր', 'Տ', 'Վ', 'Ս', 'Ռ', 'Ջ', 'Պ', 'Չ', 'Ո', 'Շ', 'Ն', 'Յ', 'Մ', 'Ճ', 'Ղ', 'Ձ', 'Հ', 'Կ', 'Ծ', 'Խ', 'Լ', 'Ի', 'Ժ', 'Թ', 'Ը', 'Է', 'Զ', 'Ե', 'Դ', 'Գ', 'Բ', 'Ա']\n };\n var HEBREW = {\n integers: [10000, 9000, 8000, 7000, 6000, 5000, 4000, 3000, 2000, 1000, 400, 300, 200, 100, 90, 80, 70, 60, 50, 40, 30, 20, 19, 18, 17, 16, 15, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1],\n values: ['י׳', 'ט׳', 'ח׳', 'ז׳', 'ו׳', 'ה׳', 'ד׳', 'ג׳', 'ב׳', 'א׳', 'ת', 'ש', 'ר', 'ק', 'צ', 'פ', 'ע', 'ס', 'נ', 'מ', 'ל', 'כ', 'יט', 'יח', 'יז', 'טז', 'טו', 'י', 'ט', 'ח', 'ז', 'ו', 'ה', 'ד', 'ג', 'ב', 'א']\n };\n var GEORGIAN = {\n integers: [10000, 9000, 8000, 7000, 6000, 5000, 4000, 3000, 2000, 1000, 900, 800, 700, 600, 500, 400, 300, 200, 100, 90, 80, 70, 60, 50, 40, 30, 20, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1],\n values: ['ჵ', 'ჰ', 'ჯ', 'ჴ', 'ხ', 'ჭ', 'წ', 'ძ', 'ც', 'ჩ', 'შ', 'ყ', 'ღ', 'ქ', 'ფ', 'ჳ', 'ტ', 'ს', 'რ', 'ჟ', 'პ', 'ო', 'ჲ', 'ნ', 'მ', 'ლ', 'კ', 'ი', 'თ', 'ჱ', 'ზ', 'ვ', 'ე', 'დ', 'გ', 'ბ', 'ა']\n };\n\n var createAdditiveCounter = function createAdditiveCounter(value, min, max, symbols, fallback, suffix) {\n if (value < min || value > max) {\n return createCounterText(value, fallback, suffix.length > 0);\n }\n\n return symbols.integers.reduce(function (string, integer, index) {\n while (value >= integer) {\n value -= integer;\n string += symbols.values[index];\n }\n\n return string;\n }, '') + suffix;\n };\n\n var createCounterStyleWithSymbolResolver = function createCounterStyleWithSymbolResolver(value, codePointRangeLength, isNumeric, resolver) {\n var string = '';\n\n do {\n if (!isNumeric) {\n value--;\n }\n\n string = resolver(value) + string;\n value /= codePointRangeLength;\n } while (value * codePointRangeLength >= codePointRangeLength);\n\n return string;\n };\n\n var createCounterStyleFromRange = function createCounterStyleFromRange(value, codePointRangeStart, codePointRangeEnd, isNumeric, suffix) {\n var codePointRangeLength = codePointRangeEnd - codePointRangeStart + 1;\n return (value < 0 ? '-' : '') + (createCounterStyleWithSymbolResolver(Math.abs(value), codePointRangeLength, isNumeric, function (codePoint) {\n return fromCodePoint(Math.floor(codePoint % codePointRangeLength) + codePointRangeStart);\n }) + suffix);\n };\n\n var createCounterStyleFromSymbols = function createCounterStyleFromSymbols(value, symbols, suffix) {\n if (suffix === void 0) {\n suffix = '. ';\n }\n\n var codePointRangeLength = symbols.length;\n return createCounterStyleWithSymbolResolver(Math.abs(value), codePointRangeLength, false, function (codePoint) {\n return symbols[Math.floor(codePoint % codePointRangeLength)];\n }) + suffix;\n };\n\n var CJK_ZEROS = 1 << 0;\n var CJK_TEN_COEFFICIENTS = 1 << 1;\n var CJK_TEN_HIGH_COEFFICIENTS = 1 << 2;\n var CJK_HUNDRED_COEFFICIENTS = 1 << 3;\n\n var createCJKCounter = function createCJKCounter(value, numbers, multipliers, negativeSign, suffix, flags) {\n if (value < -9999 || value > 9999) {\n return createCounterText(value, LIST_STYLE_TYPE.CJK_DECIMAL, suffix.length > 0);\n }\n\n var tmp = Math.abs(value);\n var string = suffix;\n\n if (tmp === 0) {\n return numbers[0] + string;\n }\n\n for (var digit = 0; tmp > 0 && digit <= 4; digit++) {\n var coefficient = tmp % 10;\n\n if (coefficient === 0 && contains(flags, CJK_ZEROS) && string !== '') {\n string = numbers[coefficient] + string;\n } else if (coefficient > 1 || coefficient === 1 && digit === 0 || coefficient === 1 && digit === 1 && contains(flags, CJK_TEN_COEFFICIENTS) || coefficient === 1 && digit === 1 && contains(flags, CJK_TEN_HIGH_COEFFICIENTS) && value > 100 || coefficient === 1 && digit > 1 && contains(flags, CJK_HUNDRED_COEFFICIENTS)) {\n string = numbers[coefficient] + (digit > 0 ? multipliers[digit - 1] : '') + string;\n } else if (coefficient === 1 && digit > 0) {\n string = multipliers[digit - 1] + string;\n }\n\n tmp = Math.floor(tmp / 10);\n }\n\n return (value < 0 ? negativeSign : '') + string;\n };\n\n var CHINESE_INFORMAL_MULTIPLIERS = '十百千萬';\n var CHINESE_FORMAL_MULTIPLIERS = '拾佰仟萬';\n var JAPANESE_NEGATIVE = 'マイナス';\n var KOREAN_NEGATIVE = '마이너스';\n\n var createCounterText = function createCounterText(value, type, appendSuffix) {\n var defaultSuffix = appendSuffix ? '. ' : '';\n var cjkSuffix = appendSuffix ? '、' : '';\n var koreanSuffix = appendSuffix ? ', ' : '';\n var spaceSuffix = appendSuffix ? ' ' : '';\n\n switch (type) {\n case LIST_STYLE_TYPE.DISC:\n return '•' + spaceSuffix;\n\n case LIST_STYLE_TYPE.CIRCLE:\n return '◦' + spaceSuffix;\n\n case LIST_STYLE_TYPE.SQUARE:\n return '◾' + spaceSuffix;\n\n case LIST_STYLE_TYPE.DECIMAL_LEADING_ZERO:\n var string = createCounterStyleFromRange(value, 48, 57, true, defaultSuffix);\n return string.length < 4 ? \"0\" + string : string;\n\n case LIST_STYLE_TYPE.CJK_DECIMAL:\n return createCounterStyleFromSymbols(value, '〇一二三四五六七八九', cjkSuffix);\n\n case LIST_STYLE_TYPE.LOWER_ROMAN:\n return createAdditiveCounter(value, 1, 3999, ROMAN_UPPER, LIST_STYLE_TYPE.DECIMAL, defaultSuffix).toLowerCase();\n\n case LIST_STYLE_TYPE.UPPER_ROMAN:\n return createAdditiveCounter(value, 1, 3999, ROMAN_UPPER, LIST_STYLE_TYPE.DECIMAL, defaultSuffix);\n\n case LIST_STYLE_TYPE.LOWER_GREEK:\n return createCounterStyleFromRange(value, 945, 969, false, defaultSuffix);\n\n case LIST_STYLE_TYPE.LOWER_ALPHA:\n return createCounterStyleFromRange(value, 97, 122, false, defaultSuffix);\n\n case LIST_STYLE_TYPE.UPPER_ALPHA:\n return createCounterStyleFromRange(value, 65, 90, false, defaultSuffix);\n\n case LIST_STYLE_TYPE.ARABIC_INDIC:\n return createCounterStyleFromRange(value, 1632, 1641, true, defaultSuffix);\n\n case LIST_STYLE_TYPE.ARMENIAN:\n case LIST_STYLE_TYPE.UPPER_ARMENIAN:\n return createAdditiveCounter(value, 1, 9999, ARMENIAN, LIST_STYLE_TYPE.DECIMAL, defaultSuffix);\n\n case LIST_STYLE_TYPE.LOWER_ARMENIAN:\n return createAdditiveCounter(value, 1, 9999, ARMENIAN, LIST_STYLE_TYPE.DECIMAL, defaultSuffix).toLowerCase();\n\n case LIST_STYLE_TYPE.BENGALI:\n return createCounterStyleFromRange(value, 2534, 2543, true, defaultSuffix);\n\n case LIST_STYLE_TYPE.CAMBODIAN:\n case LIST_STYLE_TYPE.KHMER:\n return createCounterStyleFromRange(value, 6112, 6121, true, defaultSuffix);\n\n case LIST_STYLE_TYPE.CJK_EARTHLY_BRANCH:\n return createCounterStyleFromSymbols(value, '子丑寅卯辰巳午未申酉戌亥', cjkSuffix);\n\n case LIST_STYLE_TYPE.CJK_HEAVENLY_STEM:\n return createCounterStyleFromSymbols(value, '甲乙丙丁戊己庚辛壬癸', cjkSuffix);\n\n case LIST_STYLE_TYPE.CJK_IDEOGRAPHIC:\n case LIST_STYLE_TYPE.TRAD_CHINESE_INFORMAL:\n return createCJKCounter(value, '零一二三四五六七八九', CHINESE_INFORMAL_MULTIPLIERS, '負', cjkSuffix, CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS);\n\n case LIST_STYLE_TYPE.TRAD_CHINESE_FORMAL:\n return createCJKCounter(value, '零壹貳參肆伍陸柒捌玖', CHINESE_FORMAL_MULTIPLIERS, '負', cjkSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS);\n\n case LIST_STYLE_TYPE.SIMP_CHINESE_INFORMAL:\n return createCJKCounter(value, '零一二三四五六七八九', CHINESE_INFORMAL_MULTIPLIERS, '负', cjkSuffix, CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS);\n\n case LIST_STYLE_TYPE.SIMP_CHINESE_FORMAL:\n return createCJKCounter(value, '零壹贰叁肆伍陆柒捌玖', CHINESE_FORMAL_MULTIPLIERS, '负', cjkSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS);\n\n case LIST_STYLE_TYPE.JAPANESE_INFORMAL:\n return createCJKCounter(value, '〇一二三四五六七八九', '十百千万', JAPANESE_NEGATIVE, cjkSuffix, 0);\n\n case LIST_STYLE_TYPE.JAPANESE_FORMAL:\n return createCJKCounter(value, '零壱弐参四伍六七八九', '拾百千万', JAPANESE_NEGATIVE, cjkSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS);\n\n case LIST_STYLE_TYPE.KOREAN_HANGUL_FORMAL:\n return createCJKCounter(value, '영일이삼사오육칠팔구', '십백천만', KOREAN_NEGATIVE, koreanSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS);\n\n case LIST_STYLE_TYPE.KOREAN_HANJA_INFORMAL:\n return createCJKCounter(value, '零一二三四五六七八九', '十百千萬', KOREAN_NEGATIVE, koreanSuffix, 0);\n\n case LIST_STYLE_TYPE.KOREAN_HANJA_FORMAL:\n return createCJKCounter(value, '零壹貳參四五六七八九', '拾百千', KOREAN_NEGATIVE, koreanSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS);\n\n case LIST_STYLE_TYPE.DEVANAGARI:\n return createCounterStyleFromRange(value, 0x966, 0x96f, true, defaultSuffix);\n\n case LIST_STYLE_TYPE.GEORGIAN:\n return createAdditiveCounter(value, 1, 19999, GEORGIAN, LIST_STYLE_TYPE.DECIMAL, defaultSuffix);\n\n case LIST_STYLE_TYPE.GUJARATI:\n return createCounterStyleFromRange(value, 0xae6, 0xaef, true, defaultSuffix);\n\n case LIST_STYLE_TYPE.GURMUKHI:\n return createCounterStyleFromRange(value, 0xa66, 0xa6f, true, defaultSuffix);\n\n case LIST_STYLE_TYPE.HEBREW:\n return createAdditiveCounter(value, 1, 10999, HEBREW, LIST_STYLE_TYPE.DECIMAL, defaultSuffix);\n\n case LIST_STYLE_TYPE.HIRAGANA:\n return createCounterStyleFromSymbols(value, 'あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわゐゑをん');\n\n case LIST_STYLE_TYPE.HIRAGANA_IROHA:\n return createCounterStyleFromSymbols(value, 'いろはにほへとちりぬるをわかよたれそつねならむうゐのおくやまけふこえてあさきゆめみしゑひもせす');\n\n case LIST_STYLE_TYPE.KANNADA:\n return createCounterStyleFromRange(value, 0xce6, 0xcef, true, defaultSuffix);\n\n case LIST_STYLE_TYPE.KATAKANA:\n return createCounterStyleFromSymbols(value, 'アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヰヱヲン', cjkSuffix);\n\n case LIST_STYLE_TYPE.KATAKANA_IROHA:\n return createCounterStyleFromSymbols(value, 'イロハニホヘトチリヌルヲワカヨタレソツネナラムウヰノオクヤマケフコエテアサキユメミシヱヒモセス', cjkSuffix);\n\n case LIST_STYLE_TYPE.LAO:\n return createCounterStyleFromRange(value, 0xed0, 0xed9, true, defaultSuffix);\n\n case LIST_STYLE_TYPE.MONGOLIAN:\n return createCounterStyleFromRange(value, 0x1810, 0x1819, true, defaultSuffix);\n\n case LIST_STYLE_TYPE.MYANMAR:\n return createCounterStyleFromRange(value, 0x1040, 0x1049, true, defaultSuffix);\n\n case LIST_STYLE_TYPE.ORIYA:\n return createCounterStyleFromRange(value, 0xb66, 0xb6f, true, defaultSuffix);\n\n case LIST_STYLE_TYPE.PERSIAN:\n return createCounterStyleFromRange(value, 0x6f0, 0x6f9, true, defaultSuffix);\n\n case LIST_STYLE_TYPE.TAMIL:\n return createCounterStyleFromRange(value, 0xbe6, 0xbef, true, defaultSuffix);\n\n case LIST_STYLE_TYPE.TELUGU:\n return createCounterStyleFromRange(value, 0xc66, 0xc6f, true, defaultSuffix);\n\n case LIST_STYLE_TYPE.THAI:\n return createCounterStyleFromRange(value, 0xe50, 0xe59, true, defaultSuffix);\n\n case LIST_STYLE_TYPE.TIBETAN:\n return createCounterStyleFromRange(value, 0xf20, 0xf29, true, defaultSuffix);\n\n case LIST_STYLE_TYPE.DECIMAL:\n default:\n return createCounterStyleFromRange(value, 48, 57, true, defaultSuffix);\n }\n };\n\n var IGNORE_ATTRIBUTE = 'data-html2canvas-ignore';\n\n var DocumentCloner =\n /** @class */\n function () {\n function DocumentCloner(element, options) {\n this.options = options;\n this.scrolledElements = [];\n this.referenceElement = element;\n this.counters = new CounterState();\n this.quoteDepth = 0;\n\n if (!element.ownerDocument) {\n throw new Error('Cloned element does not have an owner document');\n }\n\n this.documentElement = this.cloneNode(element.ownerDocument.documentElement);\n }\n\n DocumentCloner.prototype.toIFrame = function (ownerDocument, windowSize) {\n var _this = this;\n\n var iframe = createIFrameContainer(ownerDocument, windowSize);\n\n if (!iframe.contentWindow) {\n return Promise.reject(\"Unable to find iframe window\");\n }\n\n var scrollX = ownerDocument.defaultView.pageXOffset;\n var scrollY = ownerDocument.defaultView.pageYOffset;\n var cloneWindow = iframe.contentWindow;\n var documentClone = cloneWindow.document;\n /* Chrome doesn't detect relative background-images assigned in inline