@digitransit-component/digitransit-component-autosuggest-panel 4.0.4 → 4.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/index.development.js +2 -2
- package/lib/index.js +1 -1
- package/lib/index.js.map +1 -1
- package/package.json +3 -3
package/lib/index.development.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("classnames"),require("prop-types"),require("react"),require("react-sortablejs"),require("i18next"),require("@digitransit-component/digitransit-component-autosuggest"),require("@digitransit-component/digitransit-component-icon"),require("lodash/isEmpty"),require("react-autosuggest")):"function"==typeof define&&define.amd?define(["exports","classnames","prop-types","react","react-sortablejs","i18next","@digitransit-component/digitransit-component-autosuggest","@digitransit-component/digitransit-component-icon","lodash/isEmpty","react-autosuggest"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self)["@digitransit-component/digitransit-component-autosuggest-panel"]={},e.cx,e.PropTypes,e.React,e.reactSortablejs,e.i18next,e.DTAutosuggest,e.Icon,e.isEmpty,e.Autosuggest)}(this,(function(e,t,n,i,o,a,s,l,r,p){"use strict";function c(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var d=c(t),u=c(n),_=c(i),h=c(a),g=c(s),f=c(l),v=c(r),y=c(p);function m(e){return m="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},m(e)}function b(e){var t=function(e,t){if("object"!=m(e)||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var i=n.call(e,t||"default");if("object"!=m(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==m(t)?t:String(t)}function x(e,t,n){return(t=b(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function k(e,t){if(null==e)return{};var n,i,o=function(e,t){if(null==e)return{};var n,i,o={},a=Object.keys(e);for(i=0;i<a.length;i++)n=a[i],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i<a.length;i++)n=a[i],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function w(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,i=new Array(t);n<t;n++)i[n]=e[n];return i}function S(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var i,o,a,s,l=[],r=!0,p=!1;try{if(a=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;r=!1}else for(;!(r=(i=a.call(n)).done)&&(l.push(i.value),l.length!==t);r=!0);}catch(e){p=!0,o=e}finally{try{if(!r&&null!=n.return&&(s=n.return(),Object(s)!==s))return}finally{if(p)throw o}}return l}}(e,t)||function(e,t){if(e){if("string"==typeof e)return w(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?w(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function E(e,t){void 0===t&&(t={});var n=t.insertAt;if(e&&"undefined"!=typeof document){var i=document.head||document.getElementsByTagName("head")[0],o=document.createElement("style");o.type="text/css","top"===n&&i.firstChild?i.insertBefore(o,i.firstChild):i.appendChild(o),o.styleSheet?o.styleSheet.cssText=e:o.appendChild(document.createTextNode(e))}}var C={"combobox-container":"select_combobox-container__0lRpm","left-column":"select_left-column__cSrMR","combobox-label":"select_combobox-label__F9Ayd",container:"select_container__yrA-N",suggestion:"select_suggestion__b05iD",suggestionHighlighted:"select_suggestionHighlighted__ZFPWo",suggestionsContainerOpen:"select_suggestionsContainerOpen__9wcJ5",input:"select_input__pK5vk"};E(".select_combobox-container__0lRpm {\n background-color: #fff;\n border: solid #888 1px;\n display: flex;\n align-items: center;\n border-radius: 5px;\n height: 50px;\n justify-content: space-between;\n flex-grow: 1; }\n .select_combobox-container__0lRpm:focus-within {\n border-color: #007ac9; }\n .select_combobox-container__0lRpm .select_left-column__cSrMR {\n display: flex;\n flex-direction: column;\n width: 100%; }\n\n.select_combobox-label__F9Ayd {\n font-size: 12px;\n line-height: 20px;\n color: #666;\n letter-spacing: -0.48px;\n margin-left: 12px;\n margin-top: 4px; }\n\n.select_container__yrA-N {\n position: relative; }\n .select_container__yrA-N .select_suggestion__b05iD {\n font-size: 15px;\n line-height: 49px;\n height: 50px;\n padding: 0 0 0 12px;\n letter-spacing: -0.6px;\n color: #333;\n font-weight: 500; }\n .select_container__yrA-N .select_suggestionHighlighted__ZFPWo {\n font-size: 15px;\n font-weight: 500;\n background: #f2f5f7; }\n .select_container__yrA-N .select_suggestionsContainerOpen__9wcJ5 {\n position: absolute;\n background-color: #fff;\n z-index: 20;\n max-height: 250px;\n overflow-x: hidden;\n overflow-y: scroll;\n border-radius: 5px;\n box-shadow: 0 2px 0 0 rgba(0, 0, 0, 0.06);\n border: 1px rgba(0, 0, 0, 0.1) solid;\n top: 35px;\n width: calc(100% + 45px); }\n .select_container__yrA-N .select_suggestionsContainerOpen__9wcJ5 ul {\n padding: 0;\n margin: 0; }\n .select_container__yrA-N .select_suggestionsContainerOpen__9wcJ5 li:not(:last-child) {\n border-bottom: 1px solid #ddd; }\n .select_container__yrA-N .select_input__pK5vk {\n -moz-appearance: none;\n appearance: none;\n margin: -4px 0 0 0;\n padding-left: 12px;\n border: none;\n height: 26px;\n background: #fff;\n font-weight: 500;\n box-shadow: none;\n font-size: 15px;\n font-stretch: normal;\n font-style: normal;\n line-height: 1.33;\n letter-spacing: -0.6px;\n color: #333; }\n .select_container__yrA-N .select_input__pK5vk:focus {\n outline: none;\n border: none;\n box-shadow: none;\n background: #fff; }\n .select_container__yrA-N .select_input__pK5vk:-moz-read-only {\n cursor: pointer;\n background: #fff; }\n .select_container__yrA-N .select_input__pK5vk:read-only {\n cursor: pointer;\n background: #fff; }\n");var P=["ref"],N=e=>{var t=e.value,n=e.getDisplay,o=e.options,a=e.onSlackTimeSelected,s=e.viaPointIndex,l=e.id,r=e.label,p=e.icon,c=S(i.useState(n(t)),2),d=c[0],u=c[1],h=S(i.useState(!1),2),g=h[0],f=h[1];i.useEffect((()=>u(n(t))),[t]);var v=i.useRef(null),m=Math.floor(t/600);i.useLayoutEffect((()=>{g&&v.current&&(v.current.scrollTop=50*m)}),[t,g]);var b=`${l}-input`,x=`${l}-label`;return _.default.createElement("label",{className:C["combobox-container"],htmlFor:b},_.default.createElement("span",{className:C["left-column"]},_.default.createElement("span",{className:C["combobox-label"],id:x},r),_.default.createElement(y.default,{id:l,suggestions:o,getSuggestionValue:e=>e.value,renderSuggestion:e=>e.displayName,onSuggestionsFetchRequested:()=>null,shouldRenderSuggestions:()=>!0,focusInputOnSuggestionClick:!1,onSuggestionsClearRequested:()=>null,inputProps:{value:d,onChange:(e,n)=>{var i=n.newValue;switch(n.method){case"enter":case"click":a(i,s);break;case"escape":u(t)}},onFocus:()=>{f(!0)},onBlur:()=>{f(!1)},id:b,"aria-labelledby":x,"aria-autocomplete":"none",readOnly:!0},renderSuggestionsContainer:e=>{var t=e.containerProps,n=e.children,i=t.ref,o=k(t,P);return _.default.createElement("div",Object.assign({tabIndex:"-1"},o,{ref:e=>{e&&(v.current=e,i(e))}}),n)},theme:C})),p)};"production"!==process.env.NODE_ENV&&(N.propTypes={value:u.default.number.isRequired,onSlackTimeSelected:u.default.func.isRequired,getDisplay:u.default.func.isRequired,options:u.default.arrayOf(u.default.shape({displayName:u.default.string.isRequired,value:u.default.number.isRequired}).isRequired).isRequired,id:u.default.string.isRequired,label:u.default.node.isRequired,icon:u.default.node.isRequired,viaPointIndex:u.default.number.isRequired});var A={de:{"add-via-button-label":"Füge Zwischenziel hinzu","add-via-duration-button-label":"Setze Umsteigezeit für Zwischenziel {{index}}","add-via-duration-button-label-close":"Schließe Umsteigezeit-Auswahl für Zwischenziel {{index}}","add-via-duration-button-label-open":"Öffne Umsteigezeit-Auswahl für Zwischenziel {{index}}","minute-short":"min","remove-via-button-label":"Entferne Zwischenziel {{index}}","swap-order-button-label":"Tausche Start mit Ziel","via-point":"Zwischenziel","via-point-index":"Zwischenziel {{index}}","viapoint-slack-amount":"Umsteigezeit"},en:{"add-via-button-label":"Add via point","add-via-duration-button-label":"Set stop duration at via point {{index}}","add-via-duration-button-label-close":"Close stop duration selector at via point {{index}}","add-via-duration-button-label-open":"Open stop duration selector at via point {{index}}","minute-short":"min","remove-via-button-label":"Remove via point {{index}}","swap-order-button-label":"Reverse origin and destination","via-point":"Via point","via-point-index":"Via point {{index}}","viapoint-slack-amount":"Stop duration"},fi:{"add-via-button-label":"Lisää välipiste","add-via-duration-button-label":"Aseta välipisteelle {{index}} pysähdyksen kesto","add-via-duration-button-label-close":"Avaa välipisteen {{index}} pysähdyksen kesto valitsin","add-via-duration-button-label-open":"Sulje välipisteen {{index}} pysähdyksen kesto valitsin","minute-short":"min","remove-via-button-label":"Poista välipiste {{index}}","swap-order-button-label":"Käännä reitin suunta vastakkaiseksi","via-point":"Välipiste","via-point-index":"Välipiste {{index}}","viapoint-slack-amount":"Pysähdyksen kesto"},pl:{"add-via-button-label":"Dodaj punkt pośredni","add-via-duration-button-label":"Wybierz czas postoju dla punktu {{index}}","add-via-duration-button-label-close":"Zamknij wybornik czasu postoju w punkcie {{index}}","add-via-duration-button-label-open":"Otwórz wybornik czasu postoju w punkcie {{index}}","minute-short":"min.","remove-via-button-label":"Usuń punkt pośredni {{index}}","swap-order-button-label":"Odwróć początek i cel","via-point":"Punkt pośredni","via-point-index":"Punkt pośredni {{index}}","viapoint-slack-amount":"Czas postoju"},sv:{"add-via-button-label":"Lägg till viapunkt","add-via-duration-button-label":"Ställ in varaktighet för viapunkten {{index}}","add-via-duration-button-label-close":"Stäng väljaren för varaktighet vid via-punkten {{index}}","add-via-duration-button-label-open":"Öppna väljaren för varaktighet vid via-punkten {{index}}","minute-short":"min","remove-via-button-label":"Ta bort viapunkt {{index}}","swap-order-button-label":"Sväng ruttens riktning till den motsatta","via-point":"Via punkt","via-point-index":"Via punkt {{index}}","viapoint-slack-amount":"Stoppets varaktighet"}},O={"autosuggest-panel":"styles_autosuggest-panel__meNwd","autosuggest-searchpanel-text":"styles_autosuggest-searchpanel-text__-VQTg","origin-input-container":"styles_origin-input-container__p4Qik","destination-input-container":"styles_destination-input-container__jBY4I",row:"styles_row__1GhCD","viapoints-container":"styles_viapoints-container__FYp7K","viapoint-container":"styles_viapoint-container__8yh1M","light-gray-background":"styles_light-gray-background__4fyZs","viapoint-before":"styles_viapoint-before__t4saF","viapoint-input-container":"styles_viapoint-input-container__uZx95","viapoint-1":"styles_viapoint-1__8Mna8",viapoint:"styles_viapoint__vUO9L","viapoint-2":"styles_viapoint-2__-OoUa","viapoint-3":"styles_viapoint-3__vvivE","viapoint-4":"styles_viapoint-4__jS9k1","viapoint-5":"styles_viapoint-5__J4V5N","viapoint-slack-time":"styles_viapoint-slack-time__Xpo0G","select-wrapper":"styles_select-wrapper__1usZw","via-point-button-container":"styles_via-point-button-container__cI2JI","input-viapoint-slack-container":"styles_input-viapoint-slack-container__TNgVy","itinerary-search-control":"styles_itinerary-search-control__cEL1X",opposite:"styles_opposite__zQQhd","add-via-point":"styles_add-via-point__E-gGB","add-via-point-slack":"styles_add-via-point-slack__GKjFf","remove-via-point":"styles_remove-via-point__e9DMQ","combobox-icon":"styles_combobox-icon__d3k1e","time-input-icon":"styles_time-input-icon__M8dmw","rectangle-container":"styles_rectangle-container__AdbAA",rectangle:"styles_rectangle__1IO7E","search-panel-whitespace":"styles_search-panel-whitespace__Luhwx"};E(".styles_autosuggest-panel__meNwd {\n width: 100%; }\n\n.styles_autosuggest-searchpanel-text__-VQTg {\n font-size: 24px;\n font-weight: var(--font-weight-medium);\n letter-spacing: -0.8px;\n color: #333;\n line-height: 1;\n margin-bottom: 17px;\n margin-top: unset; }\n @media screen and (min-width: 768px) {\n .styles_autosuggest-searchpanel-text__-VQTg {\n letter-spacing: -0.8px;\n line-height: 27px;\n margin-bottom: 21px; } }\n\n.styles_origin-input-container__p4Qik,\n.styles_destination-input-container__jBY4I {\n display: flex;\n flex: 1 0 100%; }\n .styles_origin-input-container__p4Qik input[type='text'],\n .styles_destination-input-container__jBY4I input[type='text'] {\n margin: 0; }\n\n.styles_row__1GhCD {\n display: flex;\n flex-direction: row; }\n\n.styles_viapoints-container__FYp7K {\n display: flex;\n flex-direction: column; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M {\n display: flex;\n flex: 1 0 100%;\n min-height: 50px; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M:first-child {\n margin-top: 6px; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M:not(:first-child) {\n margin-top: 3px; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M:last-child {\n margin-bottom: 6px; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs {\n display: flex;\n padding: 3px 0;\n flex-direction: column;\n background: #f2f5f7;\n border-radius: 5px;\n width: 100%; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-before__t4saF {\n display: flex;\n min-width: 27px;\n justify-content: center;\n align-items: center; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-before__t4saF svg {\n fill: #888;\n height: 20px; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-input-container__uZx95 {\n display: flex;\n align-items: center;\n width: 100%; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-input-container__uZx95 input[type='text'] {\n margin: 0; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-input-container__uZx95.styles_viapoint-1__8Mna8 > div.styles_viapoint__vUO9L {\n z-index: 15; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-input-container__uZx95.styles_viapoint-2__-OoUa > div.styles_viapoint__vUO9L {\n z-index: 14; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-input-container__uZx95.styles_viapoint-3__vvivE > div.styles_viapoint__vUO9L {\n z-index: 13; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-input-container__uZx95.styles_viapoint-4__jS9k1 > div.styles_viapoint__vUO9L {\n z-index: 12; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-input-container__uZx95.styles_viapoint-5__J4V5N > div.styles_viapoint__vUO9L {\n z-index: 11; }\n\n.styles_viapoint-slack-time__Xpo0G {\n font-size: 13px;\n font-weight: normal;\n letter-spacing: -0.36px;\n color: #333;\n padding-left: 27px;\n padding-top: 12px;\n padding-bottom: 10px; }\n\n.styles_select-wrapper__1usZw {\n display: flex;\n height: 50px;\n margin-top: 9px;\n padding-left: 27px;\n padding-right: 47px; }\n\n.styles_via-point-button-container__cI2JI {\n display: flex; }\n .styles_via-point-button-container__cI2JI > div:nth-child(1) {\n order: 1;\n border-left: none; }\n .styles_via-point-button-container__cI2JI > div:nth-child(2) {\n order: 2;\n border-left: 1px solid rgba(151, 151, 151, 0.2); }\n\n.styles_input-viapoint-slack-container__TNgVy {\n display: flex;\n flex-direction: column; }\n\n.styles_itinerary-search-control__cEL1X {\n display: flex;\n align-items: center;\n justify-content: center;\n text-align: center;\n max-height: 50px;\n min-width: var(--width); }\n .styles_itinerary-search-control__cEL1X + .styles_itinerary-search-control__cEL1X {\n border-left: 1px solid rgba(151, 151, 151, 0.2); }\n .styles_itinerary-search-control__cEL1X .styles_opposite__zQQhd {\n display: flex;\n justify-content: center;\n align-items: center;\n height: 100%;\n min-width: 40px;\n cursor: pointer; }\n .styles_itinerary-search-control__cEL1X .styles_opposite__zQQhd svg {\n width: 19px;\n height: 17px; }\n .styles_itinerary-search-control__cEL1X .styles_add-via-point__E-gGB {\n display: flex;\n justify-content: center;\n align-items: center;\n height: 100%;\n min-width: 40px;\n cursor: pointer; }\n .styles_itinerary-search-control__cEL1X .styles_add-via-point__E-gGB svg {\n width: 20px;\n height: 22px; }\n .styles_itinerary-search-control__cEL1X .styles_add-via-point-slack__GKjFf {\n display: flex;\n justify-content: center;\n align-items: center;\n height: 100%;\n min-width: 47px;\n cursor: pointer; }\n .styles_itinerary-search-control__cEL1X .styles_add-via-point-slack__GKjFf svg {\n width: 18px;\n height: 19px; }\n .styles_itinerary-search-control__cEL1X .styles_remove-via-point__e9DMQ {\n display: flex;\n justify-content: center;\n align-items: center;\n height: 100%;\n max-height: 44px;\n min-width: 40px;\n cursor: pointer; }\n .styles_itinerary-search-control__cEL1X .styles_remove-via-point__e9DMQ svg {\n width: 14px;\n height: 14px; }\n\n.styles_combobox-icon__d3k1e {\n color: var(--color);\n border-left: solid #888 1px;\n height: 35px; }\n .styles_combobox-icon__d3k1e.styles_time-input-icon__M8dmw {\n padding: 9px 13px 0 13px; }\n .styles_combobox-icon__d3k1e.styles_time-input-icon__M8dmw svg {\n width: 18px;\n height: 19px; }\n\n.styles_rectangle-container__AdbAA {\n display: block;\n position: relative;\n height: 9px;\n z-index: 19; }\n .styles_rectangle-container__AdbAA .styles_rectangle__1IO7E {\n position: absolute;\n width: 4px;\n height: 21px;\n border-radius: 2px;\n background-color: #ddd;\n margin-left: 25px;\n margin-top: -5px; }\n\n.styles_search-panel-whitespace__Luhwx {\n min-width: 40px; }\n");var V=["children","className","enabled","onClick","onKeyPress","wide"];h.default.init({lng:"fi",fallbackLng:"fi",defaultNS:"translation",interpolation:{escapeValue:!1}});var I=()=>({}),R=e=>{if(void 0===e||v.default(e))return!0;var t=Object.keys(e);return 1===t.length||2===t.length&&t.includes("locationSlack")},M=e=>{var t=e.children,n=e.className,i=e.enabled,o=e.onClick,a=e.onKeyPress,s=e.wide,l=k(e,V);return _.default.createElement("div",{className:O["itinerary-search-control"],style:{"--width":s?"47px":"40px"}},o&&i&&_.default.createElement("div",Object.assign({},l,{className:n,onClick:o,onKeyPress:a,role:"button",tabIndex:"0"}),t))},j=e=>`${e/60} ${h.default.t("minute-short")}`,L=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=e.indexOf(t);return i>-1&&e.splice(i,1),n?e.map((e=>e>t?e-1:e)):e},F=e=>{var t=e&&(e.key||e.which||e.keyCode)||"";return!(!t||![13," ","Spacebar"].concat([32,"Enter"]).includes(t))&&(e.preventDefault(),!0)},z=e=>e&&e.address||e&&e.gps&&e.ready&&"Nykyinen sijainti"||"",K=e=>e&&!0===e.gps?"position":"location";"production"!==process.env.NODE_ENV&&(M.propTypes={children:u.default.node,className:u.default.string.isRequired,enabled:u.default.bool.isRequired,onClick:u.default.func.isRequired,onKeyPress:u.default.func.isRequired,wide:u.default.bool}),M.defaultProps={children:void 0,wide:!1};var Z="production"!==process.env.NODE_ENV?u.default.shape({address:u.default.string,lat:u.default.number,lon:u.default.number,locationSlack:u.default.number}):{};class T extends _.default.Component{constructor(e){super(e),x(this,"storeReference",(e=>{this.setState((t=>({refs:[...t.refs,e]})))})),x(this,"handleFocusChange",(()=>{var e=this.props.destination;e&&e.lat||this.state.refs[1].focus()})),x(this,"updateViaPoints",(e=>{0!==e.length?this.props.updateViaPoints(e.filter((e=>!R(e)))):this.props.updateViaPoints([])})),x(this,"handleToggleViaPointSlackClick",(e=>{var t=this.state.activeSlackInputs;this.setState({activeSlackInputs:t.includes(e)?L(t,e):t.concat([e])})})),x(this,"handleViaPointSlackTimeSelected",((e,t)=>{this.props.addAnalyticsEvent&&this.props.addAnalyticsEvent({action:"EditViaPointStopDuration",category:"ItinerarySettings",name:e/60});var n=this.props.viaPoints;n[t].locationSlack=Number.parseInt(e,10),this.updateViaPoints(n)})),x(this,"handleViaPointLocationSelected",((e,t)=>{this.props.handleViaPointLocationSelected(e,t)})),x(this,"handleRemoveViaPointClick",(e=>{this.props.addAnalyticsEvent&&this.props.addAnalyticsEvent({action:"RemoveJourneyViaPoint",category:"ItinerarySettings",name:null});var t=this.state.activeSlackInputs,n=this.props.viaPoints;n.splice(e,1),this.setState({activeSlackInputs:L(t,e,!0)},(()=>this.updateViaPoints(n)))})),x(this,"handleAddViaPointClick",(()=>{this.props.addAnalyticsEvent&&this.props.addAnalyticsEvent({action:"AddJourneyViaPoint",category:"ItinerarySettings",name:"QuickSettingsButton"}),this.props.viaPoints.push({}),this.setState(this.state)})),x(this,"handleSwapOrderClick",(()=>{this.props.addAnalyticsEvent&&this.props.addAnalyticsEvent({action:"SwitchJourneyStartAndEndPointOrder",category:"ItinerarySettings",name:null}),this.props.viaPoints.reverse(),this.props.swapOrder()})),this.state={activeSlackInputs:[],refs:[]},Object.keys(A).forEach((e=>{h.default.addResourceBundle(e,"translation",A[e])}))}componentDidMount(){h.default.changeLanguage(this.props.lang)}componentDidUpdate(){h.default.language!==this.props.lang&&h.default.changeLanguage(this.props.lang)}render(){var e=this.props,t=e.origin,n=e.searchPanelText,i=e.searchContext,a=e.disableAutoFocus,s=e.viaPoints,l=e.originMobileLabel,r=e.destinationMobileLabel,p=e.fontWeights,c=e.onFocusChange,u=e.showSwapControl,v=e.showViapointControl,y=this.state.activeSlackInputs,m=(()=>{for(var e=[],t=0;t<=9;t++){var n=10*t;e.push({displayName:`${n} ${h.default.t("minute-short")}`,value:60*n})}return e})(),b=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return e&&e.locationSlack||t},x=e=>y.includes(e);return _.default.createElement("div",{className:d.default(O["autosuggest-panel"],this.props.isMobile&&"small"),style:{"--color":`${this.props.color}`,"--font-weight-medium":p.medium}}," ",n?_.default.createElement("div",null,_.default.createElement("h1",{className:O["autosuggest-searchpanel-text"]}," ",n)):null,_.default.createElement("div",{className:O["origin-input-container"]},_.default.createElement(g.default,{appElement:this.props.appElement,icon:"mapMarker",id:"origin",autoFocus:!0!==a&&(!this.props.isMobile&&!t.lat),storeRef:this.storeReference,refPoint:this.props.refPoint,className:K(t),placeholder:this.props.originPlaceHolder,value:z(t),searchContext:i,getAutoSuggestIcons:this.props.getAutoSuggestIcons,onSelect:this.props.onSelect,onClear:this.props.onClear,focusChange:c||this.handleFocusChange,lang:this.props.lang,sources:this.props.sources,targets:this.props.targets,filterResults:this.props.filterResults,isMobile:this.props.isMobile,color:this.props.color,hoverColor:this.props.hoverColor,mobileLabel:l,fontWeights:this.props.fontWeights,modeSet:this.props.modeSet,modeIconColors:this.props.modeIconColors,showScroll:this.props.showScroll,isEmbedded:this.props.isEmbedded}),(u||v)&&_.default.createElement(M,{className:O.opposite,enabled:u,onClick:()=>this.handleSwapOrderClick(),onKeyPress:e=>F(e)&&this.handleSwapOrderClick(),"aria-label":h.default.t("swap-order-button-label")},_.default.createElement(f.default,{img:"opposite",color:this.props.color}))),0===s.length&&_.default.createElement("div",{className:O["rectangle-container"]},_.default.createElement("div",{className:O.rectangle})),_.default.createElement(o.ReactSortable,{className:O["viapoints-container"],list:s,handle:`.${O["viapoint-before"]}`,animation:200,disabled:s.length<=1,setList:e=>{var t=e.filter((e=>!R(e)));t.length>0&&this.props.updateViaPoints(t)}},s.map(((e,t)=>_.default.createElement("div",{className:d.default(O["viapoint-container"]),key:`viapoint-${t}`},_.default.createElement("div",{className:O["light-gray-background"]},_.default.createElement("div",{className:O.row},_.default.createElement("div",{className:O["viapoint-before"],style:s.length>1?{cursor:"move"}:{}},s.length>1&&_.default.createElement(f.default,{img:"ellipsis",rotate:90,color:this.props.color})),_.default.createElement("div",{className:`${O["viapoint-input-container"]} ${O[`viapoint-${t+1}`]}`},_.default.createElement(g.default,{appElement:this.props.appElement,icon:"mapMarker-via",id:"via-point",ariaLabel:h.default.t("via-point-index",{index:t+1}),autoFocus:!0!==a&&!this.props.isMobile,placeholder:"via-point",className:"viapoint",searchContext:i,refPoint:this.props.refPoint,value:e&&e.address||"",onSelect:this.props.onSelect,onClear:this.props.onClear,handleViaPoints:e=>this.handleViaPointLocationSelected(e,t),lang:this.props.lang,sources:this.props.sources,targets:["Stops","Stations"],filterResults:this.props.filterResults,getAutoSuggestIcons:this.props.getAutoSuggestIcons,isMobile:this.props.isMobile,color:this.props.color,hoverColor:this.props.hoverColor,fontWeights:this.props.fontWeights,modeSet:this.props.modeSet,modeIconColors:this.props.modeIconColors,showScroll:this.props.showScroll})),this.props.showSlackControl&&_.default.createElement(M,{className:O["add-via-point-slack"],enabled:this.props.showViapointControl,onClick:()=>this.handleToggleViaPointSlackClick(t),onKeyPress:e=>F(e)&&this.handleToggleViaPointSlackClick(t),"aria-label":h.default.t(x(t)?"add-via-duration-button-label-open":"add-via-duration-button-label-close",{index:t+1}),wide:!0},_.default.createElement(f.default,{img:"time",color:this.props.color}))),!x(t)&&s[t]&&s[t].locationSlack>0&&_.default.createElement("span",{className:O["viapoint-slack-time"]},`${h.default.t("viapoint-slack-amount")}: ${j(s[t].locationSlack)}`),_.default.createElement("div",{className:d.default(O["input-viapoint-slack-container"],!x(t)&&"collapsed")},_.default.createElement("div",{className:O["select-wrapper"]},_.default.createElement(N,{id:`viapoint-slack-${t}`,label:h.default.t("viapoint-slack-amount"),options:m,value:b(s[t]),getDisplay:j,viaPointIndex:t,icon:_.default.createElement("span",{className:`${O["combobox-icon"]} ${O["time-input-icon"]}`},_.default.createElement(f.default,{img:"time",color:this.props.color})),onSlackTimeSelected:this.handleViaPointSlackTimeSelected})))),_.default.createElement(M,{className:O["remove-via-point"],enabled:this.props.showViapointControl,onClick:()=>this.handleRemoveViaPointClick(t),onKeyPress:e=>F(e)&&this.handleRemoveViaPointClick(t),"aria-label":h.default.t("remove-via-button-label",{index:t+1})},_.default.createElement(f.default,{img:"trash",color:this.props.color})))))),_.default.createElement("div",{className:O["destination-input-container"]},_.default.createElement(g.default,{appElement:this.props.appElement,icon:"mapMarker",id:"destination",autoFocus:!0!==a&&(!this.props.isMobile&&!Number.isNaN(t.lat)),storeRef:this.storeReference,placeholder:this.props.destinationPlaceHolder,className:K(this.props.destination),getAutoSuggestIcons:this.props.getAutoSuggestIcons,searchContext:i,onSelect:this.props.onSelect,onClear:this.props.onClear,refPoint:this.props.refPoint,value:z(this.props.destination),lang:this.props.lang,sources:this.props.sources,targets:this.props.targets,filterResults:this.props.filterResults,isMobile:this.props.isMobile,color:this.props.color,hoverColor:this.props.hoverColor,mobileLabel:r,fontWeights:this.props.fontWeights,modeSet:this.props.modeSet,modeIconColors:this.props.modeIconColors,showScroll:this.props.showScroll,isEmbedded:this.props.isEmbedded}),(u||v)&&_.default.createElement(M,{className:d.default(O["add-via-point"],O.more,s.length>4&&"collapsed"),enabled:v&&0===s.length,onClick:()=>this.handleAddViaPointClick(),onKeyPress:e=>F(e)&&this.handleAddViaPointClick(),"aria-label":h.default.t("add-via-button-label")},_.default.createElement(f.default,{img:"viapoint",width:1.25,height:1.375,color:this.props.color}))))}}x(T,"defaultProps",{origin:void 0,destination:void 0,viaPoints:[],originPlaceHolder:"give-origin",destinationPlaceHolder:"give-destination",swapOrder:void 0,updateViaPoints:()=>{},lang:"fi",searchPanelText:void 0,sources:[],targets:[],filterResults:void 0,onClear:void 0,getAutoSuggestIcons:void 0,refPoint:void 0,addAnalyticsEvent:void 0,disableAutoFocus:!1,isMobile:!1,handleViaPointLocationSelected:void 0,color:"#007ac9",hoverColor:"#0062a1",originMobileLabel:null,destinationMobileLabel:null,modeSet:void 0,modeIconColors:void 0,fontWeights:{medium:500},showScroll:!1,onFocusChange:void 0,isEmbedded:!1,showSwapControl:!1,showViapointControl:!1,showSlackControl:!1}),"production"!==process.env.NODE_ENV&&(T.propTypes={appElement:u.default.string.isRequired,origin:Z,destination:Z,originPlaceHolder:u.default.string,destinationPlaceHolder:u.default.string,viaPoints:u.default.arrayOf(Z),updateViaPoints:u.default.func,handleViaPointLocationSelected:u.default.func,swapOrder:u.default.func,searchPanelText:u.default.string,searchContext:u.default.shape({URL_PELIAS:u.default.string}).isRequired,onSelect:u.default.func.isRequired,onClear:u.default.func,addAnalyticsEvent:u.default.func,lang:u.default.string,disableAutoFocus:u.default.bool,sources:u.default.arrayOf(u.default.string),targets:u.default.arrayOf(u.default.string),filterResults:u.default.func,isMobile:u.default.bool,color:u.default.string,hoverColor:u.default.string,originMobileLabel:u.default.string,destinationMobileLabel:u.default.string,refPoint:Z,modeSet:u.default.string,modeIconColors:u.default.objectOf(u.default.string),getAutoSuggestIcons:u.default.objectOf(u.default.func),fontWeights:u.default.shape({medium:u.default.number}),showScroll:u.default.bool,onFocusChange:u.default.func,isEmbedded:u.default.bool,showSwapControl:u.default.bool,showViapointControl:u.default.bool,showSlackControl:u.default.bool}),e.default=T,e.getEmptyViaPointPlaceHolder=I,Object.defineProperty(e,"__esModule",{value:!0})}));
|
|
2
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZGV2ZWxvcG1lbnQuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS90eXBlb2YuanMiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vdG9Qcm9wZXJ0eUtleS5qcyIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS90b1ByaW1pdGl2ZS5qcyIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9kZWZpbmVQcm9wZXJ0eS5qcyIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllcy5qcyIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlLmpzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2FycmF5TGlrZVRvQXJyYXkuanMiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vc2xpY2VkVG9BcnJheS5qcyIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hcnJheVdpdGhIb2xlcy5qcyIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9pdGVyYWJsZVRvQXJyYXlMaW1pdC5qcyIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheS5qcyIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9ub25JdGVyYWJsZVJlc3QuanMiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtaW5qZWN0L2Rpc3Qvc3R5bGUtaW5qZWN0LmVzLmpzIiwiLi4vc3JjL2hlbHBlcnMvU2VsZWN0LmpzIiwiLi4vc3JjL2hlbHBlcnMvdHJhbnNsYXRpb25zLmpzIiwiLi4vc3JjL2luZGV4LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF90eXBlb2Yobykge1xuICBcIkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mXCI7XG5cbiAgcmV0dXJuIF90eXBlb2YgPSBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBcInN5bWJvbFwiID09IHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPyBmdW5jdGlvbiAobykge1xuICAgIHJldHVybiB0eXBlb2YgbztcbiAgfSA6IGZ1bmN0aW9uIChvKSB7XG4gICAgcmV0dXJuIG8gJiYgXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgby5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG8gIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG87XG4gIH0sIF90eXBlb2Yobyk7XG59IiwiaW1wb3J0IF90eXBlb2YgZnJvbSBcIi4vdHlwZW9mLmpzXCI7XG5pbXBvcnQgdG9QcmltaXRpdmUgZnJvbSBcIi4vdG9QcmltaXRpdmUuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHRvUHJvcGVydHlLZXkodCkge1xuICB2YXIgaSA9IHRvUHJpbWl0aXZlKHQsIFwic3RyaW5nXCIpO1xuICByZXR1cm4gXCJzeW1ib2xcIiA9PSBfdHlwZW9mKGkpID8gaSA6IFN0cmluZyhpKTtcbn0iLCJpbXBvcnQgX3R5cGVvZiBmcm9tIFwiLi90eXBlb2YuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHRvUHJpbWl0aXZlKHQsIHIpIHtcbiAgaWYgKFwib2JqZWN0XCIgIT0gX3R5cGVvZih0KSB8fCAhdCkgcmV0dXJuIHQ7XG4gIHZhciBlID0gdFtTeW1ib2wudG9QcmltaXRpdmVdO1xuICBpZiAodm9pZCAwICE9PSBlKSB7XG4gICAgdmFyIGkgPSBlLmNhbGwodCwgciB8fCBcImRlZmF1bHRcIik7XG4gICAgaWYgKFwib2JqZWN0XCIgIT0gX3R5cGVvZihpKSkgcmV0dXJuIGk7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuXCIpO1xuICB9XG4gIHJldHVybiAoXCJzdHJpbmdcIiA9PT0gciA/IFN0cmluZyA6IE51bWJlcikodCk7XG59IiwiaW1wb3J0IHRvUHJvcGVydHlLZXkgZnJvbSBcIi4vdG9Qcm9wZXJ0eUtleS5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkge1xuICBrZXkgPSB0b1Byb3BlcnR5S2V5KGtleSk7XG4gIGlmIChrZXkgaW4gb2JqKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7XG4gICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgd3JpdGFibGU6IHRydWVcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICBvYmpba2V5XSA9IHZhbHVlO1xuICB9XG4gIHJldHVybiBvYmo7XG59IiwiaW1wb3J0IG9iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UgZnJvbSBcIi4vb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZS5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKHNvdXJjZSwgZXhjbHVkZWQpIHtcbiAgaWYgKHNvdXJjZSA9PSBudWxsKSByZXR1cm4ge307XG4gIHZhciB0YXJnZXQgPSBvYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHNvdXJjZSwgZXhjbHVkZWQpO1xuICB2YXIga2V5LCBpO1xuICBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykge1xuICAgIHZhciBzb3VyY2VTeW1ib2xLZXlzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzb3VyY2UpO1xuICAgIGZvciAoaSA9IDA7IGkgPCBzb3VyY2VTeW1ib2xLZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBrZXkgPSBzb3VyY2VTeW1ib2xLZXlzW2ldO1xuICAgICAgaWYgKGV4Y2x1ZGVkLmluZGV4T2Yoa2V5KSA+PSAwKSBjb250aW51ZTtcbiAgICAgIGlmICghT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHNvdXJjZSwga2V5KSkgY29udGludWU7XG4gICAgICB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdGFyZ2V0O1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHNvdXJjZSwgZXhjbHVkZWQpIHtcbiAgaWYgKHNvdXJjZSA9PSBudWxsKSByZXR1cm4ge307XG4gIHZhciB0YXJnZXQgPSB7fTtcbiAgdmFyIHNvdXJjZUtleXMgPSBPYmplY3Qua2V5cyhzb3VyY2UpO1xuICB2YXIga2V5LCBpO1xuICBmb3IgKGkgPSAwOyBpIDwgc291cmNlS2V5cy5sZW5ndGg7IGkrKykge1xuICAgIGtleSA9IHNvdXJjZUtleXNbaV07XG4gICAgaWYgKGV4Y2x1ZGVkLmluZGV4T2Yoa2V5KSA+PSAwKSBjb250aW51ZTtcbiAgICB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldO1xuICB9XG4gIHJldHVybiB0YXJnZXQ7XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX2FycmF5TGlrZVRvQXJyYXkoYXJyLCBsZW4pIHtcbiAgaWYgKGxlbiA9PSBudWxsIHx8IGxlbiA+IGFyci5sZW5ndGgpIGxlbiA9IGFyci5sZW5ndGg7XG4gIGZvciAodmFyIGkgPSAwLCBhcnIyID0gbmV3IEFycmF5KGxlbik7IGkgPCBsZW47IGkrKykgYXJyMltpXSA9IGFycltpXTtcbiAgcmV0dXJuIGFycjI7XG59IiwiaW1wb3J0IGFycmF5V2l0aEhvbGVzIGZyb20gXCIuL2FycmF5V2l0aEhvbGVzLmpzXCI7XG5pbXBvcnQgaXRlcmFibGVUb0FycmF5TGltaXQgZnJvbSBcIi4vaXRlcmFibGVUb0FycmF5TGltaXQuanNcIjtcbmltcG9ydCB1bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSBmcm9tIFwiLi91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheS5qc1wiO1xuaW1wb3J0IG5vbkl0ZXJhYmxlUmVzdCBmcm9tIFwiLi9ub25JdGVyYWJsZVJlc3QuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9zbGljZWRUb0FycmF5KGFyciwgaSkge1xuICByZXR1cm4gYXJyYXlXaXRoSG9sZXMoYXJyKSB8fCBpdGVyYWJsZVRvQXJyYXlMaW1pdChhcnIsIGkpIHx8IHVuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KGFyciwgaSkgfHwgbm9uSXRlcmFibGVSZXN0KCk7XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX2FycmF5V2l0aEhvbGVzKGFycikge1xuICBpZiAoQXJyYXkuaXNBcnJheShhcnIpKSByZXR1cm4gYXJyO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9pdGVyYWJsZVRvQXJyYXlMaW1pdChyLCBsKSB7XG4gIHZhciB0ID0gbnVsbCA9PSByID8gbnVsbCA6IFwidW5kZWZpbmVkXCIgIT0gdHlwZW9mIFN5bWJvbCAmJiByW1N5bWJvbC5pdGVyYXRvcl0gfHwgcltcIkBAaXRlcmF0b3JcIl07XG4gIGlmIChudWxsICE9IHQpIHtcbiAgICB2YXIgZSxcbiAgICAgIG4sXG4gICAgICBpLFxuICAgICAgdSxcbiAgICAgIGEgPSBbXSxcbiAgICAgIGYgPSAhMCxcbiAgICAgIG8gPSAhMTtcbiAgICB0cnkge1xuICAgICAgaWYgKGkgPSAodCA9IHQuY2FsbChyKSkubmV4dCwgMCA9PT0gbCkge1xuICAgICAgICBpZiAoT2JqZWN0KHQpICE9PSB0KSByZXR1cm47XG4gICAgICAgIGYgPSAhMTtcbiAgICAgIH0gZWxzZSBmb3IgKDsgIShmID0gKGUgPSBpLmNhbGwodCkpLmRvbmUpICYmIChhLnB1c2goZS52YWx1ZSksIGEubGVuZ3RoICE9PSBsKTsgZiA9ICEwKTtcbiAgICB9IGNhdGNoIChyKSB7XG4gICAgICBvID0gITAsIG4gPSByO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0cnkge1xuICAgICAgICBpZiAoIWYgJiYgbnVsbCAhPSB0W1wicmV0dXJuXCJdICYmICh1ID0gdFtcInJldHVyblwiXSgpLCBPYmplY3QodSkgIT09IHUpKSByZXR1cm47XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICBpZiAobykgdGhyb3cgbjtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGE7XG4gIH1cbn0iLCJpbXBvcnQgYXJyYXlMaWtlVG9BcnJheSBmcm9tIFwiLi9hcnJheUxpa2VUb0FycmF5LmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkobywgbWluTGVuKSB7XG4gIGlmICghbykgcmV0dXJuO1xuICBpZiAodHlwZW9mIG8gPT09IFwic3RyaW5nXCIpIHJldHVybiBhcnJheUxpa2VUb0FycmF5KG8sIG1pbkxlbik7XG4gIHZhciBuID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG8pLnNsaWNlKDgsIC0xKTtcbiAgaWYgKG4gPT09IFwiT2JqZWN0XCIgJiYgby5jb25zdHJ1Y3RvcikgbiA9IG8uY29uc3RydWN0b3IubmFtZTtcbiAgaWYgKG4gPT09IFwiTWFwXCIgfHwgbiA9PT0gXCJTZXRcIikgcmV0dXJuIEFycmF5LmZyb20obyk7XG4gIGlmIChuID09PSBcIkFyZ3VtZW50c1wiIHx8IC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pKSByZXR1cm4gYXJyYXlMaWtlVG9BcnJheShvLCBtaW5MZW4pO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9ub25JdGVyYWJsZVJlc3QoKSB7XG4gIHRocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIik7XG59IiwiZnVuY3Rpb24gc3R5bGVJbmplY3QoY3NzLCByZWYpIHtcbiAgaWYgKCByZWYgPT09IHZvaWQgMCApIHJlZiA9IHt9O1xuICB2YXIgaW5zZXJ0QXQgPSByZWYuaW5zZXJ0QXQ7XG5cbiAgaWYgKCFjc3MgfHwgdHlwZW9mIGRvY3VtZW50ID09PSAndW5kZWZpbmVkJykgeyByZXR1cm47IH1cblxuICB2YXIgaGVhZCA9IGRvY3VtZW50LmhlYWQgfHwgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2hlYWQnKVswXTtcbiAgdmFyIHN0eWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTtcbiAgc3R5bGUudHlwZSA9ICd0ZXh0L2Nzcyc7XG5cbiAgaWYgKGluc2VydEF0ID09PSAndG9wJykge1xuICAgIGlmIChoZWFkLmZpcnN0Q2hpbGQpIHtcbiAgICAgIGhlYWQuaW5zZXJ0QmVmb3JlKHN0eWxlLCBoZWFkLmZpcnN0Q2hpbGQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBoZWFkLmFwcGVuZENoaWxkKHN0eWxlKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgaGVhZC5hcHBlbmRDaGlsZChzdHlsZSk7XG4gIH1cblxuICBpZiAoc3R5bGUuc3R5bGVTaGVldCkge1xuICAgIHN0eWxlLnN0eWxlU2hlZXQuY3NzVGV4dCA9IGNzcztcbiAgfSBlbHNlIHtcbiAgICBzdHlsZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShjc3MpKTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBzdHlsZUluamVjdDtcbiIsImltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUsIHVzZUVmZmVjdCwgdXNlUmVmLCB1c2VMYXlvdXRFZmZlY3QgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgQXV0b3N1Z2dlc3QgZnJvbSAncmVhY3QtYXV0b3N1Z2dlc3QnO1xuaW1wb3J0IHN0eWxlcyBmcm9tICcuL3NlbGVjdC5zY3NzJztcblxuY29uc3QgU2VsZWN0ID0gKHtcbiAgdmFsdWUsXG4gIGdldERpc3BsYXksXG4gIG9wdGlvbnMsXG4gIG9uU2xhY2tUaW1lU2VsZWN0ZWQsXG4gIHZpYVBvaW50SW5kZXgsXG4gIGlkLFxuICBsYWJlbCxcbiAgaWNvbixcbn0pID0+IHtcbiAgY29uc3QgW2Rpc3BsYXlWYWx1ZSwgY2hhbmdlRGlzcGxheVZhbHVlXSA9IHVzZVN0YXRlKGdldERpc3BsYXkodmFsdWUpKTtcbiAgY29uc3QgW29wZW4sIGNoYW5nZU9wZW5dID0gdXNlU3RhdGUoZmFsc2UpO1xuICB1c2VFZmZlY3QoKCkgPT4gY2hhbmdlRGlzcGxheVZhbHVlKGdldERpc3BsYXkodmFsdWUpKSwgW3ZhbHVlXSk7XG4gIGNvbnN0IHNjcm9sbFJlZiA9IHVzZVJlZihudWxsKTtcbiAgY29uc3Qgc2Nyb2xsSW5kZXggPSBNYXRoLmZsb29yKHZhbHVlIC8gNjAwKTtcbiAgY29uc3QgZWxlbWVudEhlaWdodCA9IDUwO1xuICB1c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChvcGVuICYmIHNjcm9sbFJlZi5jdXJyZW50KSB7XG4gICAgICBzY3JvbGxSZWYuY3VycmVudC5zY3JvbGxUb3AgPSBlbGVtZW50SGVpZ2h0ICogc2Nyb2xsSW5kZXg7XG4gICAgfVxuICB9LCBbdmFsdWUsIG9wZW5dKTtcblxuICBjb25zdCBpbnB1dElkID0gYCR7aWR9LWlucHV0YDtcbiAgY29uc3QgbGFiZWxJZCA9IGAke2lkfS1sYWJlbGA7XG5cbiAgY29uc3Qgb25JbnB1dENoYW5nZSA9IChfLCB7IG5ld1ZhbHVlLCBtZXRob2QgfSkgPT4ge1xuICAgIHN3aXRjaCAobWV0aG9kKSB7XG4gICAgICBjYXNlICdlbnRlcic6XG4gICAgICBjYXNlICdjbGljayc6XG4gICAgICAgIG9uU2xhY2tUaW1lU2VsZWN0ZWQobmV3VmFsdWUsIHZpYVBvaW50SW5kZXgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2VzY2FwZSc6XG4gICAgICAgIGNoYW5nZURpc3BsYXlWYWx1ZSh2YWx1ZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAndXAnOlxuICAgICAgY2FzZSAnZG93bic6XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBicmVhaztcbiAgICB9XG4gIH07XG4gIHJldHVybiAoXG4gICAgPGxhYmVsIGNsYXNzTmFtZT17c3R5bGVzWydjb21ib2JveC1jb250YWluZXInXX0gaHRtbEZvcj17aW5wdXRJZH0+XG4gICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlc1snbGVmdC1jb2x1bW4nXX0+XG4gICAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzWydjb21ib2JveC1sYWJlbCddfSBpZD17bGFiZWxJZH0+XG4gICAgICAgICAge2xhYmVsfVxuICAgICAgICA8L3NwYW4+XG4gICAgICAgIDxBdXRvc3VnZ2VzdFxuICAgICAgICAgIGlkPXtpZH1cbiAgICAgICAgICBzdWdnZXN0aW9ucz17b3B0aW9uc31cbiAgICAgICAgICBnZXRTdWdnZXN0aW9uVmFsdWU9e3MgPT4gcy52YWx1ZX1cbiAgICAgICAgICByZW5kZXJTdWdnZXN0aW9uPXtzID0+IHMuZGlzcGxheU5hbWV9XG4gICAgICAgICAgb25TdWdnZXN0aW9uc0ZldGNoUmVxdWVzdGVkPXsoKSA9PiBudWxsfVxuICAgICAgICAgIHNob3VsZFJlbmRlclN1Z2dlc3Rpb25zPXsoKSA9PiB0cnVlfVxuICAgICAgICAgIGZvY3VzSW5wdXRPblN1Z2dlc3Rpb25DbGljaz17ZmFsc2V9XG4gICAgICAgICAgb25TdWdnZXN0aW9uc0NsZWFyUmVxdWVzdGVkPXsoKSA9PiBudWxsfVxuICAgICAgICAgIGlucHV0UHJvcHM9e3tcbiAgICAgICAgICAgIHZhbHVlOiBkaXNwbGF5VmFsdWUsXG4gICAgICAgICAgICBvbkNoYW5nZTogb25JbnB1dENoYW5nZSxcbiAgICAgICAgICAgIG9uRm9jdXM6ICgpID0+IHtcbiAgICAgICAgICAgICAgY2hhbmdlT3Blbih0cnVlKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBvbkJsdXI6ICgpID0+IHtcbiAgICAgICAgICAgICAgY2hhbmdlT3BlbihmYWxzZSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaWQ6IGlucHV0SWQsXG4gICAgICAgICAgICAnYXJpYS1sYWJlbGxlZGJ5JzogbGFiZWxJZCxcbiAgICAgICAgICAgICdhcmlhLWF1dG9jb21wbGV0ZSc6ICdub25lJyxcbiAgICAgICAgICAgIHJlYWRPbmx5OiB0cnVlLFxuICAgICAgICAgIH19XG4gICAgICAgICAgcmVuZGVyU3VnZ2VzdGlvbnNDb250YWluZXI9eyh7IGNvbnRhaW5lclByb3BzLCBjaGlsZHJlbiB9KSA9PiB7XG4gICAgICAgICAgICAvLyBzZXQgcmVmcyBmb3IgYXV0b3N1Z2dlc3QgbGlicmFyeSBhbmQgc2Nyb2xsYmFyIHBvc2l0aW9uaW5nXG4gICAgICAgICAgICBjb25zdCB7IHJlZiwgLi4ub3RoZXJSZWZzIH0gPSBjb250YWluZXJQcm9wcztcbiAgICAgICAgICAgIGNvbnN0IGNvbnRhaW5lclJlZiA9IGVsZW0gPT4ge1xuICAgICAgICAgICAgICBpZiAoZWxlbSkge1xuICAgICAgICAgICAgICAgIHNjcm9sbFJlZi5jdXJyZW50ID0gZWxlbTtcbiAgICAgICAgICAgICAgICByZWYoZWxlbSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICA8ZGl2IHRhYkluZGV4PVwiLTFcIiB7Li4ub3RoZXJSZWZzfSByZWY9e2NvbnRhaW5lclJlZn0+XG4gICAgICAgICAgICAgICAge2NoaWxkcmVufVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfX1cbiAgICAgICAgICB0aGVtZT17c3R5bGVzfVxuICAgICAgICAvPlxuICAgICAgPC9zcGFuPlxuICAgICAge2ljb259XG4gICAgPC9sYWJlbD5cbiAgKTtcbn07XG5cblNlbGVjdC5wcm9wVHlwZXMgPSB7XG4gIHZhbHVlOiBQcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWQsXG4gIG9uU2xhY2tUaW1lU2VsZWN0ZWQ6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIGdldERpc3BsYXk6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIG9wdGlvbnM6IFByb3BUeXBlcy5hcnJheU9mKFxuICAgIFByb3BUeXBlcy5zaGFwZSh7XG4gICAgICBkaXNwbGF5TmFtZTogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgICAgdmFsdWU6IFByb3BUeXBlcy5udW1iZXIuaXNSZXF1aXJlZCxcbiAgICB9KS5pc1JlcXVpcmVkLFxuICApLmlzUmVxdWlyZWQsXG4gIGlkOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIGxhYmVsOiBQcm9wVHlwZXMubm9kZS5pc1JlcXVpcmVkLFxuICBpY29uOiBQcm9wVHlwZXMubm9kZS5pc1JlcXVpcmVkLFxuICB2aWFQb2ludEluZGV4OiBQcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWQsXG59O1xuXG5leHBvcnQgZGVmYXVsdCBTZWxlY3Q7XG4iLCJjb25zdCB0cmFuc2xhdGlvbnMgPSB7XG4gIGRlOiB7XG4gICAgJ2FkZC12aWEtYnV0dG9uLWxhYmVsJzogJ0bDvGdlIFp3aXNjaGVuemllbCBoaW56dScsXG4gICAgJ2FkZC12aWEtZHVyYXRpb24tYnV0dG9uLWxhYmVsJzpcbiAgICAgICdTZXR6ZSBVbXN0ZWlnZXplaXQgZsO8ciBad2lzY2hlbnppZWwge3tpbmRleH19JyxcbiAgICAnYWRkLXZpYS1kdXJhdGlvbi1idXR0b24tbGFiZWwtY2xvc2UnOlxuICAgICAgJ1NjaGxpZcOfZSBVbXN0ZWlnZXplaXQtQXVzd2FobCBmw7xyIFp3aXNjaGVuemllbCB7e2luZGV4fX0nLFxuICAgICdhZGQtdmlhLWR1cmF0aW9uLWJ1dHRvbi1sYWJlbC1vcGVuJzpcbiAgICAgICfDlmZmbmUgVW1zdGVpZ2V6ZWl0LUF1c3dhaGwgZsO8ciBad2lzY2hlbnppZWwge3tpbmRleH19JyxcbiAgICAnbWludXRlLXNob3J0JzogJ21pbicsXG4gICAgJ3JlbW92ZS12aWEtYnV0dG9uLWxhYmVsJzogJ0VudGZlcm5lIFp3aXNjaGVuemllbCB7e2luZGV4fX0nLFxuICAgICdzd2FwLW9yZGVyLWJ1dHRvbi1sYWJlbCc6ICdUYXVzY2hlIFN0YXJ0IG1pdCBaaWVsJyxcbiAgICAndmlhLXBvaW50JzogJ1p3aXNjaGVuemllbCcsXG4gICAgJ3ZpYS1wb2ludC1pbmRleCc6ICdad2lzY2hlbnppZWwge3tpbmRleH19JyxcbiAgICAndmlhcG9pbnQtc2xhY2stYW1vdW50JzogJ1Vtc3RlaWdlemVpdCcsXG4gIH0sXG4gIGVuOiB7XG4gICAgJ2FkZC12aWEtYnV0dG9uLWxhYmVsJzogJ0FkZCB2aWEgcG9pbnQnLFxuICAgICdhZGQtdmlhLWR1cmF0aW9uLWJ1dHRvbi1sYWJlbCc6ICdTZXQgc3RvcCBkdXJhdGlvbiBhdCB2aWEgcG9pbnQge3tpbmRleH19JyxcbiAgICAnYWRkLXZpYS1kdXJhdGlvbi1idXR0b24tbGFiZWwtY2xvc2UnOlxuICAgICAgJ0Nsb3NlIHN0b3AgZHVyYXRpb24gc2VsZWN0b3IgYXQgdmlhIHBvaW50IHt7aW5kZXh9fScsXG4gICAgJ2FkZC12aWEtZHVyYXRpb24tYnV0dG9uLWxhYmVsLW9wZW4nOlxuICAgICAgJ09wZW4gc3RvcCBkdXJhdGlvbiBzZWxlY3RvciBhdCB2aWEgcG9pbnQge3tpbmRleH19JyxcbiAgICAnbWludXRlLXNob3J0JzogJ21pbicsXG4gICAgJ3JlbW92ZS12aWEtYnV0dG9uLWxhYmVsJzogJ1JlbW92ZSB2aWEgcG9pbnQge3tpbmRleH19JyxcbiAgICAnc3dhcC1vcmRlci1idXR0b24tbGFiZWwnOiAnUmV2ZXJzZSBvcmlnaW4gYW5kIGRlc3RpbmF0aW9uJyxcbiAgICAndmlhLXBvaW50JzogJ1ZpYSBwb2ludCcsXG4gICAgJ3ZpYS1wb2ludC1pbmRleCc6ICdWaWEgcG9pbnQge3tpbmRleH19JyxcbiAgICAndmlhcG9pbnQtc2xhY2stYW1vdW50JzogJ1N0b3AgZHVyYXRpb24nLFxuICB9LFxuICBmaToge1xuICAgICdhZGQtdmlhLWJ1dHRvbi1sYWJlbCc6ICdMaXPDpMOkIHbDpGxpcGlzdGUnLFxuICAgICdhZGQtdmlhLWR1cmF0aW9uLWJ1dHRvbi1sYWJlbCc6XG4gICAgICAnQXNldGEgdsOkbGlwaXN0ZWVsbGUge3tpbmRleH19IHB5c8OkaGR5a3NlbiBrZXN0bycsXG4gICAgJ2FkZC12aWEtZHVyYXRpb24tYnV0dG9uLWxhYmVsLWNsb3NlJzpcbiAgICAgICdBdmFhIHbDpGxpcGlzdGVlbiB7e2luZGV4fX0gcHlzw6RoZHlrc2VuIGtlc3RvIHZhbGl0c2luJyxcbiAgICAnYWRkLXZpYS1kdXJhdGlvbi1idXR0b24tbGFiZWwtb3Blbic6XG4gICAgICAnU3VsamUgdsOkbGlwaXN0ZWVuIHt7aW5kZXh9fSBweXPDpGhkeWtzZW4ga2VzdG8gdmFsaXRzaW4nLFxuICAgICdtaW51dGUtc2hvcnQnOiAnbWluJyxcbiAgICAncmVtb3ZlLXZpYS1idXR0b24tbGFiZWwnOiAnUG9pc3RhIHbDpGxpcGlzdGUge3tpbmRleH19JyxcbiAgICAnc3dhcC1vcmRlci1idXR0b24tbGFiZWwnOiAnS8Okw6RubsOkIHJlaXRpbiBzdXVudGEgdmFzdGFra2Fpc2Vrc2knLFxuICAgICd2aWEtcG9pbnQnOiAnVsOkbGlwaXN0ZScsXG4gICAgJ3ZpYS1wb2ludC1pbmRleCc6ICdWw6RsaXBpc3RlIHt7aW5kZXh9fScsXG4gICAgJ3ZpYXBvaW50LXNsYWNrLWFtb3VudCc6ICdQeXPDpGhkeWtzZW4ga2VzdG8nLFxuICB9LFxuICBwbDoge1xuICAgICdhZGQtdmlhLWJ1dHRvbi1sYWJlbCc6ICdEb2RhaiBwdW5rdCBwb8WbcmVkbmknLFxuICAgICdhZGQtdmlhLWR1cmF0aW9uLWJ1dHRvbi1sYWJlbCc6XG4gICAgICAnV3liaWVyeiBjemFzIHBvc3RvanUgZGxhIHB1bmt0dSB7e2luZGV4fX0nLFxuICAgICdhZGQtdmlhLWR1cmF0aW9uLWJ1dHRvbi1sYWJlbC1jbG9zZSc6XG4gICAgICAnWmFta25paiB3eWJvcm5payBjemFzdSBwb3N0b2p1IHcgcHVua2NpZSB7e2luZGV4fX0nLFxuICAgICdhZGQtdmlhLWR1cmF0aW9uLWJ1dHRvbi1sYWJlbC1vcGVuJzpcbiAgICAgICdPdHfDs3J6IHd5Ym9ybmlrIGN6YXN1IHBvc3RvanUgdyBwdW5rY2llIHt7aW5kZXh9fScsXG4gICAgJ21pbnV0ZS1zaG9ydCc6ICdtaW4uJyxcbiAgICAncmVtb3ZlLXZpYS1idXR0b24tbGFiZWwnOiAnVXN1xYQgcHVua3QgcG/Fm3JlZG5pIHt7aW5kZXh9fScsXG4gICAgJ3N3YXAtb3JkZXItYnV0dG9uLWxhYmVsJzogJ09kd3LDs8SHIHBvY3rEhXRlayBpIGNlbCcsXG4gICAgJ3ZpYS1wb2ludCc6ICdQdW5rdCBwb8WbcmVkbmknLFxuICAgICd2aWEtcG9pbnQtaW5kZXgnOiAnUHVua3QgcG/Fm3JlZG5pIHt7aW5kZXh9fScsXG4gICAgJ3ZpYXBvaW50LXNsYWNrLWFtb3VudCc6ICdDemFzIHBvc3RvanUnLFxuICB9LFxuICBzdjoge1xuICAgICdhZGQtdmlhLWJ1dHRvbi1sYWJlbCc6ICdMw6RnZyB0aWxsIHZpYXB1bmt0JyxcbiAgICAnYWRkLXZpYS1kdXJhdGlvbi1idXR0b24tbGFiZWwnOlxuICAgICAgJ1N0w6RsbCBpbiB2YXJha3RpZ2hldCBmw7ZyIHZpYXB1bmt0ZW4ge3tpbmRleH19JyxcbiAgICAnYWRkLXZpYS1kdXJhdGlvbi1idXR0b24tbGFiZWwtY2xvc2UnOlxuICAgICAgJ1N0w6RuZyB2w6RsamFyZW4gZsO2ciB2YXJha3RpZ2hldCB2aWQgdmlhLXB1bmt0ZW4ge3tpbmRleH19JyxcbiAgICAnYWRkLXZpYS1kdXJhdGlvbi1idXR0b24tbGFiZWwtb3Blbic6XG4gICAgICAnw5ZwcG5hIHbDpGxqYXJlbiBmw7ZyIHZhcmFrdGlnaGV0IHZpZCB2aWEtcHVua3RlbiB7e2luZGV4fX0nLFxuICAgICdtaW51dGUtc2hvcnQnOiAnbWluJyxcbiAgICAncmVtb3ZlLXZpYS1idXR0b24tbGFiZWwnOiAnVGEgYm9ydCB2aWFwdW5rdCB7e2luZGV4fX0nLFxuICAgICdzd2FwLW9yZGVyLWJ1dHRvbi1sYWJlbCc6ICdTdsOkbmcgcnV0dGVucyByaWt0bmluZyB0aWxsIGRlbiBtb3RzYXR0YScsXG4gICAgJ3ZpYS1wb2ludCc6ICdWaWEgcHVua3QnLFxuICAgICd2aWEtcG9pbnQtaW5kZXgnOiAnVmlhIHB1bmt0IHt7aW5kZXh9fScsXG4gICAgJ3ZpYXBvaW50LXNsYWNrLWFtb3VudCc6ICdTdG9wcGV0cyB2YXJha3RpZ2hldCcsXG4gIH0sXG59O1xuXG5leHBvcnQgZGVmYXVsdCB0cmFuc2xhdGlvbnM7XG4iLCIvKiBlc2xpbnQtZGlzYWJsZSBpbXBvcnQvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXMgKi9cbmltcG9ydCBjeCBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgUmVhY3RTb3J0YWJsZSB9IGZyb20gJ3JlYWN0LXNvcnRhYmxlanMnO1xuaW1wb3J0IGkxOG5leHQgZnJvbSAnaTE4bmV4dCc7XG5pbXBvcnQgRFRBdXRvU3VnZ2VzdCBmcm9tICdAZGlnaXRyYW5zaXQtY29tcG9uZW50L2RpZ2l0cmFuc2l0LWNvbXBvbmVudC1hdXRvc3VnZ2VzdCc7XG5pbXBvcnQgSWNvbiBmcm9tICdAZGlnaXRyYW5zaXQtY29tcG9uZW50L2RpZ2l0cmFuc2l0LWNvbXBvbmVudC1pY29uJztcbmltcG9ydCBpc0VtcHR5IGZyb20gJ2xvZGFzaC9pc0VtcHR5JztcbmltcG9ydCBTZWxlY3QgZnJvbSAnLi9oZWxwZXJzL1NlbGVjdCc7XG5pbXBvcnQgdHJhbnNsYXRpb25zIGZyb20gJy4vaGVscGVycy90cmFuc2xhdGlvbnMnO1xuaW1wb3J0IHN0eWxlcyBmcm9tICcuL2hlbHBlcnMvc3R5bGVzLnNjc3MnO1xuXG5pMThuZXh0LmluaXQoe1xuICBsbmc6ICdmaScsXG4gIGZhbGxiYWNrTG5nOiAnZmknLFxuICBkZWZhdWx0TlM6ICd0cmFuc2xhdGlvbicsXG4gIGludGVycG9sYXRpb246IHtcbiAgICBlc2NhcGVWYWx1ZTogZmFsc2UsIC8vIG5vdCBuZWVkZWQgZm9yIHJlYWN0IGFzIGl0IGVzY2FwZXMgYnkgZGVmYXVsdFxuICB9LFxufSk7XG5cbmV4cG9ydCBjb25zdCBnZXRFbXB0eVZpYVBvaW50UGxhY2VIb2xkZXIgPSAoKSA9PiAoe30pO1xuXG5jb25zdCBpc1ZpYVBvaW50RW1wdHkgPSB2aWFQb2ludCA9PiB7XG4gIGlmICh2aWFQb2ludCA9PT0gdW5kZWZpbmVkIHx8IGlzRW1wdHkodmlhUG9pbnQpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKHZpYVBvaW50KTtcbiAgcmV0dXJuIChcbiAgICBrZXlzLmxlbmd0aCA9PT0gMSB8fCAoa2V5cy5sZW5ndGggPT09IDIgJiYga2V5cy5pbmNsdWRlcygnbG9jYXRpb25TbGFjaycpKVxuICApO1xufTtcblxuY29uc3QgSXRpbmVyYXJ5U2VhcmNoQ29udHJvbCA9ICh7XG4gIGNoaWxkcmVuLFxuICBjbGFzc05hbWUsXG4gIGVuYWJsZWQsXG4gIG9uQ2xpY2ssXG4gIG9uS2V5UHJlc3MsXG4gIHdpZGUsXG4gIC4uLnJlc3Rcbn0pID0+IChcbiAgPGRpdlxuICAgIGNsYXNzTmFtZT17c3R5bGVzWydpdGluZXJhcnktc2VhcmNoLWNvbnRyb2wnXX1cbiAgICBzdHlsZT17eyAnLS13aWR0aCc6IHdpZGUgPyAnNDdweCcgOiAnNDBweCcgfX1cbiAgPlxuICAgIHtvbkNsaWNrICYmIGVuYWJsZWQgJiYgKFxuICAgICAgPGRpdlxuICAgICAgICB7Li4ucmVzdH1cbiAgICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWV9XG4gICAgICAgIG9uQ2xpY2s9e29uQ2xpY2t9XG4gICAgICAgIG9uS2V5UHJlc3M9e29uS2V5UHJlc3N9XG4gICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICB0YWJJbmRleD1cIjBcIlxuICAgICAgPlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L2Rpdj5cbiAgICApfVxuICA8L2Rpdj5cbik7XG5cbmNvbnN0IGdldFNsYWNrRGlzcGxheSA9IHNsYWNrSW5TZWNvbmRzID0+IHtcbiAgcmV0dXJuIGAke3NsYWNrSW5TZWNvbmRzIC8gNjB9ICR7aTE4bmV4dC50KCdtaW51dGUtc2hvcnQnKX1gO1xufTtcblxuY29uc3QgdXBkYXRlVmlhUG9pbnRTbGFjayA9IChcbiAgYWN0aXZlVmlhUG9pbnRTbGFja3MsXG4gIHVwZGF0ZWRWaWFQb2ludEluZGV4LFxuICB2aWFQb2ludFJlbW92ZWQgPSBmYWxzZSxcbikgPT4ge1xuICBjb25zdCBmb3VuZEF0SW5kZXggPSBhY3RpdmVWaWFQb2ludFNsYWNrcy5pbmRleE9mKHVwZGF0ZWRWaWFQb2ludEluZGV4KTtcbiAgaWYgKGZvdW5kQXRJbmRleCA+IC0xKSB7XG4gICAgYWN0aXZlVmlhUG9pbnRTbGFja3Muc3BsaWNlKGZvdW5kQXRJbmRleCwgMSk7XG4gIH1cbiAgcmV0dXJuIHZpYVBvaW50UmVtb3ZlZFxuICAgID8gYWN0aXZlVmlhUG9pbnRTbGFja3MubWFwKHZhbHVlID0+XG4gICAgICAgIHZhbHVlID4gdXBkYXRlZFZpYVBvaW50SW5kZXggPyB2YWx1ZSAtIDEgOiB2YWx1ZSxcbiAgICAgIClcbiAgICA6IGFjdGl2ZVZpYVBvaW50U2xhY2tzO1xufTtcblxuY29uc3QgaXNLZXlib2FyZFNlbGVjdGlvbkV2ZW50ID0gZXZlbnQgPT4ge1xuICBjb25zdCBzcGFjZSA9IFsxMywgJyAnLCAnU3BhY2ViYXInXTtcbiAgY29uc3QgZW50ZXIgPSBbMzIsICdFbnRlciddO1xuICBjb25zdCBrZXkgPSAoZXZlbnQgJiYgKGV2ZW50LmtleSB8fCBldmVudC53aGljaCB8fCBldmVudC5rZXlDb2RlKSkgfHwgJyc7XG4gIGlmICgha2V5IHx8ICFzcGFjZS5jb25jYXQoZW50ZXIpLmluY2x1ZGVzKGtleSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgcmV0dXJuIHRydWU7XG59O1xuXG5jb25zdCB2YWx1ZSA9IGxvY2F0aW9uID0+XG4gIChsb2NhdGlvbiAmJiBsb2NhdGlvbi5hZGRyZXNzKSB8fFxuICAobG9jYXRpb24gJiYgbG9jYXRpb24uZ3BzICYmIGxvY2F0aW9uLnJlYWR5ICYmICdOeWt5aW5lbiBzaWphaW50aScpIHx8XG4gICcnO1xuXG5jb25zdCBnZXRMb2NhdGlvblR5cGUgPSBsb2NhdGlvbiA9PlxuICBsb2NhdGlvbiAmJiBsb2NhdGlvbi5ncHMgPT09IHRydWUgPyAncG9zaXRpb24nIDogJ2xvY2F0aW9uJztcblxuY29uc3QgZ2V0U2xhY2tUaW1lT3B0aW9ucyA9ICgpID0+IHtcbiAgY29uc3QgdGltZU9wdGlvbnMgPSBbXTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPD0gOTsgaSsrKSB7XG4gICAgY29uc3QgdmFsdWVJbk1pbnV0ZXMgPSBpICogMTA7XG4gICAgdGltZU9wdGlvbnMucHVzaCh7XG4gICAgICBkaXNwbGF5TmFtZTogYCR7dmFsdWVJbk1pbnV0ZXN9ICR7aTE4bmV4dC50KCdtaW51dGUtc2hvcnQnKX1gLFxuICAgICAgdmFsdWU6IHZhbHVlSW5NaW51dGVzICogNjAsXG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIHRpbWVPcHRpb25zO1xufTtcblxuSXRpbmVyYXJ5U2VhcmNoQ29udHJvbC5wcm9wVHlwZXMgPSB7XG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIGVuYWJsZWQ6IFByb3BUeXBlcy5ib29sLmlzUmVxdWlyZWQsXG4gIG9uQ2xpY2s6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIG9uS2V5UHJlc3M6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIHdpZGU6IFByb3BUeXBlcy5ib29sLFxufTtcblxuSXRpbmVyYXJ5U2VhcmNoQ29udHJvbC5kZWZhdWx0UHJvcHMgPSB7XG4gIGNoaWxkcmVuOiB1bmRlZmluZWQsXG4gIHdpZGU6IGZhbHNlLFxufTtcblxuLyoqXG4gKiBQYW5lbCB0aGF0IHJlbmRlcnMgdHdvIERUQXV0b3N1Z2dlc3Qgc2VhcmNoIGZpZWxkcywgaW5jbHVkaW5nIHZpYXBvaW50IGhhbmRsaW5nXG4gKlxuICogQGV4YW1wbGVcbiAqIGNvbnN0IHNlYXJjaENvbnRleHQgPSB7XG4gKiAgIGlzUGVsaWFzTG9jYXRpb25Bd2FyZTogZmFsc2UgLy8gdHJ1ZSAvIGZhbHNlIGRvZXMgTGV0IFBlbGlhcyBzdWdnZXN0IGJhc2VkIG9uIGN1cnJlbnQgdXNlciBsb2NhdGlvblxuICogICBtaW5pbWFsUmVnZXhwOiB1bmRlZmluZWQgLy8gdXNlZCBmb3IgdGVzdGluZyBtaW4uIHJlZ2V4cC4gRm9yIGV4YW1wbGU6IG5ldyBSZWdFeHAoJy57Mix9JyksXG4gKiAgIGxpbmVSZWdleHA6IHVuZGVmaW5lZCAvLyAgaWRlbnRpZnkgc2VhcmNoZXMgZm9yIHJvdXRlIG51bWJlcnMvbGFiZWxzOiBidXMgfCB0cmFpbiB8IG1ldHJvLiBGb3IgZXhhbXBsZTogbmV3IFJlZ0V4cChcbiAqICAgIC8vICAgJyheWzAtOV0rW2Etel0/JHxeW3l1bGVhcGlua3J0ZHpdJHwoXm1bMTJdP2I/JCkpJyxcbiAqICAgIC8vICAnaScsXG4gKiAgICAvLyAgKSxcbiAqICAgVVJMX1BFTElBUzogJycgLy8gdXJsIGZvciBwZWxpYXMgc2VhcmNoZXNcbiAqICAgZmVlZElEczogWydIU0wnLCAnSFNMTGF1dHRhJ10gLy8gRmVlZElkJ3MgbGlrZSAgW0hTTCwgSFNMTGF1dHRhXVxuICogICBnZW9jb2RpbmdTb3VyY2VzOiBbJ29hJywnb3NtJywnbmxzZmknXSAgLy8gc291cmNlcyBmb3IgZ2VvY29kaW5nXG4gKiAgIGdlb2NvZGluZ1NlYXJjaFBhcmFtczsge30gIC8vIFNlYXJjaHBhcm1hcyBmcm8gZ2VvY29kaW5nXG4gKiAgIGdldEZhdm91cml0ZUxvY2F0aW9uczogKCkgPT4gKHt9KSwgICAgLy8gRnVuY3Rpb24gdGhhdCByZXR1cm5zIGFycmF5IG9mIGZhdm91cml0ZSBsb2NhdGlvbnMuXG4gKiAgIGdldEZhdm91cml0ZVN0b3BzOiAoKSA9PiAoe30pLCAgICAgICAgLy8gRnVuY3Rpb24gdGhhdCByZXR1cm5zIGFycmF5IG9mIGZhdm91cml0ZSBzdG9wcy5cbiAqICAgZ2V0TGFuZ3VhZ2U6ICgpID0+ICh7fSksICAgICAgICAgICAgICAvLyBGdW5jdGlvbiB0aGF0IHJldHVybnMgY3VycmVudCBsYW5ndWFnZS5cbiAqICAgZ2V0RmF2b3VyaXRlUm91dGVzOiAoKSA9PiAoe30pLCAgICAgICAvLyBGdW5jdGlvbiB0aGF0IHJldHVybnMgYXJyYXkgb2YgZmF2b3VyaXRlIHJvdXRlcy5cbiAqICAgZ2V0UG9zaXRpb25zOiAoKSA9PiAoe30pLCAgICAgICAgICAgICAvLyBGdW5jdGlvbiB0aGF0IHJldHVybnMgdXNlcidzIGdlb2xvY2F0aW9uLlxuICogICBnZXRSb3V0ZXNRdWVyeTogKCkgPT4gKHt9KSwgICAgICAgICAgIC8vIEZ1bmN0aW9uIHRoYXQgcmV0dXJucyBxdWVyeSBmb3IgZmV0Y2hpbmcgcm91dGVzLlxuICogICBnZXRTdG9wQW5kU3RhdGlvbnNRdWVyeTogKCkgPT4gKHt9KSwgIC8vIEZ1bmN0aW9uIHRoYXQgZmV0Y2hlcyBmYXZvdXJpdGUgc3RvcHMgYW5kIHN0YXRpb25zIGZyb20gZ3JhcGhxbCBBUEkuXG4gKiAgIGdldEZhdm91cml0ZVJvdXRlc1F1ZXJ5OiAoKSA9PiAoe30pLCAgLy8gRnVuY3Rpb24gdGhhdCByZXR1cm5zIHF1ZXJ5IGZvciBmZXRjaGluZyBmYXZvdXJpdGUgcm91dGVzLlxuICogICBnZXRGYXZvdXJpdGVWZWhpY2xlUmVudGFsU3RhdGlvbnM6ICgpID0+ICh7fSksICAvLyBGdW5jdGlvbiB0aGF0IHJldHVybnMgZmF2b3VyaXRlIGJpa2UgcmVudGFsIHN0YXRpb24uXG4gKiAgIGdldEZhdm91cml0ZVZlaGljbGVSZW50YWxTdGF0aW9uc1F1ZXJ5OiAoKSA9PiAoe30pLCAvLyBGdW5jdGlvbiB0aGF0IHJldHVybnMgcXVlcnkgZm9yIGZldGNoaW5nIGZhdm91cml0ZSBiaWtlIHJlbnRhbCBzdGF0aW9ucy5cbiAqICAgc3RhcnRMb2NhdGlvbldhdGNoOiAoKSA9PiAoe30pLCAgICAgICAvLyBGdW5jdGlvbiB0aGF0IGxvY2F0ZXMgdXNlcnMgZ2VvbG9jYXRpb24uXG4gKiAgIHNhdmVTZWFyY2g6ICgpID0+ICh7fSksICAgICAgICAgICAgICAgLy8gRnVuY3Rpb24gdGhhdCBzYXZlcyBzZWFyY2ggdG8gb2xkIHNlYXJjaGVzIHN0b3JlLlxuICogICBjbGVhck9sZFNlYXJjaGVzOiAoKSA9PiAoe30pLCAgICAgICAgIC8vIEZ1bmN0aW9uIHRoYXQgY2xlYXJzIG9sZCBzZWFyY2hlcyBzdG9yZS5cbiAqICAgZ2V0RnV0dXJlUm91dGVzOiAoKSA9PiAoe30pLCAgICAgICAgICAvLyBGdW5jdGlvbiB0aGF0IHJldHVybiBmdXR1cmUgcm91dGVzXG4gKiAgIHNhdmVGdXR1cmVSb3V0ZTogKCkgPT4gKHt9KSwgICAgICAgICAgLy8gRnVuY3Rpb24gdGhhdCBzYXZlcyBhIGZ1dHVyZSByb3V0ZVxuICogICBjbGVhckZ1dHVyZVJvdXRlczogKCkgPT4gKHt9KSwgICAgICAgIC8vIEZ1bmN0aW9uIHRoYXQgY2xlYXJzIGZ1dHVyZSByb3V0ZXNcbiAqIH07XG4gKlxuICogY29uc3Qgb3JpZ2luID0ge1xuICogIGxhdDogNjAuMTY5MTk2LFxuICogIGxvbjogMjQuOTU3Njc0LFxuICogIGFkZHJlc3M6ICdBbGVrc2FudGVyaW5rYXR1LCBIZWxzaW5raScsXG4gKiAgc2V0OiB0cnVlLFxuICogIHJlYWR5OiB0cnVlLFxuICogfVxuICpcbiAqIGNvbnN0IGRlc3RpbmF0aW9uID0ge1xuICogICBsYXQ6IDYwLjE5OTA5MyxcbiAqICAgbG9uOiAyNC45NDA1MzYsXG4gKiAgIGFkZHJlc3M6ICdPcGFzdGluc2lsdGEgNiwgSGVsc2lua2knLFxuICogICBzZXQ6IHRydWUsXG4gKiAgIHJlYWR5OiB0cnVlLFxuICogfVxuICogb25TZWxlY3QoaXRlbSwgaWQpIHtcbiAqICByZXR1cm4gbnVsbDsgIC8vIERlZmluZSB3aGF0IHRvIGRvIHdoZW4gYSBzdWdnZXN0aW9uIGlzIGJlaW5nIHNlbGVjdGVkLiBOb25lIGJ5IGRlZmF1bHQuXG4gKiAgfVxuICogb25DbGVhcihpZCkge1xuICogIHJldHVybiBudWxsOyAgLy8gRGVmaW5lIHdoYXQgdG8gZG8gd2hlbiBhIHN1Z2dlc3Rpb24gaXMgYmVpbmcgc2VsZWN0ZWQuIE5vbmUgYnkgZGVmYXVsdC5cbiAqIH1cbiAqIGNvbnN0IGdldEF1dG9TdWdnZXN0SWNvbnM6IHtcbiAqICAgLy8gQ2FsbGVkIGZvciBldmVyeSBjaXR5IGJpa2Ugc3RhdGlvbiByZW5kZXJlZCBhcyBhIHNlYXJjaCBzdWdnZXN0aW9uLiBTaG91bGQgcmV0dXJuIHRoZSBpY29uIGFuZFxuICogICAvLyBjb2xvciB1c2VkIGZvciB0aGF0IHN0YXRpb24uIFR3byBpY29ucyBhcmUgYXZhaWxhYmxlLCAnY2l0eWJpa2Utc3RvcC1kaWdpdHJhbnNpdCcgYW5kaXR5YmlrZS1zdG9wLWRpZ2l0cmFuc2l0LXNlY29uZGFyeScuXG4gKiAgIGNpdHliaWtlczogc3RhdGlvbiA9PiB7XG4gKiAgICAgIHJldHVybiBbJ2NpdHliaWtlLXN0b3AtZGlnaXRyYW5zaXQnLCAnI2YyYjYyZCddO1xuICogICB9XG4gKiB9XG4gKiBjb25zdCB0YXJnZXRzID0gWydMb2NhdGlvbnMnLCAnU3RvcHMnLCAnUm91dGVzJ107IC8vIERlZmluZXMgd2hhdCB5b3UgYXJlIHNlYXJjaGluZy4gYWxsIGF2YWlsYWJsZSBvcHRpb25zIGFyZSBMb2NhdGlvbnMsIFN0b3BzLCBSb3V0ZXMsIFZlaGljbGVSZW50YWxTdGF0aW9ucywgRnV0dXJlUm91dGVzLCBNYXBQb3NpdGlvbiBhbmQgQ3VycmVudFBvc2l0aW9uLiBMZWF2ZSBlbXB0eSB0byBzZWFyY2ggYWxsIHRhcmdldHMuXG4gKiBjb25zdCBzb3VyY2VzID0gWydGYXZvdXJpdGUnLCAnSGlzdG9yeScsICdEYXRhc291cmNlJ10gLy8gRGVmaW5lcyB3aGVyZSB5b3UgYXJlIHNlYXJjaGluZy4gYWxsIGF2YWlsYWJsZSBhcmU6IEZhdm91cml0ZSwgSGlzdG9yeSAocHJldmlvdXNseSBzZWFyY2hlZCBzZWFyY2hlcyksIGFuZCBEYXRhc291cmNlLiBMZWF2ZSBlbXB0eSB0byB1c2UgYWxsIHNvdXJjZXMuXG4gKiA8RFRBdXRvc3VnZ2VzdFBhbmVsXG4gKiAgICBhcHBFbGVtZW50PXthcHBFbGVtZW50fSAvLyBSZXF1aXJlZC4gUm9vdCBlbGVtZW50J3MgaWQuIE5lZWRlZCBmb3IgcmVhY3QtbW9kYWwgY29tcG9uZW50LlxuICogICAgb3JpZ2luPXtvcmlnaW59IC8vIFNlbGVjdGVkIG9yaWdpbiBwb2ludFxuICogICAgZGVzdGluYXRpb249e2Rlc3RpbmF0aW9ufSAvLyBTZWxlY3RlZCBkZXN0aW5hdGlvbiBwb2ludFxuICogICAgb3JpZ2luUGxhY2VIb2xkZXI9eydHaXZlIG9yaWdpbid9IC8vIE9wdGlvbmFsIEdpdmUgc3RyaW5nIHNob3duIGluaXRpYWxseSBpbnNpZGUgb3JpZ2luIHNlYXJjaCBmaWVsZFxuICogICAgZGVzdGluYXRpb25QbGFjZUhvbGRlcj17J0dpdmUgZGVzdGluYXRpb24nfSAvLyBPcHRpb25hbCBHaXZlIHN0cmluZyBzaG93biBpbml0YWxseSBpbnNpZGUgZGVzdGluYXRpb24gc2VhcmNoIGZpZWxkXG4gKiAgICBpbml0aWFsVmlhUG9pbnRzPXtbXX0gLy8gT3B0aW9uYWwuICBJZiBzaG93VmlhcG9pbnRDb250cm9sIGlzIHNldCB0byB0cnVlLCBwYXNzIGluaXRpYWwgdmlhIHBvaW50cyB0byB0aGUgcGFuZWwuIEN1cnJlbnRseSBubyBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGlzIGdpdmVuLlxuICogICAgdXBkYXRlVmlhUG9pbnRzPXsoKSA9PiByZXR1cm4gW119IC8vIE9wdGlvbmFsLiBJZiBzaG93VmlhcG9pbnRDb250cm9sIGlzIHNldCB0byB0cnVlLCBkZWZpbmUgaG93IHRvIHVwZGF0ZSB5b3VyIHZpYSBwb2ludCBsaXN0IHdpdGggdGhpcyBmdW5jdGlvbi4gQ3VycmVubHR5IG5vIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gaXMgZ2l2ZW4uXG4gKiAgICBzd2FwT3JkZXI9eygpID0+IHJldHVybiBudWxsfSAvLyBPcHRpb25hbC4gSWYgc2hvd1N3YXBDb250cm9sIGlzIHNldCB0byB0cnVlLCBkZWZpbmUgaG93IHRvIHN3YXAgb3JkZXIgb2YgeW91ciBwb2ludHMgKG9yaWdpbiwgZGVzdGluYXRpb24sIHZpYXBvaW50cykuIEN1cnJlbnRseSBubyBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGlzIGdpdmVuLlxuICogICAgc2VhcmNoQ29udGV4dD17c2VhcmNoQ29udGV4dH1cbiAqICAgIGdldEF1dG9TdWdnZXN0SWNvbnM9e2dldEF1dG9TdWdnZXN0SWNvbnN9XG4gKiAgICBvblNlbGVjdD17dGhpcy5vblNlbGVjdH1cbiAqICAgIG9uQ2xlYXI9e3RoaXMub25DbGVhcn1cbiAqICAgIGxhbmc9XCJmaVwiIC8vIERlZmluZSBsYW5ndWFnZSBmaSBzdiBvciBlbi5cbiAqICAgIGFkZEFuYWx5dGljc0V2ZW50PXtudWxsfSAvLyBPcHRpb25hbC4geW91IGNhbiByZWNvcmQgYW4gYW5hbHl0aWNzIGV2ZW50IGlmIHlvdSB3aXNoLiBpZiBwYXNzZWQsIGNvbXBvbmVudCB3aWxsIHBhc3MgYW4gY2F0ZWdvcnksIGFjdGlvbiwgbmFtZSBwYXJhbWV0ZXJzIHRvIGFkZEFuYWx5dGljc0V2ZW50XG4gKiAgICBkaXNhYmxlQXV0b0ZvY3VzPXtmYWxzZX0gLy8gT3B0aW9uYWwuIHVzZSB0aGlzIHRvIGRpc2FibGUgYXV0b2ZvY3VzIGNvbXBsZXRlbHkgZnJvbSBEVEF1dG9zdWdnZXN0UGFuZWxcbiAqICAgIHNvdXJjZXM9e3NvdXJjZXN9XG4gKiAgICB0YXJnZXRzPXt0YXJnZXRzfVxuICogICAgaXNNb2JpbGUgIC8vIE9wdGlvbmFsLiBEZWZhdWx0cyB0byBmYWxzZS4gV2hldGhlciB0byB1c2UgbW9iaWxlIHNlYXJjaC5cbiAqICAgIG9yaWdpbk1vYmlsZUxhYmVsPVwiT3JpZ2luIGxhYmVsXCIgLy8gT3B0aW9uYWwuIEN1c3RvbSBsYWJlbCB0ZXh0IGZvciBvcmlnaW4gZmllbGQgb24gbW9iaWxlLlxuICogICAgZGVzdGluYXRpb25Nb2JpbGVMYWJlbD1cIkRlc3RpbmF0aW9uIGxhYmVsXCIgLy8gT3B0aW9uYWwuIEN1c3RvbSBsYWJlbCB0ZXh0IGZvciBkZXN0aW5hdGlvbiBmaWVsZCBvbiBtb2JpbGUuXG4gKiAgICBoYW5kbGVGb2N1c0NoYW5nZT17KCkgPT4ge319IC8vIE9wdGlvbmFsLiBJZiBkZWZpbmVkIG92ZXJyaWRlcyBkZWZhdWx0IG9uRm9jdXNDaGFuZ2UgYmVoYXZpb3VyXG4gKiAgICBzaG93U3dhcENvbnRyb2w9e2ZhbHNlfSAvLyBPcHRpb25hbC5cbiAqICAgIHNob3dWaWFwb2ludENvbnRyb2w9e2ZhbHNlfSAvLyBPcHRpb25hbC5cbiAqL1xuXG5jb25zdCBsb2NhdGlvblNoYXBlID0gUHJvcFR5cGVzLnNoYXBlKHtcbiAgYWRkcmVzczogUHJvcFR5cGVzLnN0cmluZyxcbiAgbGF0OiBQcm9wVHlwZXMubnVtYmVyLFxuICBsb246IFByb3BUeXBlcy5udW1iZXIsXG4gIGxvY2F0aW9uU2xhY2s6IFByb3BUeXBlcy5udW1iZXIsXG59KTtcblxuY2xhc3MgRFRBdXRvc3VnZ2VzdFBhbmVsIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcbiAgc3RhdGljIHByb3BUeXBlcyA9IHtcbiAgICBhcHBFbGVtZW50OiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gICAgb3JpZ2luOiBsb2NhdGlvblNoYXBlLFxuICAgIGRlc3RpbmF0aW9uOiBsb2NhdGlvblNoYXBlLFxuICAgIG9yaWdpblBsYWNlSG9sZGVyOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIGRlc3RpbmF0aW9uUGxhY2VIb2xkZXI6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgdmlhUG9pbnRzOiBQcm9wVHlwZXMuYXJyYXlPZihsb2NhdGlvblNoYXBlKSxcbiAgICB1cGRhdGVWaWFQb2ludHM6IFByb3BUeXBlcy5mdW5jLFxuICAgIGhhbmRsZVZpYVBvaW50TG9jYXRpb25TZWxlY3RlZDogUHJvcFR5cGVzLmZ1bmMsXG4gICAgc3dhcE9yZGVyOiBQcm9wVHlwZXMuZnVuYyxcbiAgICBzZWFyY2hQYW5lbFRleHQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgc2VhcmNoQ29udGV4dDogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAgIFVSTF9QRUxJQVM6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgfSkuaXNSZXF1aXJlZCxcbiAgICBvblNlbGVjdDogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgICBvbkNsZWFyOiBQcm9wVHlwZXMuZnVuYyxcbiAgICBhZGRBbmFseXRpY3NFdmVudDogUHJvcFR5cGVzLmZ1bmMsXG4gICAgbGFuZzogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBkaXNhYmxlQXV0b0ZvY3VzOiBQcm9wVHlwZXMuYm9vbCxcbiAgICBzb3VyY2VzOiBQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMuc3RyaW5nKSxcbiAgICB0YXJnZXRzOiBQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMuc3RyaW5nKSxcbiAgICBmaWx0ZXJSZXN1bHRzOiBQcm9wVHlwZXMuZnVuYyxcbiAgICBpc01vYmlsZTogUHJvcFR5cGVzLmJvb2wsXG4gICAgY29sb3I6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgaG92ZXJDb2xvcjogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBvcmlnaW5Nb2JpbGVMYWJlbDogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBkZXN0aW5hdGlvbk1vYmlsZUxhYmVsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIHJlZlBvaW50OiBsb2NhdGlvblNoYXBlLFxuICAgIG1vZGVTZXQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgbW9kZUljb25Db2xvcnM6IFByb3BUeXBlcy5vYmplY3RPZihQcm9wVHlwZXMuc3RyaW5nKSxcbiAgICBnZXRBdXRvU3VnZ2VzdEljb25zOiBQcm9wVHlwZXMub2JqZWN0T2YoUHJvcFR5cGVzLmZ1bmMpLFxuICAgIGZvbnRXZWlnaHRzOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgICAgbWVkaXVtOiBQcm9wVHlwZXMubnVtYmVyLFxuICAgIH0pLFxuICAgIHNob3dTY3JvbGw6IFByb3BUeXBlcy5ib29sLFxuICAgIG9uRm9jdXNDaGFuZ2U6IFByb3BUeXBlcy5mdW5jLFxuICAgIGlzRW1iZWRkZWQ6IFByb3BUeXBlcy5ib29sLFxuICAgIHNob3dTd2FwQ29udHJvbDogUHJvcFR5cGVzLmJvb2wsXG4gICAgc2hvd1ZpYXBvaW50Q29udHJvbDogUHJvcFR5cGVzLmJvb2wsXG4gICAgc2hvd1NsYWNrQ29udHJvbDogUHJvcFR5cGVzLmJvb2wsXG4gIH07XG5cbiAgc3RhdGljIGRlZmF1bHRQcm9wcyA9IHtcbiAgICBvcmlnaW46IHVuZGVmaW5lZCxcbiAgICBkZXN0aW5hdGlvbjogdW5kZWZpbmVkLFxuICAgIHZpYVBvaW50czogW10sXG4gICAgb3JpZ2luUGxhY2VIb2xkZXI6ICdnaXZlLW9yaWdpbicsXG4gICAgZGVzdGluYXRpb25QbGFjZUhvbGRlcjogJ2dpdmUtZGVzdGluYXRpb24nLFxuICAgIHN3YXBPcmRlcjogdW5kZWZpbmVkLFxuICAgIHVwZGF0ZVZpYVBvaW50czogKCkgPT4ge30sXG4gICAgbGFuZzogJ2ZpJyxcbiAgICBzZWFyY2hQYW5lbFRleHQ6IHVuZGVmaW5lZCxcbiAgICBzb3VyY2VzOiBbXSxcbiAgICB0YXJnZXRzOiBbXSxcbiAgICBmaWx0ZXJSZXN1bHRzOiB1bmRlZmluZWQsXG4gICAgb25DbGVhcjogdW5kZWZpbmVkLFxuICAgIGdldEF1dG9TdWdnZXN0SWNvbnM6IHVuZGVmaW5lZCxcbiAgICByZWZQb2ludDogdW5kZWZpbmVkLFxuICAgIGFkZEFuYWx5dGljc0V2ZW50OiB1bmRlZmluZWQsXG4gICAgZGlzYWJsZUF1dG9Gb2N1czogZmFsc2UsXG4gICAgaXNNb2JpbGU6IGZhbHNlLFxuICAgIGhhbmRsZVZpYVBvaW50TG9jYXRpb25TZWxlY3RlZDogdW5kZWZpbmVkLFxuICAgIGNvbG9yOiAnIzAwN2FjOScsXG4gICAgaG92ZXJDb2xvcjogJyMwMDYyYTEnLFxuICAgIG9yaWdpbk1vYmlsZUxhYmVsOiBudWxsLFxuICAgIGRlc3RpbmF0aW9uTW9iaWxlTGFiZWw6IG51bGwsXG4gICAgbW9kZVNldDogdW5kZWZpbmVkLFxuICAgIG1vZGVJY29uQ29sb3JzOiB1bmRlZmluZWQsXG4gICAgZm9udFdlaWdodHM6IHtcbiAgICAgIG1lZGl1bTogNTAwLFxuICAgIH0sXG4gICAgc2hvd1Njcm9sbDogZmFsc2UsXG4gICAgb25Gb2N1c0NoYW5nZTogdW5kZWZpbmVkLFxuICAgIGlzRW1iZWRkZWQ6IGZhbHNlLFxuICAgIHNob3dTd2FwQ29udHJvbDogZmFsc2UsXG4gICAgc2hvd1ZpYXBvaW50Q29udHJvbDogZmFsc2UsXG4gICAgc2hvd1NsYWNrQ29udHJvbDogZmFsc2UsXG4gIH07XG5cbiAgY29uc3RydWN0b3IocHJvcHMpIHtcbiAgICBzdXBlcihwcm9wcyk7XG4gICAgdGhpcy5zdGF0ZSA9IHtcbiAgICAgIGFjdGl2ZVNsYWNrSW5wdXRzOiBbXSxcbiAgICAgIHJlZnM6IFtdLFxuICAgIH07XG4gICAgT2JqZWN0LmtleXModHJhbnNsYXRpb25zKS5mb3JFYWNoKGxhbmcgPT4ge1xuICAgICAgaTE4bmV4dC5hZGRSZXNvdXJjZUJ1bmRsZShsYW5nLCAndHJhbnNsYXRpb24nLCB0cmFuc2xhdGlvbnNbbGFuZ10pO1xuICAgIH0pO1xuICB9XG5cbiAgY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgaTE4bmV4dC5jaGFuZ2VMYW5ndWFnZSh0aGlzLnByb3BzLmxhbmcpO1xuICB9XG5cbiAgY29tcG9uZW50RGlkVXBkYXRlKCkge1xuICAgIGlmIChpMThuZXh0Lmxhbmd1YWdlICE9PSB0aGlzLnByb3BzLmxhbmcpIHtcbiAgICAgIGkxOG5leHQuY2hhbmdlTGFuZ3VhZ2UodGhpcy5wcm9wcy5sYW5nKTtcbiAgICB9XG4gIH1cblxuICBzdG9yZVJlZmVyZW5jZSA9IHJlZiA9PiB7XG4gICAgdGhpcy5zZXRTdGF0ZShwcmV2U3RhdGUgPT4gKHsgcmVmczogWy4uLnByZXZTdGF0ZS5yZWZzLCByZWZdIH0pKTtcbiAgfTtcblxuICBoYW5kbGVGb2N1c0NoYW5nZSA9ICgpID0+IHtcbiAgICBjb25zdCB7IGRlc3RpbmF0aW9uIH0gPSB0aGlzLnByb3BzO1xuICAgIGlmICghZGVzdGluYXRpb24gfHwgIWRlc3RpbmF0aW9uLmxhdCkge1xuICAgICAgdGhpcy5zdGF0ZS5yZWZzWzFdLmZvY3VzKCk7XG4gICAgfVxuICB9O1xuXG4gIHVwZGF0ZVZpYVBvaW50cyA9IHZpYVBvaW50cyA9PiB7XG4gICAgaWYgKHZpYVBvaW50cy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMucHJvcHMudXBkYXRlVmlhUG9pbnRzKFtdKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5wcm9wcy51cGRhdGVWaWFQb2ludHModmlhUG9pbnRzLmZpbHRlcih2cCA9PiAhaXNWaWFQb2ludEVtcHR5KHZwKSkpO1xuICB9O1xuXG4gIGhhbmRsZVRvZ2dsZVZpYVBvaW50U2xhY2tDbGljayA9IHZpYVBvaW50SW5kZXggPT4ge1xuICAgIGNvbnN0IHsgYWN0aXZlU2xhY2tJbnB1dHMgfSA9IHRoaXMuc3RhdGU7XG4gICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICBhY3RpdmVTbGFja0lucHV0czogYWN0aXZlU2xhY2tJbnB1dHMuaW5jbHVkZXModmlhUG9pbnRJbmRleClcbiAgICAgICAgPyB1cGRhdGVWaWFQb2ludFNsYWNrKGFjdGl2ZVNsYWNrSW5wdXRzLCB2aWFQb2ludEluZGV4KVxuICAgICAgICA6IGFjdGl2ZVNsYWNrSW5wdXRzLmNvbmNhdChbdmlhUG9pbnRJbmRleF0pLFxuICAgIH0pO1xuICB9O1xuXG4gIGhhbmRsZVZpYVBvaW50U2xhY2tUaW1lU2VsZWN0ZWQgPSAoc2xhY2tUaW1lSW5TZWNvbmRzLCBpKSA9PiB7XG4gICAgaWYgKHRoaXMucHJvcHMuYWRkQW5hbHl0aWNzRXZlbnQpIHtcbiAgICAgIHRoaXMucHJvcHMuYWRkQW5hbHl0aWNzRXZlbnQoe1xuICAgICAgICBhY3Rpb246ICdFZGl0VmlhUG9pbnRTdG9wRHVyYXRpb24nLFxuICAgICAgICBjYXRlZ29yeTogJ0l0aW5lcmFyeVNldHRpbmdzJyxcbiAgICAgICAgbmFtZTogc2xhY2tUaW1lSW5TZWNvbmRzIC8gNjAsXG4gICAgICB9KTtcbiAgICB9XG4gICAgY29uc3QgeyB2aWFQb2ludHMgfSA9IHRoaXMucHJvcHM7XG4gICAgdmlhUG9pbnRzW2ldLmxvY2F0aW9uU2xhY2sgPSBOdW1iZXIucGFyc2VJbnQoc2xhY2tUaW1lSW5TZWNvbmRzLCAxMCk7XG4gICAgdGhpcy51cGRhdGVWaWFQb2ludHModmlhUG9pbnRzKTtcbiAgfTtcblxuICBoYW5kbGVWaWFQb2ludExvY2F0aW9uU2VsZWN0ZWQgPSAodmlhUG9pbnRMb2NhdGlvbiwgaSkgPT4ge1xuICAgIHRoaXMucHJvcHMuaGFuZGxlVmlhUG9pbnRMb2NhdGlvblNlbGVjdGVkKHZpYVBvaW50TG9jYXRpb24sIGkpO1xuICB9O1xuXG4gIGhhbmRsZVJlbW92ZVZpYVBvaW50Q2xpY2sgPSB2aWFQb2ludEluZGV4ID0+IHtcbiAgICBpZiAodGhpcy5wcm9wcy5hZGRBbmFseXRpY3NFdmVudCkge1xuICAgICAgdGhpcy5wcm9wcy5hZGRBbmFseXRpY3NFdmVudCh7XG4gICAgICAgIGFjdGlvbjogJ1JlbW92ZUpvdXJuZXlWaWFQb2ludCcsXG4gICAgICAgIGNhdGVnb3J5OiAnSXRpbmVyYXJ5U2V0dGluZ3MnLFxuICAgICAgICBuYW1lOiBudWxsLFxuICAgICAgfSk7XG4gICAgfVxuICAgIGNvbnN0IHsgYWN0aXZlU2xhY2tJbnB1dHMgfSA9IHRoaXMuc3RhdGU7XG4gICAgY29uc3QgeyB2aWFQb2ludHMgfSA9IHRoaXMucHJvcHM7XG4gICAgdmlhUG9pbnRzLnNwbGljZSh2aWFQb2ludEluZGV4LCAxKTtcbiAgICB0aGlzLnNldFN0YXRlKFxuICAgICAge1xuICAgICAgICBhY3RpdmVTbGFja0lucHV0czogdXBkYXRlVmlhUG9pbnRTbGFjayhcbiAgICAgICAgICBhY3RpdmVTbGFja0lucHV0cyxcbiAgICAgICAgICB2aWFQb2ludEluZGV4LFxuICAgICAgICAgIHRydWUsXG4gICAgICAgICksXG4gICAgICB9LFxuICAgICAgKCkgPT4gdGhpcy51cGRhdGVWaWFQb2ludHModmlhUG9pbnRzKSxcbiAgICApO1xuICB9O1xuXG4gIGhhbmRsZUFkZFZpYVBvaW50Q2xpY2sgPSAoKSA9PiB7XG4gICAgaWYgKHRoaXMucHJvcHMuYWRkQW5hbHl0aWNzRXZlbnQpIHtcbiAgICAgIHRoaXMucHJvcHMuYWRkQW5hbHl0aWNzRXZlbnQoe1xuICAgICAgICBhY3Rpb246ICdBZGRKb3VybmV5VmlhUG9pbnQnLFxuICAgICAgICBjYXRlZ29yeTogJ0l0aW5lcmFyeVNldHRpbmdzJyxcbiAgICAgICAgbmFtZTogJ1F1aWNrU2V0dGluZ3NCdXR0b24nLFxuICAgICAgfSk7XG4gICAgfVxuICAgIGNvbnN0IHsgdmlhUG9pbnRzIH0gPSB0aGlzLnByb3BzO1xuICAgIHZpYVBvaW50cy5wdXNoKGdldEVtcHR5VmlhUG9pbnRQbGFjZUhvbGRlcigpKTtcbiAgICAvLyBXZSBuZWVkIHRvIHVwZGF0ZSB0aGUgc3RhdGUgc28gdGhhdCBwbGFjZUhvbGRlciB3aWxsIHNob3cgdXAgaW4gcGFuZWwuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L25vLWFjY2Vzcy1zdGF0ZS1pbi1zZXRzdGF0ZVxuICAgIHRoaXMuc2V0U3RhdGUodGhpcy5zdGF0ZSk7XG4gIH07XG5cbiAgaGFuZGxlU3dhcE9yZGVyQ2xpY2sgPSAoKSA9PiB7XG4gICAgaWYgKHRoaXMucHJvcHMuYWRkQW5hbHl0aWNzRXZlbnQpIHtcbiAgICAgIHRoaXMucHJvcHMuYWRkQW5hbHl0aWNzRXZlbnQoe1xuICAgICAgICBhY3Rpb246ICdTd2l0Y2hKb3VybmV5U3RhcnRBbmRFbmRQb2ludE9yZGVyJyxcbiAgICAgICAgY2F0ZWdvcnk6ICdJdGluZXJhcnlTZXR0aW5ncycsXG4gICAgICAgIG5hbWU6IG51bGwsXG4gICAgICB9KTtcbiAgICB9XG4gICAgY29uc3QgeyB2aWFQb2ludHMgfSA9IHRoaXMucHJvcHM7XG4gICAgdmlhUG9pbnRzLnJldmVyc2UoKTtcbiAgICB0aGlzLnByb3BzLnN3YXBPcmRlcigpO1xuICB9O1xuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCB7XG4gICAgICBvcmlnaW4sXG4gICAgICBzZWFyY2hQYW5lbFRleHQsXG4gICAgICBzZWFyY2hDb250ZXh0LFxuICAgICAgZGlzYWJsZUF1dG9Gb2N1cyxcbiAgICAgIHZpYVBvaW50cyxcbiAgICAgIG9yaWdpbk1vYmlsZUxhYmVsLFxuICAgICAgZGVzdGluYXRpb25Nb2JpbGVMYWJlbCxcbiAgICAgIGZvbnRXZWlnaHRzLFxuICAgICAgb25Gb2N1c0NoYW5nZSxcbiAgICAgIHNob3dTd2FwQ29udHJvbCxcbiAgICAgIHNob3dWaWFwb2ludENvbnRyb2wsXG4gICAgfSA9IHRoaXMucHJvcHM7XG4gICAgY29uc3QgeyBhY3RpdmVTbGFja0lucHV0cyB9ID0gdGhpcy5zdGF0ZTtcbiAgICBjb25zdCBzbGFja1RpbWUgPSBnZXRTbGFja1RpbWVPcHRpb25zKCk7XG4gICAgY29uc3QgZGVmYXVsdFNsYWNrVGltZVZhbHVlID0gMDtcbiAgICBjb25zdCBnZXRWaWFQb2ludFNsYWNrVGltZU9yRGVmYXVsdCA9IChcbiAgICAgIHZpYVBvaW50LFxuICAgICAgZGVmYXVsdFZhbHVlID0gZGVmYXVsdFNsYWNrVGltZVZhbHVlLFxuICAgICkgPT4gKHZpYVBvaW50ICYmIHZpYVBvaW50LmxvY2F0aW9uU2xhY2spIHx8IGRlZmF1bHRWYWx1ZTtcbiAgICBjb25zdCBpc1ZpYVBvaW50U2xhY2tUaW1lSW5wdXRBY3RpdmUgPSBpbmRleCA9PlxuICAgICAgYWN0aXZlU2xhY2tJbnB1dHMuaW5jbHVkZXMoaW5kZXgpO1xuICAgIHJldHVybiAoXG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzTmFtZT17Y3goW1xuICAgICAgICAgIHN0eWxlc1snYXV0b3N1Z2dlc3QtcGFuZWwnXSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBzbWFsbDogdGhpcy5wcm9wcy5pc01vYmlsZSxcbiAgICAgICAgICB9LFxuICAgICAgICBdKX1cbiAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAnLS1jb2xvcic6IGAke3RoaXMucHJvcHMuY29sb3J9YCxcbiAgICAgICAgICAnLS1mb250LXdlaWdodC1tZWRpdW0nOiBmb250V2VpZ2h0cy5tZWRpdW0sXG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgIHsnICd9XG4gICAgICAgIHtzZWFyY2hQYW5lbFRleHQgPyAoXG4gICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIDxoMSBjbGFzc05hbWU9e3N0eWxlc1snYXV0b3N1Z2dlc3Qtc2VhcmNocGFuZWwtdGV4dCddfT5cbiAgICAgICAgICAgICAgeycgJ31cbiAgICAgICAgICAgICAge3NlYXJjaFBhbmVsVGV4dH1cbiAgICAgICAgICAgIDwvaDE+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICkgOiBudWxsfVxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzWydvcmlnaW4taW5wdXQtY29udGFpbmVyJ119PlxuICAgICAgICAgIDxEVEF1dG9TdWdnZXN0XG4gICAgICAgICAgICBhcHBFbGVtZW50PXt0aGlzLnByb3BzLmFwcEVsZW1lbnR9XG4gICAgICAgICAgICBpY29uPVwibWFwTWFya2VyXCJcbiAgICAgICAgICAgIGlkPVwib3JpZ2luXCJcbiAgICAgICAgICAgIGF1dG9Gb2N1cz17XG4gICAgICAgICAgICAgIGRpc2FibGVBdXRvRm9jdXMgPT09IHRydWVcbiAgICAgICAgICAgICAgICA/IGZhbHNlXG4gICAgICAgICAgICAgICAgOiAhdGhpcy5wcm9wcy5pc01vYmlsZSAmJiAhb3JpZ2luLmxhdFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc3RvcmVSZWY9e3RoaXMuc3RvcmVSZWZlcmVuY2V9XG4gICAgICAgICAgICByZWZQb2ludD17dGhpcy5wcm9wcy5yZWZQb2ludH1cbiAgICAgICAgICAgIGNsYXNzTmFtZT17Z2V0TG9jYXRpb25UeXBlKG9yaWdpbil9XG4gICAgICAgICAgICBwbGFjZWhvbGRlcj17dGhpcy5wcm9wcy5vcmlnaW5QbGFjZUhvbGRlcn1cbiAgICAgICAgICAgIHZhbHVlPXt2YWx1ZShvcmlnaW4pfVxuICAgICAgICAgICAgc2VhcmNoQ29udGV4dD17c2VhcmNoQ29udGV4dH1cbiAgICAgICAgICAgIGdldEF1dG9TdWdnZXN0SWNvbnM9e3RoaXMucHJvcHMuZ2V0QXV0b1N1Z2dlc3RJY29uc31cbiAgICAgICAgICAgIG9uU2VsZWN0PXt0aGlzLnByb3BzLm9uU2VsZWN0fVxuICAgICAgICAgICAgb25DbGVhcj17dGhpcy5wcm9wcy5vbkNsZWFyfVxuICAgICAgICAgICAgZm9jdXNDaGFuZ2U9e29uRm9jdXNDaGFuZ2UgfHwgdGhpcy5oYW5kbGVGb2N1c0NoYW5nZX1cbiAgICAgICAgICAgIGxhbmc9e3RoaXMucHJvcHMubGFuZ31cbiAgICAgICAgICAgIHNvdXJjZXM9e3RoaXMucHJvcHMuc291cmNlc31cbiAgICAgICAgICAgIHRhcmdldHM9e3RoaXMucHJvcHMudGFyZ2V0c31cbiAgICAgICAgICAgIGZpbHRlclJlc3VsdHM9e3RoaXMucHJvcHMuZmlsdGVyUmVzdWx0c31cbiAgICAgICAgICAgIGlzTW9iaWxlPXt0aGlzLnByb3BzLmlzTW9iaWxlfVxuICAgICAgICAgICAgY29sb3I9e3RoaXMucHJvcHMuY29sb3J9XG4gICAgICAgICAgICBob3ZlckNvbG9yPXt0aGlzLnByb3BzLmhvdmVyQ29sb3J9XG4gICAgICAgICAgICBtb2JpbGVMYWJlbD17b3JpZ2luTW9iaWxlTGFiZWx9XG4gICAgICAgICAgICBmb250V2VpZ2h0cz17dGhpcy5wcm9wcy5mb250V2VpZ2h0c31cbiAgICAgICAgICAgIG1vZGVTZXQ9e3RoaXMucHJvcHMubW9kZVNldH1cbiAgICAgICAgICAgIG1vZGVJY29uQ29sb3JzPXt0aGlzLnByb3BzLm1vZGVJY29uQ29sb3JzfVxuICAgICAgICAgICAgc2hvd1Njcm9sbD17dGhpcy5wcm9wcy5zaG93U2Nyb2xsfVxuICAgICAgICAgICAgaXNFbWJlZGRlZD17dGhpcy5wcm9wcy5pc0VtYmVkZGVkfVxuICAgICAgICAgIC8+XG4gICAgICAgICAgeyhzaG93U3dhcENvbnRyb2wgfHwgc2hvd1ZpYXBvaW50Q29udHJvbCkgJiYgKFxuICAgICAgICAgICAgPEl0aW5lcmFyeVNlYXJjaENvbnRyb2xcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMub3Bwb3NpdGV9XG4gICAgICAgICAgICAgIGVuYWJsZWQ9e3Nob3dTd2FwQ29udHJvbH1cbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gdGhpcy5oYW5kbGVTd2FwT3JkZXJDbGljaygpfVxuICAgICAgICAgICAgICBvbktleVByZXNzPXtlID0+XG4gICAgICAgICAgICAgICAgaXNLZXlib2FyZFNlbGVjdGlvbkV2ZW50KGUpICYmIHRoaXMuaGFuZGxlU3dhcE9yZGVyQ2xpY2soKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGFyaWEtbGFiZWw9e2kxOG5leHQudCgnc3dhcC1vcmRlci1idXR0b24tbGFiZWwnKX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPEljb24gaW1nPVwib3Bwb3NpdGVcIiBjb2xvcj17dGhpcy5wcm9wcy5jb2xvcn0gLz5cbiAgICAgICAgICAgIDwvSXRpbmVyYXJ5U2VhcmNoQ29udHJvbD5cbiAgICAgICAgICApfVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAge3ZpYVBvaW50cy5sZW5ndGggPT09IDAgJiYgKFxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXNbJ3JlY3RhbmdsZS1jb250YWluZXInXX0+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLnJlY3RhbmdsZX0gLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKX1cbiAgICAgICAgPFJlYWN0U29ydGFibGVcbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlc1sndmlhcG9pbnRzLWNvbnRhaW5lciddfVxuICAgICAgICAgIGxpc3Q9e3ZpYVBvaW50c31cbiAgICAgICAgICBoYW5kbGU9e2AuJHtzdHlsZXNbJ3ZpYXBvaW50LWJlZm9yZSddfWB9XG4gICAgICAgICAgYW5pbWF0aW9uPXsyMDB9XG4gICAgICAgICAgZGlzYWJsZWQ9e3ZpYVBvaW50cy5sZW5ndGggPD0gMX1cbiAgICAgICAgICBzZXRMaXN0PXtpdGVtcyA9PiB7XG4gICAgICAgICAgICBjb25zdCBuZXdWaWFQb2ludHMgPSBpdGVtcy5maWx0ZXIodnAgPT4gIWlzVmlhUG9pbnRFbXB0eSh2cCkpO1xuICAgICAgICAgICAgaWYgKG5ld1ZpYVBvaW50cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgIHRoaXMucHJvcHMudXBkYXRlVmlhUG9pbnRzKG5ld1ZpYVBvaW50cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIHt2aWFQb2ludHMubWFwKChvLCBpKSA9PiAoXG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17Y3goc3R5bGVzWyd2aWFwb2ludC1jb250YWluZXInXSl9XG4gICAgICAgICAgICAgIGtleT17YHZpYXBvaW50LSR7aX1gfSAvLyBlc2xpbnQtZGlzYWJsZS1saW5lXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXNbJ2xpZ2h0LWdyYXktYmFja2dyb3VuZCddfT5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLnJvd30+XG4gICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzWyd2aWFwb2ludC1iZWZvcmUnXX1cbiAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3ZpYVBvaW50cy5sZW5ndGggPiAxID8geyBjdXJzb3I6ICdtb3ZlJyB9IDoge319XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHt2aWFQb2ludHMubGVuZ3RoID4gMSAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgPEljb25cbiAgICAgICAgICAgICAgICAgICAgICAgIGltZz1cImVsbGlwc2lzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvdGF0ZT17OTB9XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcj17dGhpcy5wcm9wcy5jb2xvcn1cbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y3goXG4gICAgICAgICAgICAgICAgICAgICAgYCR7c3R5bGVzWyd2aWFwb2ludC1pbnB1dC1jb250YWluZXInXX0gJHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlc1tgdmlhcG9pbnQtJHtpICsgMX1gXVxuICAgICAgICAgICAgICAgICAgICAgIH1gLFxuICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8RFRBdXRvU3VnZ2VzdFxuICAgICAgICAgICAgICAgICAgICAgIGFwcEVsZW1lbnQ9e3RoaXMucHJvcHMuYXBwRWxlbWVudH1cbiAgICAgICAgICAgICAgICAgICAgICBpY29uPVwibWFwTWFya2VyLXZpYVwiXG4gICAgICAgICAgICAgICAgICAgICAgaWQ9XCJ2aWEtcG9pbnRcIlxuICAgICAgICAgICAgICAgICAgICAgIGFyaWFMYWJlbD17aTE4bmV4dC50KCd2aWEtcG9pbnQtaW5kZXgnLCB7IGluZGV4OiBpICsgMSB9KX1cbiAgICAgICAgICAgICAgICAgICAgICBhdXRvRm9jdXM9e1xuICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZUF1dG9Gb2N1cyA9PT0gdHJ1ZSA/IGZhbHNlIDogIXRoaXMucHJvcHMuaXNNb2JpbGVcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ2aWEtcG9pbnRcIlxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInZpYXBvaW50XCJcbiAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hDb250ZXh0PXtzZWFyY2hDb250ZXh0fVxuICAgICAgICAgICAgICAgICAgICAgIHJlZlBvaW50PXt0aGlzLnByb3BzLnJlZlBvaW50fVxuICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXsobyAmJiBvLmFkZHJlc3MpIHx8ICcnfVxuICAgICAgICAgICAgICAgICAgICAgIG9uU2VsZWN0PXt0aGlzLnByb3BzLm9uU2VsZWN0fVxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xlYXI9e3RoaXMucHJvcHMub25DbGVhcn1cbiAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVWaWFQb2ludHM9e2l0ZW0gPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlVmlhUG9pbnRMb2NhdGlvblNlbGVjdGVkKGl0ZW0sIGkpXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIGxhbmc9e3RoaXMucHJvcHMubGFuZ31cbiAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VzPXt0aGlzLnByb3BzLnNvdXJjZXN9XG4gICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0cz17WydTdG9wcycsICdTdGF0aW9ucyddfVxuICAgICAgICAgICAgICAgICAgICAgIGZpbHRlclJlc3VsdHM9e3RoaXMucHJvcHMuZmlsdGVyUmVzdWx0c31cbiAgICAgICAgICAgICAgICAgICAgICBnZXRBdXRvU3VnZ2VzdEljb25zPXt0aGlzLnByb3BzLmdldEF1dG9TdWdnZXN0SWNvbnN9XG4gICAgICAgICAgICAgICAgICAgICAgaXNNb2JpbGU9e3RoaXMucHJvcHMuaXNNb2JpbGV9XG4gICAgICAgICAgICAgICAgICAgICAgY29sb3I9e3RoaXMucHJvcHMuY29sb3J9XG4gICAgICAgICAgICAgICAgICAgICAgaG92ZXJDb2xvcj17dGhpcy5wcm9wcy5ob3ZlckNvbG9yfVxuICAgICAgICAgICAgICAgICAgICAgIGZvbnRXZWlnaHRzPXt0aGlzLnByb3BzLmZvbnRXZWlnaHRzfVxuICAgICAgICAgICAgICAgICAgICAgIG1vZGVTZXQ9e3RoaXMucHJvcHMubW9kZVNldH1cbiAgICAgICAgICAgICAgICAgICAgICBtb2RlSWNvbkNvbG9ycz17dGhpcy5wcm9wcy5tb2RlSWNvbkNvbG9yc31cbiAgICAgICAgICAgICAgICAgICAgICBzaG93U2Nyb2xsPXt0aGlzLnByb3BzLnNob3dTY3JvbGx9XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIHt0aGlzLnByb3BzLnNob3dTbGFja0NvbnRyb2wgJiYgKFxuICAgICAgICAgICAgICAgICAgICA8SXRpbmVyYXJ5U2VhcmNoQ29udHJvbFxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzWydhZGQtdmlhLXBvaW50LXNsYWNrJ119XG4gICAgICAgICAgICAgICAgICAgICAgZW5hYmxlZD17dGhpcy5wcm9wcy5zaG93VmlhcG9pbnRDb250cm9sfVxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHRoaXMuaGFuZGxlVG9nZ2xlVmlhUG9pbnRTbGFja0NsaWNrKGkpfVxuICAgICAgICAgICAgICAgICAgICAgIG9uS2V5UHJlc3M9e2UgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlzS2V5Ym9hcmRTZWxlY3Rpb25FdmVudChlKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVUb2dnbGVWaWFQb2ludFNsYWNrQ2xpY2soaSlcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD17aTE4bmV4dC50KFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNWaWFQb2ludFNsYWNrVGltZUlucHV0QWN0aXZlKGkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgID8gJ2FkZC12aWEtZHVyYXRpb24tYnV0dG9uLWxhYmVsLW9wZW4nXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDogJ2FkZC12aWEtZHVyYXRpb24tYnV0dG9uLWxhYmVsLWNsb3NlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgaW5kZXg6IGkgKyAxIH0sXG4gICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICB3aWRlXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8SWNvbiBpbWc9XCJ0aW1lXCIgY29sb3I9e3RoaXMucHJvcHMuY29sb3J9IC8+XG4gICAgICAgICAgICAgICAgICAgIDwvSXRpbmVyYXJ5U2VhcmNoQ29udHJvbD5cbiAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgeyFpc1ZpYVBvaW50U2xhY2tUaW1lSW5wdXRBY3RpdmUoaSkgJiZcbiAgICAgICAgICAgICAgICAgIHZpYVBvaW50c1tpXSAmJlxuICAgICAgICAgICAgICAgICAgdmlhUG9pbnRzW2ldLmxvY2F0aW9uU2xhY2sgPiAwICYmIChcbiAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlc1sndmlhcG9pbnQtc2xhY2stdGltZSddfVxuICAgICAgICAgICAgICAgICAgICA+e2Ake2kxOG5leHQudCgndmlhcG9pbnQtc2xhY2stYW1vdW50Jyl9OiAke2dldFNsYWNrRGlzcGxheShcbiAgICAgICAgICAgICAgICAgICAgICB2aWFQb2ludHNbaV0ubG9jYXRpb25TbGFjayxcbiAgICAgICAgICAgICAgICAgICAgKX1gfTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjeChzdHlsZXNbJ2lucHV0LXZpYXBvaW50LXNsYWNrLWNvbnRhaW5lciddLCB7XG4gICAgICAgICAgICAgICAgICAgIGNvbGxhcHNlZDogIWlzVmlhUG9pbnRTbGFja1RpbWVJbnB1dEFjdGl2ZShpKSxcbiAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXNbJ3NlbGVjdC13cmFwcGVyJ119PlxuICAgICAgICAgICAgICAgICAgICA8U2VsZWN0XG4gICAgICAgICAgICAgICAgICAgICAgaWQ9e2B2aWFwb2ludC1zbGFjay0ke2l9YH1cbiAgICAgICAgICAgICAgICAgICAgICBsYWJlbD17aTE4bmV4dC50KCd2aWFwb2ludC1zbGFjay1hbW91bnQnKX1cbiAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zPXtzbGFja1RpbWV9XG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2dldFZpYVBvaW50U2xhY2tUaW1lT3JEZWZhdWx0KHZpYVBvaW50c1tpXSl9XG4gICAgICAgICAgICAgICAgICAgICAgZ2V0RGlzcGxheT17Z2V0U2xhY2tEaXNwbGF5fVxuICAgICAgICAgICAgICAgICAgICAgIHZpYVBvaW50SW5kZXg9e2l9XG4gICAgICAgICAgICAgICAgICAgICAgaWNvbj17XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlc1snY29tYm9ib3gtaWNvbiddfSAke3N0eWxlc1sndGltZS1pbnB1dC1pY29uJ119YH1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb24gaW1nPVwidGltZVwiIGNvbG9yPXt0aGlzLnByb3BzLmNvbG9yfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICBvblNsYWNrVGltZVNlbGVjdGVkPXt0aGlzLmhhbmRsZVZpYVBvaW50U2xhY2tUaW1lU2VsZWN0ZWR9XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxJdGluZXJhcnlTZWFyY2hDb250cm9sXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXNbJ3JlbW92ZS12aWEtcG9pbnQnXX1cbiAgICAgICAgICAgICAgICBlbmFibGVkPXt0aGlzLnByb3BzLnNob3dWaWFwb2ludENvbnRyb2x9XG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gdGhpcy5oYW5kbGVSZW1vdmVWaWFQb2ludENsaWNrKGkpfVxuICAgICAgICAgICAgICAgIG9uS2V5UHJlc3M9e2UgPT5cbiAgICAgICAgICAgICAgICAgIGlzS2V5Ym9hcmRTZWxlY3Rpb25FdmVudChlKSAmJlxuICAgICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVSZW1vdmVWaWFQb2ludENsaWNrKGkpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9e2kxOG5leHQudCgncmVtb3ZlLXZpYS1idXR0b24tbGFiZWwnLCB7XG4gICAgICAgICAgICAgICAgICBpbmRleDogaSArIDEsXG4gICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8SWNvbiBpbWc9XCJ0cmFzaFwiIGNvbG9yPXt0aGlzLnByb3BzLmNvbG9yfSAvPlxuICAgICAgICAgICAgICA8L0l0aW5lcmFyeVNlYXJjaENvbnRyb2w+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9SZWFjdFNvcnRhYmxlPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzWydkZXN0aW5hdGlvbi1pbnB1dC1jb250YWluZXInXX0+XG4gICAgICAgICAgPERUQXV0b1N1Z2dlc3RcbiAgICAgICAgICAgIGFwcEVsZW1lbnQ9e3RoaXMucHJvcHMuYXBwRWxlbWVudH1cbiAgICAgICAgICAgIGljb249XCJtYXBNYXJrZXJcIlxuICAgICAgICAgICAgaWQ9XCJkZXN0aW5hdGlvblwiXG4gICAgICAgICAgICBhdXRvRm9jdXM9e1xuICAgICAgICAgICAgICBkaXNhYmxlQXV0b0ZvY3VzID09PSB0cnVlXG4gICAgICAgICAgICAgICAgPyBmYWxzZVxuICAgICAgICAgICAgICAgIDogIXRoaXMucHJvcHMuaXNNb2JpbGUgJiYgIU51bWJlci5pc05hTihvcmlnaW4ubGF0KVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc3RvcmVSZWY9e3RoaXMuc3RvcmVSZWZlcmVuY2V9XG4gICAgICAgICAgICBwbGFjZWhvbGRlcj17dGhpcy5wcm9wcy5kZXN0aW5hdGlvblBsYWNlSG9sZGVyfVxuICAgICAgICAgICAgY2xhc3NOYW1lPXtnZXRMb2NhdGlvblR5cGUodGhpcy5wcm9wcy5kZXN0aW5hdGlvbil9XG4gICAgICAgICAgICBnZXRBdXRvU3VnZ2VzdEljb25zPXt0aGlzLnByb3BzLmdldEF1dG9TdWdnZXN0SWNvbnN9XG4gICAgICAgICAgICBzZWFyY2hDb250ZXh0PXtzZWFyY2hDb250ZXh0fVxuICAgICAgICAgICAgb25TZWxlY3Q9e3RoaXMucHJvcHMub25TZWxlY3R9XG4gICAgICAgICAgICBvbkNsZWFyPXt0aGlzLnByb3BzLm9uQ2xlYXJ9XG4gICAgICAgICAgICByZWZQb2ludD17dGhpcy5wcm9wcy5yZWZQb2ludH1cbiAgICAgICAgICAgIHZhbHVlPXt2YWx1ZSh0aGlzLnByb3BzLmRlc3RpbmF0aW9uKX1cbiAgICAgICAgICAgIGxhbmc9e3RoaXMucHJvcHMubGFuZ31cbiAgICAgICAgICAgIHNvdXJjZXM9e3RoaXMucHJvcHMuc291cmNlc31cbiAgICAgICAgICAgIHRhcmdldHM9e3RoaXMucHJvcHMudGFyZ2V0c31cbiAgICAgICAgICAgIGZpbHRlclJlc3VsdHM9e3RoaXMucHJvcHMuZmlsdGVyUmVzdWx0c31cbiAgICAgICAgICAgIGlzTW9iaWxlPXt0aGlzLnByb3BzLmlzTW9iaWxlfVxuICAgICAgICAgICAgY29sb3I9e3RoaXMucHJvcHMuY29sb3J9XG4gICAgICAgICAgICBob3ZlckNvbG9yPXt0aGlzLnByb3BzLmhvdmVyQ29sb3J9XG4gICAgICAgICAgICBtb2JpbGVMYWJlbD17ZGVzdGluYXRpb25Nb2JpbGVMYWJlbH1cbiAgICAgICAgICAgIGZvbnRXZWlnaHRzPXt0aGlzLnByb3BzLmZvbnRXZWlnaHRzfVxuICAgICAgICAgICAgbW9kZVNldD17dGhpcy5wcm9wcy5tb2RlU2V0fVxuICAgICAgICAgICAgbW9kZUljb25Db2xvcnM9e3RoaXMucHJvcHMubW9kZUljb25Db2xvcnN9XG4gICAgICAgICAgICBzaG93U2Nyb2xsPXt0aGlzLnByb3BzLnNob3dTY3JvbGx9XG4gICAgICAgICAgICBpc0VtYmVkZGVkPXt0aGlzLnByb3BzLmlzRW1iZWRkZWR9XG4gICAgICAgICAgLz5cbiAgICAgICAgICB7KHNob3dTd2FwQ29udHJvbCB8fCBzaG93VmlhcG9pbnRDb250cm9sKSAmJiAoXG4gICAgICAgICAgICA8SXRpbmVyYXJ5U2VhcmNoQ29udHJvbFxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2N4KHN0eWxlc1snYWRkLXZpYS1wb2ludCddLCBzdHlsZXMubW9yZSwge1xuICAgICAgICAgICAgICAgIGNvbGxhcHNlZDogdmlhUG9pbnRzLmxlbmd0aCA+IDQsXG4gICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICBlbmFibGVkPXtzaG93VmlhcG9pbnRDb250cm9sICYmIHZpYVBvaW50cy5sZW5ndGggPT09IDB9XG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHRoaXMuaGFuZGxlQWRkVmlhUG9pbnRDbGljaygpfVxuICAgICAgICAgICAgICBvbktleVByZXNzPXtlID0+XG4gICAgICAgICAgICAgICAgaXNLZXlib2FyZFNlbGVjdGlvbkV2ZW50KGUpICYmIHRoaXMuaGFuZGxlQWRkVmlhUG9pbnRDbGljaygpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgYXJpYS1sYWJlbD17aTE4bmV4dC50KCdhZGQtdmlhLWJ1dHRvbi1sYWJlbCcpfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8SWNvblxuICAgICAgICAgICAgICAgIGltZz1cInZpYXBvaW50XCJcbiAgICAgICAgICAgICAgICB3aWR0aD17MS4yNX1cbiAgICAgICAgICAgICAgICBoZWlnaHQ9ezEuMzc1fVxuICAgICAgICAgICAgICAgIGNvbG9yPXt0aGlzLnByb3BzLmNvbG9yfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9JdGluZXJhcnlTZWFyY2hDb250cm9sPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgKTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBEVEF1dG9zdWdnZXN0UGFuZWw7XG4iXSwibmFtZXMiOlsiX3R5cGVvZiIsIm8iLCJTeW1ib2wiLCJpdGVyYXRvciIsImNvbnN0cnVjdG9yIiwicHJvdG90eXBlIiwidG9Qcm9wZXJ0eUtleSIsInQiLCJpIiwiciIsImUiLCJ0b1ByaW1pdGl2ZSIsImNhbGwiLCJUeXBlRXJyb3IiLCJTdHJpbmciLCJOdW1iZXIiLCJfZGVmaW5lUHJvcGVydHkiLCJvYmoiLCJrZXkiLCJ2YWx1ZSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZW51bWVyYWJsZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIiwic291cmNlIiwiZXhjbHVkZWQiLCJ0YXJnZXQiLCJzb3VyY2VLZXlzIiwia2V5cyIsImxlbmd0aCIsImluZGV4T2YiLCJvYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwic291cmNlU3ltYm9sS2V5cyIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwiX2FycmF5TGlrZVRvQXJyYXkiLCJhcnIiLCJsZW4iLCJhcnIyIiwiQXJyYXkiLCJfc2xpY2VkVG9BcnJheSIsImlzQXJyYXkiLCJhcnJheVdpdGhIb2xlcyIsImwiLCJuIiwidSIsImEiLCJmIiwibmV4dCIsImRvbmUiLCJwdXNoIiwiaXRlcmFibGVUb0FycmF5TGltaXQiLCJtaW5MZW4iLCJhcnJheUxpa2VUb0FycmF5IiwidG9TdHJpbmciLCJzbGljZSIsIm5hbWUiLCJmcm9tIiwidGVzdCIsInVuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5Iiwibm9uSXRlcmFibGVSZXN0Iiwic3R5bGVJbmplY3QiLCJjc3MiLCJyZWYiLCJpbnNlcnRBdCIsImRvY3VtZW50IiwiaGVhZCIsImdldEVsZW1lbnRzQnlUYWdOYW1lIiwic3R5bGUiLCJjcmVhdGVFbGVtZW50IiwidHlwZSIsImZpcnN0Q2hpbGQiLCJpbnNlcnRCZWZvcmUiLCJhcHBlbmRDaGlsZCIsInN0eWxlU2hlZXQiLCJjc3NUZXh0IiwiY3JlYXRlVGV4dE5vZGUiLCJTZWxlY3QiLCJfcmVmIiwiZ2V0RGlzcGxheSIsIm9wdGlvbnMiLCJvblNsYWNrVGltZVNlbGVjdGVkIiwidmlhUG9pbnRJbmRleCIsImlkIiwibGFiZWwiLCJpY29uIiwiX3VzZVN0YXRlMiIsInVzZVN0YXRlIiwiZGlzcGxheVZhbHVlIiwiY2hhbmdlRGlzcGxheVZhbHVlIiwiX3VzZVN0YXRlNCIsIm9wZW4iLCJjaGFuZ2VPcGVuIiwidXNlRWZmZWN0Iiwic2Nyb2xsUmVmIiwidXNlUmVmIiwic2Nyb2xsSW5kZXgiLCJNYXRoIiwiZmxvb3IiLCJ1c2VMYXlvdXRFZmZlY3QiLCJjdXJyZW50Iiwic2Nyb2xsVG9wIiwiaW5wdXRJZCIsImxhYmVsSWQiLCJSZWFjdCIsImNsYXNzTmFtZSIsInN0eWxlcyIsImh0bWxGb3IiLCJBdXRvc3VnZ2VzdCIsInN1Z2dlc3Rpb25zIiwiZ2V0U3VnZ2VzdGlvblZhbHVlIiwicyIsInJlbmRlclN1Z2dlc3Rpb24iLCJkaXNwbGF5TmFtZSIsIm9uU3VnZ2VzdGlvbnNGZXRjaFJlcXVlc3RlZCIsInNob3VsZFJlbmRlclN1Z2dlc3Rpb25zIiwiZm9jdXNJbnB1dE9uU3VnZ2VzdGlvbkNsaWNrIiwib25TdWdnZXN0aW9uc0NsZWFyUmVxdWVzdGVkIiwiaW5wdXRQcm9wcyIsIm9uQ2hhbmdlIiwib25JbnB1dENoYW5nZSIsIl8iLCJfcmVmMiIsIm5ld1ZhbHVlIiwibWV0aG9kIiwib25Gb2N1cyIsIm9uQmx1ciIsInJlYWRPbmx5IiwicmVuZGVyU3VnZ2VzdGlvbnNDb250YWluZXIiLCJfcmVmMyIsImNvbnRhaW5lclByb3BzIiwiY2hpbGRyZW4iLCJvdGhlclJlZnMiLCJfZXhjbHVkZWQiLCJhc3NpZ24iLCJ0YWJJbmRleCIsImVsZW0iLCJ0aGVtZSIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsInByb3BUeXBlcyIsIlByb3BUeXBlcyIsIm51bWJlciIsImlzUmVxdWlyZWQiLCJmdW5jIiwiYXJyYXlPZiIsInNoYXBlIiwic3RyaW5nIiwibm9kZSIsInRyYW5zbGF0aW9ucyIsImRlIiwiZW4iLCJmaSIsInBsIiwic3YiLCJpMThuZXh0X19kZWZhdWx0IiwiaW5pdCIsImxuZyIsImZhbGxiYWNrTG5nIiwiZGVmYXVsdE5TIiwiaW50ZXJwb2xhdGlvbiIsImVzY2FwZVZhbHVlIiwiZ2V0RW1wdHlWaWFQb2ludFBsYWNlSG9sZGVyIiwiaXNWaWFQb2ludEVtcHR5IiwidmlhUG9pbnQiLCJ1bmRlZmluZWQiLCJpc0VtcHR5IiwiaW5jbHVkZXMiLCJJdGluZXJhcnlTZWFyY2hDb250cm9sIiwiZW5hYmxlZCIsIm9uQ2xpY2siLCJvbktleVByZXNzIiwid2lkZSIsInJlc3QiLCJyb2xlIiwiZ2V0U2xhY2tEaXNwbGF5Iiwic2xhY2tJblNlY29uZHMiLCJpMThuZXh0IiwidXBkYXRlVmlhUG9pbnRTbGFjayIsImFjdGl2ZVZpYVBvaW50U2xhY2tzIiwidXBkYXRlZFZpYVBvaW50SW5kZXgiLCJ2aWFQb2ludFJlbW92ZWQiLCJhcmd1bWVudHMiLCJmb3VuZEF0SW5kZXgiLCJzcGxpY2UiLCJtYXAiLCJpc0tleWJvYXJkU2VsZWN0aW9uRXZlbnQiLCJldmVudCIsIndoaWNoIiwia2V5Q29kZSIsImNvbmNhdCIsInByZXZlbnREZWZhdWx0IiwibG9jYXRpb24iLCJhZGRyZXNzIiwiZ3BzIiwicmVhZHkiLCJnZXRMb2NhdGlvblR5cGUiLCJib29sIiwiZGVmYXVsdFByb3BzIiwibG9jYXRpb25TaGFwZSIsImxhdCIsImxvbiIsImxvY2F0aW9uU2xhY2siLCJEVEF1dG9zdWdnZXN0UGFuZWwiLCJDb21wb25lbnQiLCJwcm9wcyIsInN1cGVyIiwidGhpcyIsInNldFN0YXRlIiwicHJldlN0YXRlIiwicmVmcyIsImRlc3RpbmF0aW9uIiwic3RhdGUiLCJmb2N1cyIsInZpYVBvaW50cyIsInVwZGF0ZVZpYVBvaW50cyIsImZpbHRlciIsInZwIiwiYWN0aXZlU2xhY2tJbnB1dHMiLCJzbGFja1RpbWVJblNlY29uZHMiLCJhZGRBbmFseXRpY3NFdmVudCIsImFjdGlvbiIsImNhdGVnb3J5IiwicGFyc2VJbnQiLCJ2aWFQb2ludExvY2F0aW9uIiwiaGFuZGxlVmlhUG9pbnRMb2NhdGlvblNlbGVjdGVkIiwicmV2ZXJzZSIsInN3YXBPcmRlciIsImZvckVhY2giLCJsYW5nIiwiYWRkUmVzb3VyY2VCdW5kbGUiLCJjb21wb25lbnREaWRNb3VudCIsImNoYW5nZUxhbmd1YWdlIiwiY29tcG9uZW50RGlkVXBkYXRlIiwibGFuZ3VhZ2UiLCJyZW5kZXIiLCJfdGhpcyRwcm9wcyIsIm9yaWdpbiIsInNlYXJjaFBhbmVsVGV4dCIsInNlYXJjaENvbnRleHQiLCJkaXNhYmxlQXV0b0ZvY3VzIiwib3JpZ2luTW9iaWxlTGFiZWwiLCJkZXN0aW5hdGlvbk1vYmlsZUxhYmVsIiwiZm9udFdlaWdodHMiLCJvbkZvY3VzQ2hhbmdlIiwic2hvd1N3YXBDb250cm9sIiwic2hvd1ZpYXBvaW50Q29udHJvbCIsInNsYWNrVGltZSIsImdldFNsYWNrVGltZU9wdGlvbnMiLCJ0aW1lT3B0aW9ucyIsInZhbHVlSW5NaW51dGVzIiwiZ2V0VmlhUG9pbnRTbGFja1RpbWVPckRlZmF1bHQiLCJkZWZhdWx0VmFsdWUiLCJpc1ZpYVBvaW50U2xhY2tUaW1lSW5wdXRBY3RpdmUiLCJpbmRleCIsImN4IiwiaXNNb2JpbGUiLCJjb2xvciIsIm1lZGl1bSIsIkRUQXV0b1N1Z2dlc3QiLCJhcHBFbGVtZW50IiwiYXV0b0ZvY3VzIiwic3RvcmVSZWYiLCJzdG9yZVJlZmVyZW5jZSIsInJlZlBvaW50IiwicGxhY2Vob2xkZXIiLCJvcmlnaW5QbGFjZUhvbGRlciIsImdldEF1dG9TdWdnZXN0SWNvbnMiLCJvblNlbGVjdCIsIm9uQ2xlYXIiLCJmb2N1c0NoYW5nZSIsImhhbmRsZUZvY3VzQ2hhbmdlIiwic291cmNlcyIsInRhcmdldHMiLCJmaWx0ZXJSZXN1bHRzIiwiaG92ZXJDb2xvciIsIm1vYmlsZUxhYmVsIiwibW9kZVNldCIsIm1vZGVJY29uQ29sb3JzIiwic2hvd1Njcm9sbCIsImlzRW1iZWRkZWQiLCJvcHBvc2l0ZSIsImhhbmRsZVN3YXBPcmRlckNsaWNrIiwiSWNvbiIsImltZyIsInJlY3RhbmdsZSIsIlJlYWN0U29ydGFibGUiLCJsaXN0IiwiaGFuZGxlIiwiYW5pbWF0aW9uIiwiZGlzYWJsZWQiLCJzZXRMaXN0IiwiaXRlbXMiLCJuZXdWaWFQb2ludHMiLCJyb3ciLCJjdXJzb3IiLCJyb3RhdGUiLCJhcmlhTGFiZWwiLCJoYW5kbGVWaWFQb2ludHMiLCJpdGVtIiwic2hvd1NsYWNrQ29udHJvbCIsImhhbmRsZVRvZ2dsZVZpYVBvaW50U2xhY2tDbGljayIsImhhbmRsZVZpYVBvaW50U2xhY2tUaW1lU2VsZWN0ZWQiLCJoYW5kbGVSZW1vdmVWaWFQb2ludENsaWNrIiwiaXNOYU4iLCJkZXN0aW5hdGlvblBsYWNlSG9sZGVyIiwibW9yZSIsImhhbmRsZUFkZFZpYVBvaW50Q2xpY2siLCJ3aWR0aCIsImhlaWdodCIsIlVSTF9QRUxJQVMiLCJvYmplY3RPZiJdLCJtYXBwaW5ncyI6IjBoQ0FBZSxTQUFTQSxFQUFRQyxHQUc5QixPQUFPRCxFQUFVLG1CQUFxQkUsUUFBVSxpQkFBbUJBLE9BQU9DLFNBQVcsU0FBVUYsR0FDN0YsY0FBY0EsQ0FDZixFQUFHLFNBQVVBLEdBQ1osT0FBT0EsR0FBSyxtQkFBcUJDLFFBQVVELEVBQUVHLGNBQWdCRixRQUFVRCxJQUFNQyxPQUFPRyxVQUFZLGdCQUFrQkosQ0FDdEgsRUFBS0QsRUFBUUMsRUFDYixDQ05lLFNBQVNLLEVBQWNDLEdBQ3BDLElBQUlDLEVDRlMsU0FBcUJELEVBQUdFLEdBQ3JDLEdBQUksVUFBWVQsRUFBUU8sS0FBT0EsRUFBRyxPQUFPQSxFQUN6QyxJQUFJRyxFQUFJSCxFQUFFTCxPQUFPUyxhQUNqQixRQUFJLElB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
|
|
1
|
+
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("classnames"),require("prop-types"),require("react"),require("react-sortablejs"),require("i18next"),require("@digitransit-component/digitransit-component-autosuggest"),require("@digitransit-component/digitransit-component-icon"),require("lodash/isEmpty"),require("react-autosuggest")):"function"==typeof define&&define.amd?define(["exports","classnames","prop-types","react","react-sortablejs","i18next","@digitransit-component/digitransit-component-autosuggest","@digitransit-component/digitransit-component-icon","lodash/isEmpty","react-autosuggest"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self)["@digitransit-component/digitransit-component-autosuggest-panel"]={},e.cx,e.PropTypes,e.React,e.reactSortablejs,e.i18next,e.DTAutosuggest,e.Icon,e.isEmpty,e.Autosuggest)}(this,(function(e,t,n,i,o,a,s,l,r,c){"use strict";function p(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var d=p(t),u=p(n),_=p(i),h=p(a),g=p(s),f=p(l),v=p(r),y=p(c);function m(e){return m="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},m(e)}function b(e){var t=function(e,t){if("object"!=m(e)||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var i=n.call(e,t||"default");if("object"!=m(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==m(t)?t:t+""}function x(e,t,n){return(t=b(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function k(e,t){if(null==e)return{};var n,i,o=function(e,t){if(null==e)return{};var n={};for(var i in e)if({}.hasOwnProperty.call(e,i)){if(-1!==t.indexOf(i))continue;n[i]=e[i]}return n}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i<a.length;i++)n=a[i],-1===t.indexOf(n)&&{}.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function w(e,t){void 0===t&&(t={});var n=t.insertAt;if(e&&"undefined"!=typeof document){var i=document.head||document.getElementsByTagName("head")[0],o=document.createElement("style");o.type="text/css","top"===n&&i.firstChild?i.insertBefore(o,i.firstChild):i.appendChild(o),o.styleSheet?o.styleSheet.cssText=e:o.appendChild(document.createTextNode(e))}}var S={"combobox-container":"select_combobox-container__0lRpm","left-column":"select_left-column__cSrMR","combobox-label":"select_combobox-label__F9Ayd",container:"select_container__yrA-N",suggestion:"select_suggestion__b05iD",suggestionHighlighted:"select_suggestionHighlighted__ZFPWo",suggestionsContainerOpen:"select_suggestionsContainerOpen__9wcJ5",input:"select_input__pK5vk"};w(".select_combobox-container__0lRpm {\n background-color: #fff;\n border: solid #888 1px;\n display: flex;\n align-items: center;\n border-radius: 5px;\n height: 50px;\n justify-content: space-between;\n flex-grow: 1; }\n .select_combobox-container__0lRpm:focus-within {\n border-color: #007ac9; }\n .select_combobox-container__0lRpm .select_left-column__cSrMR {\n display: flex;\n flex-direction: column;\n width: 100%; }\n\n.select_combobox-label__F9Ayd {\n font-size: 12px;\n line-height: 20px;\n color: #666;\n letter-spacing: -0.48px;\n margin-left: 12px;\n margin-top: 4px; }\n\n.select_container__yrA-N {\n position: relative; }\n .select_container__yrA-N .select_suggestion__b05iD {\n font-size: 15px;\n line-height: 49px;\n height: 50px;\n padding: 0 0 0 12px;\n letter-spacing: -0.6px;\n color: #333;\n font-weight: 500; }\n .select_container__yrA-N .select_suggestionHighlighted__ZFPWo {\n font-size: 15px;\n font-weight: 500;\n background: #f2f5f7; }\n .select_container__yrA-N .select_suggestionsContainerOpen__9wcJ5 {\n position: absolute;\n background-color: #fff;\n z-index: 20;\n max-height: 250px;\n overflow-x: hidden;\n overflow-y: scroll;\n border-radius: 5px;\n box-shadow: 0 2px 0 0 rgba(0, 0, 0, 0.06);\n border: 1px rgba(0, 0, 0, 0.1) solid;\n top: 35px;\n width: calc(100% + 45px); }\n .select_container__yrA-N .select_suggestionsContainerOpen__9wcJ5 ul {\n padding: 0;\n margin: 0; }\n .select_container__yrA-N .select_suggestionsContainerOpen__9wcJ5 li:not(:last-child) {\n border-bottom: 1px solid #ddd; }\n .select_container__yrA-N .select_input__pK5vk {\n -moz-appearance: none;\n appearance: none;\n margin: -4px 0 0 0;\n padding-left: 12px;\n border: none;\n height: 26px;\n background: #fff;\n font-weight: 500;\n box-shadow: none;\n font-size: 15px;\n font-stretch: normal;\n font-style: normal;\n line-height: 1.33;\n letter-spacing: -0.6px;\n color: #333; }\n .select_container__yrA-N .select_input__pK5vk:focus {\n outline: none;\n border: none;\n box-shadow: none;\n background: #fff; }\n .select_container__yrA-N .select_input__pK5vk:-moz-read-only {\n cursor: pointer;\n background: #fff; }\n .select_container__yrA-N .select_input__pK5vk:read-only {\n cursor: pointer;\n background: #fff; }\n");const E=["ref"],C=({value:e,getDisplay:t,options:n,onSlackTimeSelected:o,viaPointIndex:a,id:s,label:l,icon:r})=>{const[c,p]=i.useState(t(e)),[d,u]=i.useState(!1);i.useEffect((()=>p(t(e))),[e]);const h=i.useRef(null),g=Math.floor(e/600);i.useLayoutEffect((()=>{d&&h.current&&(h.current.scrollTop=50*g)}),[e,d]);const f=`${s}-input`,v=`${s}-label`;return _.default.createElement("label",{className:S["combobox-container"],htmlFor:f},_.default.createElement("span",{className:S["left-column"]},_.default.createElement("span",{className:S["combobox-label"],id:v},l),_.default.createElement(y.default,{id:s,suggestions:n,getSuggestionValue:e=>e.value,renderSuggestion:e=>e.displayName,onSuggestionsFetchRequested:()=>null,shouldRenderSuggestions:()=>!0,focusInputOnSuggestionClick:!1,onSuggestionsClearRequested:()=>null,inputProps:{value:c,onChange:(t,{newValue:n,method:i})=>{switch(i){case"enter":case"click":o(n,a);break;case"escape":p(e)}},onFocus:()=>{u(!0)},onBlur:()=>{u(!1)},id:f,"aria-labelledby":v,"aria-autocomplete":"none",readOnly:!0},renderSuggestionsContainer:({containerProps:e,children:t})=>{const{ref:n}=e,i=k(e,E);return _.default.createElement("div",Object.assign({tabIndex:"-1"},i,{ref:e=>{e&&(h.current=e,n(e))}}),t)},theme:S})),r)};"production"!==process.env.NODE_ENV&&(C.propTypes={value:u.default.number.isRequired,onSlackTimeSelected:u.default.func.isRequired,getDisplay:u.default.func.isRequired,options:u.default.arrayOf(u.default.shape({displayName:u.default.string.isRequired,value:u.default.number.isRequired}).isRequired).isRequired,id:u.default.string.isRequired,label:u.default.node.isRequired,icon:u.default.node.isRequired,viaPointIndex:u.default.number.isRequired});const P={de:{"add-via-button-label":"Füge Zwischenziel hinzu","add-via-duration-button-label":"Setze Umsteigezeit für Zwischenziel {{index}}","add-via-duration-button-label-close":"Schließe Umsteigezeit-Auswahl für Zwischenziel {{index}}","add-via-duration-button-label-open":"Öffne Umsteigezeit-Auswahl für Zwischenziel {{index}}","minute-short":"min","remove-via-button-label":"Entferne Zwischenziel {{index}}","swap-order-button-label":"Tausche Start mit Ziel","via-point":"Zwischenziel","via-point-index":"Zwischenziel {{index}}","viapoint-slack-amount":"Umsteigezeit"},en:{"add-via-button-label":"Add via point","add-via-duration-button-label":"Set stop duration at via point {{index}}","add-via-duration-button-label-close":"Close stop duration selector at via point {{index}}","add-via-duration-button-label-open":"Open stop duration selector at via point {{index}}","minute-short":"min","remove-via-button-label":"Remove via point {{index}}","swap-order-button-label":"Reverse origin and destination","via-point":"Via point","via-point-index":"Via point {{index}}","viapoint-slack-amount":"Stop duration"},fi:{"add-via-button-label":"Lisää välipiste","add-via-duration-button-label":"Aseta välipisteelle {{index}} pysähdyksen kesto","add-via-duration-button-label-close":"Avaa välipisteen {{index}} pysähdyksen kesto valitsin","add-via-duration-button-label-open":"Sulje välipisteen {{index}} pysähdyksen kesto valitsin","minute-short":"min","remove-via-button-label":"Poista välipiste {{index}}","swap-order-button-label":"Käännä reitin suunta vastakkaiseksi","via-point":"Välipiste","via-point-index":"Välipiste {{index}}","viapoint-slack-amount":"Pysähdyksen kesto"},pl:{"add-via-button-label":"Dodaj punkt pośredni","add-via-duration-button-label":"Wybierz czas postoju dla punktu {{index}}","add-via-duration-button-label-close":"Zamknij wybornik czasu postoju w punkcie {{index}}","add-via-duration-button-label-open":"Otwórz wybornik czasu postoju w punkcie {{index}}","minute-short":"min.","remove-via-button-label":"Usuń punkt pośredni {{index}}","swap-order-button-label":"Odwróć początek i cel","via-point":"Punkt pośredni","via-point-index":"Punkt pośredni {{index}}","viapoint-slack-amount":"Czas postoju"},sv:{"add-via-button-label":"Lägg till viapunkt","add-via-duration-button-label":"Ställ in varaktighet för viapunkten {{index}}","add-via-duration-button-label-close":"Stäng väljaren för varaktighet vid via-punkten {{index}}","add-via-duration-button-label-open":"Öppna väljaren för varaktighet vid via-punkten {{index}}","minute-short":"min","remove-via-button-label":"Ta bort viapunkt {{index}}","swap-order-button-label":"Sväng ruttens riktning till den motsatta","via-point":"Via punkt","via-point-index":"Via punkt {{index}}","viapoint-slack-amount":"Stoppets varaktighet"}};var N={"autosuggest-panel":"styles_autosuggest-panel__meNwd","autosuggest-searchpanel-text":"styles_autosuggest-searchpanel-text__-VQTg","origin-input-container":"styles_origin-input-container__p4Qik","destination-input-container":"styles_destination-input-container__jBY4I",row:"styles_row__1GhCD","viapoints-container":"styles_viapoints-container__FYp7K","viapoint-container":"styles_viapoint-container__8yh1M","light-gray-background":"styles_light-gray-background__4fyZs","viapoint-before":"styles_viapoint-before__t4saF","viapoint-input-container":"styles_viapoint-input-container__uZx95","viapoint-1":"styles_viapoint-1__8Mna8",viapoint:"styles_viapoint__vUO9L","viapoint-2":"styles_viapoint-2__-OoUa","viapoint-3":"styles_viapoint-3__vvivE","viapoint-4":"styles_viapoint-4__jS9k1","viapoint-5":"styles_viapoint-5__J4V5N","viapoint-slack-time":"styles_viapoint-slack-time__Xpo0G","select-wrapper":"styles_select-wrapper__1usZw","via-point-button-container":"styles_via-point-button-container__cI2JI","input-viapoint-slack-container":"styles_input-viapoint-slack-container__TNgVy","itinerary-search-control":"styles_itinerary-search-control__cEL1X",opposite:"styles_opposite__zQQhd","add-via-point":"styles_add-via-point__E-gGB","add-via-point-slack":"styles_add-via-point-slack__GKjFf","remove-via-point":"styles_remove-via-point__e9DMQ","combobox-icon":"styles_combobox-icon__d3k1e","time-input-icon":"styles_time-input-icon__M8dmw","rectangle-container":"styles_rectangle-container__AdbAA",rectangle:"styles_rectangle__1IO7E","search-panel-whitespace":"styles_search-panel-whitespace__Luhwx"};w(".styles_autosuggest-panel__meNwd {\n width: 100%; }\n\n.styles_autosuggest-searchpanel-text__-VQTg {\n font-size: 24px;\n font-weight: var(--font-weight-medium);\n letter-spacing: -0.8px;\n color: #333;\n line-height: 1;\n margin-bottom: 17px;\n margin-top: unset; }\n @media screen and (min-width: 768px) {\n .styles_autosuggest-searchpanel-text__-VQTg {\n letter-spacing: -0.8px;\n line-height: 27px;\n margin-bottom: 21px; } }\n\n.styles_origin-input-container__p4Qik,\n.styles_destination-input-container__jBY4I {\n display: flex;\n flex: 1 0 100%; }\n .styles_origin-input-container__p4Qik input[type='text'],\n .styles_destination-input-container__jBY4I input[type='text'] {\n margin: 0; }\n\n.styles_row__1GhCD {\n display: flex;\n flex-direction: row; }\n\n.styles_viapoints-container__FYp7K {\n display: flex;\n flex-direction: column; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M {\n display: flex;\n flex: 1 0 100%;\n min-height: 50px; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M:first-child {\n margin-top: 6px; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M:not(:first-child) {\n margin-top: 3px; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M:last-child {\n margin-bottom: 6px; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs {\n display: flex;\n padding: 3px 0;\n flex-direction: column;\n background: #f2f5f7;\n border-radius: 5px;\n width: 100%; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-before__t4saF {\n display: flex;\n min-width: 27px;\n justify-content: center;\n align-items: center; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-before__t4saF svg {\n fill: #888;\n height: 20px; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-input-container__uZx95 {\n display: flex;\n align-items: center;\n width: 100%; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-input-container__uZx95 input[type='text'] {\n margin: 0; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-input-container__uZx95.styles_viapoint-1__8Mna8 > div.styles_viapoint__vUO9L {\n z-index: 15; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-input-container__uZx95.styles_viapoint-2__-OoUa > div.styles_viapoint__vUO9L {\n z-index: 14; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-input-container__uZx95.styles_viapoint-3__vvivE > div.styles_viapoint__vUO9L {\n z-index: 13; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-input-container__uZx95.styles_viapoint-4__jS9k1 > div.styles_viapoint__vUO9L {\n z-index: 12; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-input-container__uZx95.styles_viapoint-5__J4V5N > div.styles_viapoint__vUO9L {\n z-index: 11; }\n\n.styles_viapoint-slack-time__Xpo0G {\n font-size: 13px;\n font-weight: normal;\n letter-spacing: -0.36px;\n color: #333;\n padding-left: 27px;\n padding-top: 12px;\n padding-bottom: 10px; }\n\n.styles_select-wrapper__1usZw {\n display: flex;\n height: 50px;\n margin-top: 9px;\n padding-left: 27px;\n padding-right: 47px; }\n\n.styles_via-point-button-container__cI2JI {\n display: flex; }\n .styles_via-point-button-container__cI2JI > div:nth-child(1) {\n order: 1;\n border-left: none; }\n .styles_via-point-button-container__cI2JI > div:nth-child(2) {\n order: 2;\n border-left: 1px solid rgba(151, 151, 151, 0.2); }\n\n.styles_input-viapoint-slack-container__TNgVy {\n display: flex;\n flex-direction: column; }\n\n.styles_itinerary-search-control__cEL1X {\n display: flex;\n align-items: center;\n justify-content: center;\n text-align: center;\n max-height: 50px;\n min-width: var(--width); }\n .styles_itinerary-search-control__cEL1X + .styles_itinerary-search-control__cEL1X {\n border-left: 1px solid rgba(151, 151, 151, 0.2); }\n .styles_itinerary-search-control__cEL1X .styles_opposite__zQQhd {\n display: flex;\n justify-content: center;\n align-items: center;\n height: 100%;\n min-width: 40px;\n cursor: pointer; }\n .styles_itinerary-search-control__cEL1X .styles_opposite__zQQhd svg {\n width: 19px;\n height: 17px; }\n .styles_itinerary-search-control__cEL1X .styles_add-via-point__E-gGB {\n display: flex;\n justify-content: center;\n align-items: center;\n height: 100%;\n min-width: 40px;\n cursor: pointer; }\n .styles_itinerary-search-control__cEL1X .styles_add-via-point__E-gGB svg {\n width: 20px;\n height: 22px; }\n .styles_itinerary-search-control__cEL1X .styles_add-via-point-slack__GKjFf {\n display: flex;\n justify-content: center;\n align-items: center;\n height: 100%;\n min-width: 47px;\n cursor: pointer; }\n .styles_itinerary-search-control__cEL1X .styles_add-via-point-slack__GKjFf svg {\n width: 18px;\n height: 19px; }\n .styles_itinerary-search-control__cEL1X .styles_remove-via-point__e9DMQ {\n display: flex;\n justify-content: center;\n align-items: center;\n height: 100%;\n max-height: 44px;\n min-width: 40px;\n cursor: pointer; }\n .styles_itinerary-search-control__cEL1X .styles_remove-via-point__e9DMQ svg {\n width: 14px;\n height: 14px; }\n\n.styles_combobox-icon__d3k1e {\n color: var(--color);\n border-left: solid #888 1px;\n height: 35px; }\n .styles_combobox-icon__d3k1e.styles_time-input-icon__M8dmw {\n padding: 9px 13px 0 13px; }\n .styles_combobox-icon__d3k1e.styles_time-input-icon__M8dmw svg {\n width: 18px;\n height: 19px; }\n\n.styles_rectangle-container__AdbAA {\n display: block;\n position: relative;\n height: 9px;\n z-index: 19; }\n .styles_rectangle-container__AdbAA .styles_rectangle__1IO7E {\n position: absolute;\n width: 4px;\n height: 21px;\n border-radius: 2px;\n background-color: #ddd;\n margin-left: 25px;\n margin-top: -5px; }\n\n.styles_search-panel-whitespace__Luhwx {\n min-width: 40px; }\n");const A=["children","className","enabled","onClick","onKeyPress","wide"];h.default.init({lng:"fi",fallbackLng:"fi",defaultNS:"translation",interpolation:{escapeValue:!1}});const V=()=>({}),O=e=>{if(void 0===e||v.default(e))return!0;const t=Object.keys(e);return 1===t.length||2===t.length&&t.includes("locationSlack")},R=e=>{let{children:t,className:n,enabled:i,onClick:o,onKeyPress:a,wide:s}=e,l=k(e,A);return _.default.createElement("div",{className:N["itinerary-search-control"],style:{"--width":s?"47px":"40px"}},o&&i&&_.default.createElement("div",Object.assign({},l,{className:n,onClick:o,onKeyPress:a,role:"button",tabIndex:"0"}),t))},I=e=>`${e/60} ${h.default.t("minute-short")}`,M=(e,t,n=!1)=>{const i=e.indexOf(t);return i>-1&&e.splice(i,1),n?e.map((e=>e>t?e-1:e)):e},L=e=>{const t=e&&(e.key||e.which||e.keyCode)||"";return!(!t||![13," ","Spacebar"].concat([32,"Enter"]).includes(t))&&(e.preventDefault(),!0)},j=e=>e&&e.address||e&&e.gps&&e.ready&&"Nykyinen sijainti"||"",F=e=>e&&!0===e.gps?"position":"location";"production"!==process.env.NODE_ENV&&(R.propTypes={children:u.default.node,className:u.default.string.isRequired,enabled:u.default.bool.isRequired,onClick:u.default.func.isRequired,onKeyPress:u.default.func.isRequired,wide:u.default.bool}),R.defaultProps={children:void 0,wide:!1};const z="production"!==process.env.NODE_ENV?u.default.shape({address:u.default.string,lat:u.default.number,lon:u.default.number,locationSlack:u.default.number}):{};class K extends _.default.Component{constructor(e){super(e),x(this,"storeReference",(e=>{this.setState((t=>({refs:[...t.refs,e]})))})),x(this,"handleFocusChange",(()=>{const{destination:e}=this.props;e&&e.lat||this.state.refs[1].focus()})),x(this,"updateViaPoints",(e=>{0!==e.length?this.props.updateViaPoints(e.filter((e=>!O(e)))):this.props.updateViaPoints([])})),x(this,"handleToggleViaPointSlackClick",(e=>{const{activeSlackInputs:t}=this.state;this.setState({activeSlackInputs:t.includes(e)?M(t,e):t.concat([e])})})),x(this,"handleViaPointSlackTimeSelected",((e,t)=>{this.props.addAnalyticsEvent&&this.props.addAnalyticsEvent({action:"EditViaPointStopDuration",category:"ItinerarySettings",name:e/60});const{viaPoints:n}=this.props;n[t].locationSlack=Number.parseInt(e,10),this.updateViaPoints(n)})),x(this,"handleViaPointLocationSelected",((e,t)=>{this.props.handleViaPointLocationSelected(e,t)})),x(this,"handleRemoveViaPointClick",(e=>{this.props.addAnalyticsEvent&&this.props.addAnalyticsEvent({action:"RemoveJourneyViaPoint",category:"ItinerarySettings",name:null});const{activeSlackInputs:t}=this.state,{viaPoints:n}=this.props;n.splice(e,1),this.setState({activeSlackInputs:M(t,e,!0)},(()=>this.updateViaPoints(n)))})),x(this,"handleAddViaPointClick",(()=>{this.props.addAnalyticsEvent&&this.props.addAnalyticsEvent({action:"AddJourneyViaPoint",category:"ItinerarySettings",name:"QuickSettingsButton"});const{viaPoints:e}=this.props;e.push({}),this.setState(this.state)})),x(this,"handleSwapOrderClick",(()=>{this.props.addAnalyticsEvent&&this.props.addAnalyticsEvent({action:"SwitchJourneyStartAndEndPointOrder",category:"ItinerarySettings",name:null});const{viaPoints:e}=this.props;e.reverse(),this.props.swapOrder()})),this.state={activeSlackInputs:[],refs:[]},Object.keys(P).forEach((e=>{h.default.addResourceBundle(e,"translation",P[e])}))}componentDidMount(){h.default.changeLanguage(this.props.lang)}componentDidUpdate(){h.default.language!==this.props.lang&&h.default.changeLanguage(this.props.lang)}render(){const{origin:e,searchPanelText:t,searchContext:n,disableAutoFocus:i,viaPoints:a,originMobileLabel:s,destinationMobileLabel:l,fontWeights:r,onFocusChange:c,showSwapControl:p,showViapointControl:u}=this.props,{activeSlackInputs:v}=this.state,y=(()=>{const e=[];for(let t=0;t<=9;t++){const n=10*t;e.push({displayName:`${n} ${h.default.t("minute-short")}`,value:60*n})}return e})(),m=(e,t=0)=>e&&e.locationSlack||t,b=e=>v.includes(e);return _.default.createElement("div",{className:d.default(N["autosuggest-panel"],this.props.isMobile&&"small"),style:{"--color":`${this.props.color}`,"--font-weight-medium":r.medium}}," ",t?_.default.createElement("div",null,_.default.createElement("h1",{className:N["autosuggest-searchpanel-text"]}," ",t)):null,_.default.createElement("div",{className:N["origin-input-container"]},_.default.createElement(g.default,{appElement:this.props.appElement,icon:"mapMarker",id:"origin",autoFocus:!0!==i&&(!this.props.isMobile&&!e.lat),storeRef:this.storeReference,refPoint:this.props.refPoint,className:F(e),placeholder:this.props.originPlaceHolder,value:j(e),searchContext:n,getAutoSuggestIcons:this.props.getAutoSuggestIcons,onSelect:this.props.onSelect,onClear:this.props.onClear,focusChange:c||this.handleFocusChange,lang:this.props.lang,sources:this.props.sources,targets:this.props.targets,filterResults:this.props.filterResults,isMobile:this.props.isMobile,color:this.props.color,hoverColor:this.props.hoverColor,mobileLabel:s,fontWeights:this.props.fontWeights,modeSet:this.props.modeSet,modeIconColors:this.props.modeIconColors,showScroll:this.props.showScroll,isEmbedded:this.props.isEmbedded}),(p||u)&&_.default.createElement(R,{className:N.opposite,enabled:p,onClick:()=>this.handleSwapOrderClick(),onKeyPress:e=>L(e)&&this.handleSwapOrderClick(),"aria-label":h.default.t("swap-order-button-label")},_.default.createElement(f.default,{img:"opposite",color:this.props.color}))),0===a.length&&_.default.createElement("div",{className:N["rectangle-container"]},_.default.createElement("div",{className:N.rectangle})),_.default.createElement(o.ReactSortable,{className:N["viapoints-container"],list:a,handle:`.${N["viapoint-before"]}`,animation:200,disabled:a.length<=1,setList:e=>{const t=e.filter((e=>!O(e)));t.length>0&&this.props.updateViaPoints(t)}},a.map(((e,t)=>_.default.createElement("div",{className:d.default(N["viapoint-container"]),key:`viapoint-${t}`},_.default.createElement("div",{className:N["light-gray-background"]},_.default.createElement("div",{className:N.row},_.default.createElement("div",{className:N["viapoint-before"],style:a.length>1?{cursor:"move"}:{}},a.length>1&&_.default.createElement(f.default,{img:"ellipsis",rotate:90,color:this.props.color})),_.default.createElement("div",{className:`${N["viapoint-input-container"]} ${N[`viapoint-${t+1}`]}`},_.default.createElement(g.default,{appElement:this.props.appElement,icon:"mapMarker-via",id:"via-point",ariaLabel:h.default.t("via-point-index",{index:t+1}),autoFocus:!0!==i&&!this.props.isMobile,placeholder:"via-point",className:"viapoint",searchContext:n,refPoint:this.props.refPoint,value:e&&e.address||"",onSelect:this.props.onSelect,onClear:this.props.onClear,handleViaPoints:e=>this.handleViaPointLocationSelected(e,t),lang:this.props.lang,sources:this.props.sources,targets:["Stops","Stations"],filterResults:this.props.filterResults,getAutoSuggestIcons:this.props.getAutoSuggestIcons,isMobile:this.props.isMobile,color:this.props.color,hoverColor:this.props.hoverColor,fontWeights:this.props.fontWeights,modeSet:this.props.modeSet,modeIconColors:this.props.modeIconColors,showScroll:this.props.showScroll})),this.props.showSlackControl&&_.default.createElement(R,{className:N["add-via-point-slack"],enabled:this.props.showViapointControl,onClick:()=>this.handleToggleViaPointSlackClick(t),onKeyPress:e=>L(e)&&this.handleToggleViaPointSlackClick(t),"aria-label":h.default.t(b(t)?"add-via-duration-button-label-open":"add-via-duration-button-label-close",{index:t+1}),wide:!0},_.default.createElement(f.default,{img:"time",color:this.props.color}))),!b(t)&&a[t]&&a[t].locationSlack>0&&_.default.createElement("span",{className:N["viapoint-slack-time"]},`${h.default.t("viapoint-slack-amount")}: ${I(a[t].locationSlack)}`),_.default.createElement("div",{className:d.default(N["input-viapoint-slack-container"],!b(t)&&"collapsed")},_.default.createElement("div",{className:N["select-wrapper"]},_.default.createElement(C,{id:`viapoint-slack-${t}`,label:h.default.t("viapoint-slack-amount"),options:y,value:m(a[t]),getDisplay:I,viaPointIndex:t,icon:_.default.createElement("span",{className:`${N["combobox-icon"]} ${N["time-input-icon"]}`},_.default.createElement(f.default,{img:"time",color:this.props.color})),onSlackTimeSelected:this.handleViaPointSlackTimeSelected})))),_.default.createElement(R,{className:N["remove-via-point"],enabled:this.props.showViapointControl,onClick:()=>this.handleRemoveViaPointClick(t),onKeyPress:e=>L(e)&&this.handleRemoveViaPointClick(t),"aria-label":h.default.t("remove-via-button-label",{index:t+1})},_.default.createElement(f.default,{img:"trash",color:this.props.color})))))),_.default.createElement("div",{className:N["destination-input-container"]},_.default.createElement(g.default,{appElement:this.props.appElement,icon:"mapMarker",id:"destination",autoFocus:!0!==i&&(!this.props.isMobile&&!Number.isNaN(e.lat)),storeRef:this.storeReference,placeholder:this.props.destinationPlaceHolder,className:F(this.props.destination),getAutoSuggestIcons:this.props.getAutoSuggestIcons,searchContext:n,onSelect:this.props.onSelect,onClear:this.props.onClear,refPoint:this.props.refPoint,value:j(this.props.destination),lang:this.props.lang,sources:this.props.sources,targets:this.props.targets,filterResults:this.props.filterResults,isMobile:this.props.isMobile,color:this.props.color,hoverColor:this.props.hoverColor,mobileLabel:l,fontWeights:this.props.fontWeights,modeSet:this.props.modeSet,modeIconColors:this.props.modeIconColors,showScroll:this.props.showScroll,isEmbedded:this.props.isEmbedded}),(p||u)&&_.default.createElement(R,{className:d.default(N["add-via-point"],N.more,a.length>4&&"collapsed"),enabled:u&&0===a.length,onClick:()=>this.handleAddViaPointClick(),onKeyPress:e=>L(e)&&this.handleAddViaPointClick(),"aria-label":h.default.t("add-via-button-label")},_.default.createElement(f.default,{img:"viapoint",width:1.25,height:1.375,color:this.props.color}))))}}x(K,"defaultProps",{origin:void 0,destination:void 0,viaPoints:[],originPlaceHolder:"give-origin",destinationPlaceHolder:"give-destination",swapOrder:void 0,updateViaPoints:()=>{},lang:"fi",searchPanelText:void 0,sources:[],targets:[],filterResults:void 0,onClear:void 0,getAutoSuggestIcons:void 0,refPoint:void 0,addAnalyticsEvent:void 0,disableAutoFocus:!1,isMobile:!1,handleViaPointLocationSelected:void 0,color:"#007ac9",hoverColor:"#0062a1",originMobileLabel:null,destinationMobileLabel:null,modeSet:void 0,modeIconColors:void 0,fontWeights:{medium:500},showScroll:!1,onFocusChange:void 0,isEmbedded:!1,showSwapControl:!1,showViapointControl:!1,showSlackControl:!1}),"production"!==process.env.NODE_ENV&&(K.propTypes={appElement:u.default.string.isRequired,origin:z,destination:z,originPlaceHolder:u.default.string,destinationPlaceHolder:u.default.string,viaPoints:u.default.arrayOf(z),updateViaPoints:u.default.func,handleViaPointLocationSelected:u.default.func,swapOrder:u.default.func,searchPanelText:u.default.string,searchContext:u.default.shape({URL_PELIAS:u.default.string}).isRequired,onSelect:u.default.func.isRequired,onClear:u.default.func,addAnalyticsEvent:u.default.func,lang:u.default.string,disableAutoFocus:u.default.bool,sources:u.default.arrayOf(u.default.string),targets:u.default.arrayOf(u.default.string),filterResults:u.default.func,isMobile:u.default.bool,color:u.default.string,hoverColor:u.default.string,originMobileLabel:u.default.string,destinationMobileLabel:u.default.string,refPoint:z,modeSet:u.default.string,modeIconColors:u.default.objectOf(u.default.string),getAutoSuggestIcons:u.default.objectOf(u.default.func),fontWeights:u.default.shape({medium:u.default.number}),showScroll:u.default.bool,onFocusChange:u.default.func,isEmbedded:u.default.bool,showSwapControl:u.default.bool,showViapointControl:u.default.bool,showSlackControl:u.default.bool}),e.default=K,e.getEmptyViaPointPlaceHolder=V,Object.defineProperty(e,"__esModule",{value:!0})}));
|
|
2
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZGV2ZWxvcG1lbnQuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS90eXBlb2YuanMiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vdG9Qcm9wZXJ0eUtleS5qcyIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS90b1ByaW1pdGl2ZS5qcyIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9kZWZpbmVQcm9wZXJ0eS5qcyIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllcy5qcyIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlLmpzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWluamVjdC9kaXN0L3N0eWxlLWluamVjdC5lcy5qcyIsIi4uL3NyYy9oZWxwZXJzL1NlbGVjdC5qcyIsIi4uL3NyYy9oZWxwZXJzL3RyYW5zbGF0aW9ucy5qcyIsIi4uL3NyYy9pbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBfdHlwZW9mKG8pIHtcbiAgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiO1xuXG4gIHJldHVybiBfdHlwZW9mID0gXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgXCJzeW1ib2xcIiA9PSB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID8gZnVuY3Rpb24gKG8pIHtcbiAgICByZXR1cm4gdHlwZW9mIG87XG4gIH0gOiBmdW5jdGlvbiAobykge1xuICAgIHJldHVybiBvICYmIFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIG8uY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvO1xuICB9LCBfdHlwZW9mKG8pO1xufVxuZXhwb3J0IHsgX3R5cGVvZiBhcyBkZWZhdWx0IH07IiwiaW1wb3J0IF90eXBlb2YgZnJvbSBcIi4vdHlwZW9mLmpzXCI7XG5pbXBvcnQgdG9QcmltaXRpdmUgZnJvbSBcIi4vdG9QcmltaXRpdmUuanNcIjtcbmZ1bmN0aW9uIHRvUHJvcGVydHlLZXkodCkge1xuICB2YXIgaSA9IHRvUHJpbWl0aXZlKHQsIFwic3RyaW5nXCIpO1xuICByZXR1cm4gXCJzeW1ib2xcIiA9PSBfdHlwZW9mKGkpID8gaSA6IGkgKyBcIlwiO1xufVxuZXhwb3J0IHsgdG9Qcm9wZXJ0eUtleSBhcyBkZWZhdWx0IH07IiwiaW1wb3J0IF90eXBlb2YgZnJvbSBcIi4vdHlwZW9mLmpzXCI7XG5mdW5jdGlvbiB0b1ByaW1pdGl2ZSh0LCByKSB7XG4gIGlmIChcIm9iamVjdFwiICE9IF90eXBlb2YodCkgfHwgIXQpIHJldHVybiB0O1xuICB2YXIgZSA9IHRbU3ltYm9sLnRvUHJpbWl0aXZlXTtcbiAgaWYgKHZvaWQgMCAhPT0gZSkge1xuICAgIHZhciBpID0gZS5jYWxsKHQsIHIgfHwgXCJkZWZhdWx0XCIpO1xuICAgIGlmIChcIm9iamVjdFwiICE9IF90eXBlb2YoaSkpIHJldHVybiBpO1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLlwiKTtcbiAgfVxuICByZXR1cm4gKFwic3RyaW5nXCIgPT09IHIgPyBTdHJpbmcgOiBOdW1iZXIpKHQpO1xufVxuZXhwb3J0IHsgdG9QcmltaXRpdmUgYXMgZGVmYXVsdCB9OyIsImltcG9ydCB0b1Byb3BlcnR5S2V5IGZyb20gXCIuL3RvUHJvcGVydHlLZXkuanNcIjtcbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShlLCByLCB0KSB7XG4gIHJldHVybiAociA9IHRvUHJvcGVydHlLZXkocikpIGluIGUgPyBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgciwge1xuICAgIHZhbHVlOiB0LFxuICAgIGVudW1lcmFibGU6ICEwLFxuICAgIGNvbmZpZ3VyYWJsZTogITAsXG4gICAgd3JpdGFibGU6ICEwXG4gIH0pIDogZVtyXSA9IHQsIGU7XG59XG5leHBvcnQgeyBfZGVmaW5lUHJvcGVydHkgYXMgZGVmYXVsdCB9OyIsImltcG9ydCBvYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIGZyb20gXCIuL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UuanNcIjtcbmZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhlLCB0KSB7XG4gIGlmIChudWxsID09IGUpIHJldHVybiB7fTtcbiAgdmFyIG8sXG4gICAgcixcbiAgICBpID0gb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShlLCB0KTtcbiAgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHtcbiAgICB2YXIgbiA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7XG4gICAgZm9yIChyID0gMDsgciA8IG4ubGVuZ3RoOyByKyspIG8gPSBuW3JdLCAtMSA9PT0gdC5pbmRleE9mKG8pICYmIHt9LnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSwgbykgJiYgKGlbb10gPSBlW29dKTtcbiAgfVxuICByZXR1cm4gaTtcbn1cbmV4cG9ydCB7IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyBhcyBkZWZhdWx0IH07IiwiZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UociwgZSkge1xuICBpZiAobnVsbCA9PSByKSByZXR1cm4ge307XG4gIHZhciB0ID0ge307XG4gIGZvciAodmFyIG4gaW4gcikgaWYgKHt9Lmhhc093blByb3BlcnR5LmNhbGwociwgbikpIHtcbiAgICBpZiAoLTEgIT09IGUuaW5kZXhPZihuKSkgY29udGludWU7XG4gICAgdFtuXSA9IHJbbl07XG4gIH1cbiAgcmV0dXJuIHQ7XG59XG5leHBvcnQgeyBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSBhcyBkZWZhdWx0IH07IiwiZnVuY3Rpb24gc3R5bGVJbmplY3QoY3NzLCByZWYpIHtcbiAgaWYgKCByZWYgPT09IHZvaWQgMCApIHJlZiA9IHt9O1xuICB2YXIgaW5zZXJ0QXQgPSByZWYuaW5zZXJ0QXQ7XG5cbiAgaWYgKCFjc3MgfHwgdHlwZW9mIGRvY3VtZW50ID09PSAndW5kZWZpbmVkJykgeyByZXR1cm47IH1cblxuICB2YXIgaGVhZCA9IGRvY3VtZW50LmhlYWQgfHwgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2hlYWQnKVswXTtcbiAgdmFyIHN0eWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTtcbiAgc3R5bGUudHlwZSA9ICd0ZXh0L2Nzcyc7XG5cbiAgaWYgKGluc2VydEF0ID09PSAndG9wJykge1xuICAgIGlmIChoZWFkLmZpcnN0Q2hpbGQpIHtcbiAgICAgIGhlYWQuaW5zZXJ0QmVmb3JlKHN0eWxlLCBoZWFkLmZpcnN0Q2hpbGQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBoZWFkLmFwcGVuZENoaWxkKHN0eWxlKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgaGVhZC5hcHBlbmRDaGlsZChzdHlsZSk7XG4gIH1cblxuICBpZiAoc3R5bGUuc3R5bGVTaGVldCkge1xuICAgIHN0eWxlLnN0eWxlU2hlZXQuY3NzVGV4dCA9IGNzcztcbiAgfSBlbHNlIHtcbiAgICBzdHlsZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShjc3MpKTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBzdHlsZUluamVjdDtcbiIsImltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUsIHVzZUVmZmVjdCwgdXNlUmVmLCB1c2VMYXlvdXRFZmZlY3QgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgQXV0b3N1Z2dlc3QgZnJvbSAncmVhY3QtYXV0b3N1Z2dlc3QnO1xuaW1wb3J0IHN0eWxlcyBmcm9tICcuL3NlbGVjdC5zY3NzJztcblxuY29uc3QgU2VsZWN0ID0gKHtcbiAgdmFsdWUsXG4gIGdldERpc3BsYXksXG4gIG9wdGlvbnMsXG4gIG9uU2xhY2tUaW1lU2VsZWN0ZWQsXG4gIHZpYVBvaW50SW5kZXgsXG4gIGlkLFxuICBsYWJlbCxcbiAgaWNvbixcbn0pID0+IHtcbiAgY29uc3QgW2Rpc3BsYXlWYWx1ZSwgY2hhbmdlRGlzcGxheVZhbHVlXSA9IHVzZVN0YXRlKGdldERpc3BsYXkodmFsdWUpKTtcbiAgY29uc3QgW29wZW4sIGNoYW5nZU9wZW5dID0gdXNlU3RhdGUoZmFsc2UpO1xuICB1c2VFZmZlY3QoKCkgPT4gY2hhbmdlRGlzcGxheVZhbHVlKGdldERpc3BsYXkodmFsdWUpKSwgW3ZhbHVlXSk7XG4gIGNvbnN0IHNjcm9sbFJlZiA9IHVzZVJlZihudWxsKTtcbiAgY29uc3Qgc2Nyb2xsSW5kZXggPSBNYXRoLmZsb29yKHZhbHVlIC8gNjAwKTtcbiAgY29uc3QgZWxlbWVudEhlaWdodCA9IDUwO1xuICB1c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChvcGVuICYmIHNjcm9sbFJlZi5jdXJyZW50KSB7XG4gICAgICBzY3JvbGxSZWYuY3VycmVudC5zY3JvbGxUb3AgPSBlbGVtZW50SGVpZ2h0ICogc2Nyb2xsSW5kZXg7XG4gICAgfVxuICB9LCBbdmFsdWUsIG9wZW5dKTtcblxuICBjb25zdCBpbnB1dElkID0gYCR7aWR9LWlucHV0YDtcbiAgY29uc3QgbGFiZWxJZCA9IGAke2lkfS1sYWJlbGA7XG5cbiAgY29uc3Qgb25JbnB1dENoYW5nZSA9IChfLCB7IG5ld1ZhbHVlLCBtZXRob2QgfSkgPT4ge1xuICAgIHN3aXRjaCAobWV0aG9kKSB7XG4gICAgICBjYXNlICdlbnRlcic6XG4gICAgICBjYXNlICdjbGljayc6XG4gICAgICAgIG9uU2xhY2tUaW1lU2VsZWN0ZWQobmV3VmFsdWUsIHZpYVBvaW50SW5kZXgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2VzY2FwZSc6XG4gICAgICAgIGNoYW5nZURpc3BsYXlWYWx1ZSh2YWx1ZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAndXAnOlxuICAgICAgY2FzZSAnZG93bic6XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBicmVhaztcbiAgICB9XG4gIH07XG4gIHJldHVybiAoXG4gICAgPGxhYmVsIGNsYXNzTmFtZT17c3R5bGVzWydjb21ib2JveC1jb250YWluZXInXX0gaHRtbEZvcj17aW5wdXRJZH0+XG4gICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlc1snbGVmdC1jb2x1bW4nXX0+XG4gICAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzWydjb21ib2JveC1sYWJlbCddfSBpZD17bGFiZWxJZH0+XG4gICAgICAgICAge2xhYmVsfVxuICAgICAgICA8L3NwYW4+XG4gICAgICAgIDxBdXRvc3VnZ2VzdFxuICAgICAgICAgIGlkPXtpZH1cbiAgICAgICAgICBzdWdnZXN0aW9ucz17b3B0aW9uc31cbiAgICAgICAgICBnZXRTdWdnZXN0aW9uVmFsdWU9e3MgPT4gcy52YWx1ZX1cbiAgICAgICAgICByZW5kZXJTdWdnZXN0aW9uPXtzID0+IHMuZGlzcGxheU5hbWV9XG4gICAgICAgICAgb25TdWdnZXN0aW9uc0ZldGNoUmVxdWVzdGVkPXsoKSA9PiBudWxsfVxuICAgICAgICAgIHNob3VsZFJlbmRlclN1Z2dlc3Rpb25zPXsoKSA9PiB0cnVlfVxuICAgICAgICAgIGZvY3VzSW5wdXRPblN1Z2dlc3Rpb25DbGljaz17ZmFsc2V9XG4gICAgICAgICAgb25TdWdnZXN0aW9uc0NsZWFyUmVxdWVzdGVkPXsoKSA9PiBudWxsfVxuICAgICAgICAgIGlucHV0UHJvcHM9e3tcbiAgICAgICAgICAgIHZhbHVlOiBkaXNwbGF5VmFsdWUsXG4gICAgICAgICAgICBvbkNoYW5nZTogb25JbnB1dENoYW5nZSxcbiAgICAgICAgICAgIG9uRm9jdXM6ICgpID0+IHtcbiAgICAgICAgICAgICAgY2hhbmdlT3Blbih0cnVlKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBvbkJsdXI6ICgpID0+IHtcbiAgICAgICAgICAgICAgY2hhbmdlT3BlbihmYWxzZSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaWQ6IGlucHV0SWQsXG4gICAgICAgICAgICAnYXJpYS1sYWJlbGxlZGJ5JzogbGFiZWxJZCxcbiAgICAgICAgICAgICdhcmlhLWF1dG9jb21wbGV0ZSc6ICdub25lJyxcbiAgICAgICAgICAgIHJlYWRPbmx5OiB0cnVlLFxuICAgICAgICAgIH19XG4gICAgICAgICAgcmVuZGVyU3VnZ2VzdGlvbnNDb250YWluZXI9eyh7IGNvbnRhaW5lclByb3BzLCBjaGlsZHJlbiB9KSA9PiB7XG4gICAgICAgICAgICAvLyBzZXQgcmVmcyBmb3IgYXV0b3N1Z2dlc3QgbGlicmFyeSBhbmQgc2Nyb2xsYmFyIHBvc2l0aW9uaW5nXG4gICAgICAgICAgICBjb25zdCB7IHJlZiwgLi4ub3RoZXJSZWZzIH0gPSBjb250YWluZXJQcm9wcztcbiAgICAgICAgICAgIGNvbnN0IGNvbnRhaW5lclJlZiA9IGVsZW0gPT4ge1xuICAgICAgICAgICAgICBpZiAoZWxlbSkge1xuICAgICAgICAgICAgICAgIHNjcm9sbFJlZi5jdXJyZW50ID0gZWxlbTtcbiAgICAgICAgICAgICAgICByZWYoZWxlbSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICA8ZGl2IHRhYkluZGV4PVwiLTFcIiB7Li4ub3RoZXJSZWZzfSByZWY9e2NvbnRhaW5lclJlZn0+XG4gICAgICAgICAgICAgICAge2NoaWxkcmVufVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfX1cbiAgICAgICAgICB0aGVtZT17c3R5bGVzfVxuICAgICAgICAvPlxuICAgICAgPC9zcGFuPlxuICAgICAge2ljb259XG4gICAgPC9sYWJlbD5cbiAgKTtcbn07XG5cblNlbGVjdC5wcm9wVHlwZXMgPSB7XG4gIHZhbHVlOiBQcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWQsXG4gIG9uU2xhY2tUaW1lU2VsZWN0ZWQ6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIGdldERpc3BsYXk6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIG9wdGlvbnM6IFByb3BUeXBlcy5hcnJheU9mKFxuICAgIFByb3BUeXBlcy5zaGFwZSh7XG4gICAgICBkaXNwbGF5TmFtZTogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgICAgdmFsdWU6IFByb3BUeXBlcy5udW1iZXIuaXNSZXF1aXJlZCxcbiAgICB9KS5pc1JlcXVpcmVkLFxuICApLmlzUmVxdWlyZWQsXG4gIGlkOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIGxhYmVsOiBQcm9wVHlwZXMubm9kZS5pc1JlcXVpcmVkLFxuICBpY29uOiBQcm9wVHlwZXMubm9kZS5pc1JlcXVpcmVkLFxuICB2aWFQb2ludEluZGV4OiBQcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWQsXG59O1xuXG5leHBvcnQgZGVmYXVsdCBTZWxlY3Q7XG4iLCJjb25zdCB0cmFuc2xhdGlvbnMgPSB7XG4gIGRlOiB7XG4gICAgJ2FkZC12aWEtYnV0dG9uLWxhYmVsJzogJ0bDvGdlIFp3aXNjaGVuemllbCBoaW56dScsXG4gICAgJ2FkZC12aWEtZHVyYXRpb24tYnV0dG9uLWxhYmVsJzpcbiAgICAgICdTZXR6ZSBVbXN0ZWlnZXplaXQgZsO8ciBad2lzY2hlbnppZWwge3tpbmRleH19JyxcbiAgICAnYWRkLXZpYS1kdXJhdGlvbi1idXR0b24tbGFiZWwtY2xvc2UnOlxuICAgICAgJ1NjaGxpZcOfZSBVbXN0ZWlnZXplaXQtQXVzd2FobCBmw7xyIFp3aXNjaGVuemllbCB7e2luZGV4fX0nLFxuICAgICdhZGQtdmlhLWR1cmF0aW9uLWJ1dHRvbi1sYWJlbC1vcGVuJzpcbiAgICAgICfDlmZmbmUgVW1zdGVpZ2V6ZWl0LUF1c3dhaGwgZsO8ciBad2lzY2hlbnppZWwge3tpbmRleH19JyxcbiAgICAnbWludXRlLXNob3J0JzogJ21pbicsXG4gICAgJ3JlbW92ZS12aWEtYnV0dG9uLWxhYmVsJzogJ0VudGZlcm5lIFp3aXNjaGVuemllbCB7e2luZGV4fX0nLFxuICAgICdzd2FwLW9yZGVyLWJ1dHRvbi1sYWJlbCc6ICdUYXVzY2hlIFN0YXJ0IG1pdCBaaWVsJyxcbiAgICAndmlhLXBvaW50JzogJ1p3aXNjaGVuemllbCcsXG4gICAgJ3ZpYS1wb2ludC1pbmRleCc6ICdad2lzY2hlbnppZWwge3tpbmRleH19JyxcbiAgICAndmlhcG9pbnQtc2xhY2stYW1vdW50JzogJ1Vtc3RlaWdlemVpdCcsXG4gIH0sXG4gIGVuOiB7XG4gICAgJ2FkZC12aWEtYnV0dG9uLWxhYmVsJzogJ0FkZCB2aWEgcG9pbnQnLFxuICAgICdhZGQtdmlhLWR1cmF0aW9uLWJ1dHRvbi1sYWJlbCc6ICdTZXQgc3RvcCBkdXJhdGlvbiBhdCB2aWEgcG9pbnQge3tpbmRleH19JyxcbiAgICAnYWRkLXZpYS1kdXJhdGlvbi1idXR0b24tbGFiZWwtY2xvc2UnOlxuICAgICAgJ0Nsb3NlIHN0b3AgZHVyYXRpb24gc2VsZWN0b3IgYXQgdmlhIHBvaW50IHt7aW5kZXh9fScsXG4gICAgJ2FkZC12aWEtZHVyYXRpb24tYnV0dG9uLWxhYmVsLW9wZW4nOlxuICAgICAgJ09wZW4gc3RvcCBkdXJhdGlvbiBzZWxlY3RvciBhdCB2aWEgcG9pbnQge3tpbmRleH19JyxcbiAgICAnbWludXRlLXNob3J0JzogJ21pbicsXG4gICAgJ3JlbW92ZS12aWEtYnV0dG9uLWxhYmVsJzogJ1JlbW92ZSB2aWEgcG9pbnQge3tpbmRleH19JyxcbiAgICAnc3dhcC1vcmRlci1idXR0b24tbGFiZWwnOiAnUmV2ZXJzZSBvcmlnaW4gYW5kIGRlc3RpbmF0aW9uJyxcbiAgICAndmlhLXBvaW50JzogJ1ZpYSBwb2ludCcsXG4gICAgJ3ZpYS1wb2ludC1pbmRleCc6ICdWaWEgcG9pbnQge3tpbmRleH19JyxcbiAgICAndmlhcG9pbnQtc2xhY2stYW1vdW50JzogJ1N0b3AgZHVyYXRpb24nLFxuICB9LFxuICBmaToge1xuICAgICdhZGQtdmlhLWJ1dHRvbi1sYWJlbCc6ICdMaXPDpMOkIHbDpGxpcGlzdGUnLFxuICAgICdhZGQtdmlhLWR1cmF0aW9uLWJ1dHRvbi1sYWJlbCc6XG4gICAgICAnQXNldGEgdsOkbGlwaXN0ZWVsbGUge3tpbmRleH19IHB5c8OkaGR5a3NlbiBrZXN0bycsXG4gICAgJ2FkZC12aWEtZHVyYXRpb24tYnV0dG9uLWxhYmVsLWNsb3NlJzpcbiAgICAgICdBdmFhIHbDpGxpcGlzdGVlbiB7e2luZGV4fX0gcHlzw6RoZHlrc2VuIGtlc3RvIHZhbGl0c2luJyxcbiAgICAnYWRkLXZpYS1kdXJhdGlvbi1idXR0b24tbGFiZWwtb3Blbic6XG4gICAgICAnU3VsamUgdsOkbGlwaXN0ZWVuIHt7aW5kZXh9fSBweXPDpGhkeWtzZW4ga2VzdG8gdmFsaXRzaW4nLFxuICAgICdtaW51dGUtc2hvcnQnOiAnbWluJyxcbiAgICAncmVtb3ZlLXZpYS1idXR0b24tbGFiZWwnOiAnUG9pc3RhIHbDpGxpcGlzdGUge3tpbmRleH19JyxcbiAgICAnc3dhcC1vcmRlci1idXR0b24tbGFiZWwnOiAnS8Okw6RubsOkIHJlaXRpbiBzdXVudGEgdmFzdGFra2Fpc2Vrc2knLFxuICAgICd2aWEtcG9pbnQnOiAnVsOkbGlwaXN0ZScsXG4gICAgJ3ZpYS1wb2ludC1pbmRleCc6ICdWw6RsaXBpc3RlIHt7aW5kZXh9fScsXG4gICAgJ3ZpYXBvaW50LXNsYWNrLWFtb3VudCc6ICdQeXPDpGhkeWtzZW4ga2VzdG8nLFxuICB9LFxuICBwbDoge1xuICAgICdhZGQtdmlhLWJ1dHRvbi1sYWJlbCc6ICdEb2RhaiBwdW5rdCBwb8WbcmVkbmknLFxuICAgICdhZGQtdmlhLWR1cmF0aW9uLWJ1dHRvbi1sYWJlbCc6XG4gICAgICAnV3liaWVyeiBjemFzIHBvc3RvanUgZGxhIHB1bmt0dSB7e2luZGV4fX0nLFxuICAgICdhZGQtdmlhLWR1cmF0aW9uLWJ1dHRvbi1sYWJlbC1jbG9zZSc6XG4gICAgICAnWmFta25paiB3eWJvcm5payBjemFzdSBwb3N0b2p1IHcgcHVua2NpZSB7e2luZGV4fX0nLFxuICAgICdhZGQtdmlhLWR1cmF0aW9uLWJ1dHRvbi1sYWJlbC1vcGVuJzpcbiAgICAgICdPdHfDs3J6IHd5Ym9ybmlrIGN6YXN1IHBvc3RvanUgdyBwdW5rY2llIHt7aW5kZXh9fScsXG4gICAgJ21pbnV0ZS1zaG9ydCc6ICdtaW4uJyxcbiAgICAncmVtb3ZlLXZpYS1idXR0b24tbGFiZWwnOiAnVXN1xYQgcHVua3QgcG/Fm3JlZG5pIHt7aW5kZXh9fScsXG4gICAgJ3N3YXAtb3JkZXItYnV0dG9uLWxhYmVsJzogJ09kd3LDs8SHIHBvY3rEhXRlayBpIGNlbCcsXG4gICAgJ3ZpYS1wb2ludCc6ICdQdW5rdCBwb8WbcmVkbmknLFxuICAgICd2aWEtcG9pbnQtaW5kZXgnOiAnUHVua3QgcG/Fm3JlZG5pIHt7aW5kZXh9fScsXG4gICAgJ3ZpYXBvaW50LXNsYWNrLWFtb3VudCc6ICdDemFzIHBvc3RvanUnLFxuICB9LFxuICBzdjoge1xuICAgICdhZGQtdmlhLWJ1dHRvbi1sYWJlbCc6ICdMw6RnZyB0aWxsIHZpYXB1bmt0JyxcbiAgICAnYWRkLXZpYS1kdXJhdGlvbi1idXR0b24tbGFiZWwnOlxuICAgICAgJ1N0w6RsbCBpbiB2YXJha3RpZ2hldCBmw7ZyIHZpYXB1bmt0ZW4ge3tpbmRleH19JyxcbiAgICAnYWRkLXZpYS1kdXJhdGlvbi1idXR0b24tbGFiZWwtY2xvc2UnOlxuICAgICAgJ1N0w6RuZyB2w6RsamFyZW4gZsO2ciB2YXJha3RpZ2hldCB2aWQgdmlhLXB1bmt0ZW4ge3tpbmRleH19JyxcbiAgICAnYWRkLXZpYS1kdXJhdGlvbi1idXR0b24tbGFiZWwtb3Blbic6XG4gICAgICAnw5ZwcG5hIHbDpGxqYXJlbiBmw7ZyIHZhcmFrdGlnaGV0IHZpZCB2aWEtcHVua3RlbiB7e2luZGV4fX0nLFxuICAgICdtaW51dGUtc2hvcnQnOiAnbWluJyxcbiAgICAncmVtb3ZlLXZpYS1idXR0b24tbGFiZWwnOiAnVGEgYm9ydCB2aWFwdW5rdCB7e2luZGV4fX0nLFxuICAgICdzd2FwLW9yZGVyLWJ1dHRvbi1sYWJlbCc6ICdTdsOkbmcgcnV0dGVucyByaWt0bmluZyB0aWxsIGRlbiBtb3RzYXR0YScsXG4gICAgJ3ZpYS1wb2ludCc6ICdWaWEgcHVua3QnLFxuICAgICd2aWEtcG9pbnQtaW5kZXgnOiAnVmlhIHB1bmt0IHt7aW5kZXh9fScsXG4gICAgJ3ZpYXBvaW50LXNsYWNrLWFtb3VudCc6ICdTdG9wcGV0cyB2YXJha3RpZ2hldCcsXG4gIH0sXG59O1xuXG5leHBvcnQgZGVmYXVsdCB0cmFuc2xhdGlvbnM7XG4iLCIvKiBlc2xpbnQtZGlzYWJsZSBpbXBvcnQvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXMgKi9cbmltcG9ydCBjeCBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgUmVhY3RTb3J0YWJsZSB9IGZyb20gJ3JlYWN0LXNvcnRhYmxlanMnO1xuaW1wb3J0IGkxOG5leHQgZnJvbSAnaTE4bmV4dCc7XG5pbXBvcnQgRFRBdXRvU3VnZ2VzdCBmcm9tICdAZGlnaXRyYW5zaXQtY29tcG9uZW50L2RpZ2l0cmFuc2l0LWNvbXBvbmVudC1hdXRvc3VnZ2VzdCc7XG5pbXBvcnQgSWNvbiBmcm9tICdAZGlnaXRyYW5zaXQtY29tcG9uZW50L2RpZ2l0cmFuc2l0LWNvbXBvbmVudC1pY29uJztcbmltcG9ydCBpc0VtcHR5IGZyb20gJ2xvZGFzaC9pc0VtcHR5JztcbmltcG9ydCBTZWxlY3QgZnJvbSAnLi9oZWxwZXJzL1NlbGVjdCc7XG5pbXBvcnQgdHJhbnNsYXRpb25zIGZyb20gJy4vaGVscGVycy90cmFuc2xhdGlvbnMnO1xuaW1wb3J0IHN0eWxlcyBmcm9tICcuL2hlbHBlcnMvc3R5bGVzLnNjc3MnO1xuXG5pMThuZXh0LmluaXQoe1xuICBsbmc6ICdmaScsXG4gIGZhbGxiYWNrTG5nOiAnZmknLFxuICBkZWZhdWx0TlM6ICd0cmFuc2xhdGlvbicsXG4gIGludGVycG9sYXRpb246IHtcbiAgICBlc2NhcGVWYWx1ZTogZmFsc2UsIC8vIG5vdCBuZWVkZWQgZm9yIHJlYWN0IGFzIGl0IGVzY2FwZXMgYnkgZGVmYXVsdFxuICB9LFxufSk7XG5cbmV4cG9ydCBjb25zdCBnZXRFbXB0eVZpYVBvaW50UGxhY2VIb2xkZXIgPSAoKSA9PiAoe30pO1xuXG5jb25zdCBpc1ZpYVBvaW50RW1wdHkgPSB2aWFQb2ludCA9PiB7XG4gIGlmICh2aWFQb2ludCA9PT0gdW5kZWZpbmVkIHx8IGlzRW1wdHkodmlhUG9pbnQpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKHZpYVBvaW50KTtcbiAgcmV0dXJuIChcbiAgICBrZXlzLmxlbmd0aCA9PT0gMSB8fCAoa2V5cy5sZW5ndGggPT09IDIgJiYga2V5cy5pbmNsdWRlcygnbG9jYXRpb25TbGFjaycpKVxuICApO1xufTtcblxuY29uc3QgSXRpbmVyYXJ5U2VhcmNoQ29udHJvbCA9ICh7XG4gIGNoaWxkcmVuLFxuICBjbGFzc05hbWUsXG4gIGVuYWJsZWQsXG4gIG9uQ2xpY2ssXG4gIG9uS2V5UHJlc3MsXG4gIHdpZGUsXG4gIC4uLnJlc3Rcbn0pID0+IChcbiAgPGRpdlxuICAgIGNsYXNzTmFtZT17c3R5bGVzWydpdGluZXJhcnktc2VhcmNoLWNvbnRyb2wnXX1cbiAgICBzdHlsZT17eyAnLS13aWR0aCc6IHdpZGUgPyAnNDdweCcgOiAnNDBweCcgfX1cbiAgPlxuICAgIHtvbkNsaWNrICYmIGVuYWJsZWQgJiYgKFxuICAgICAgPGRpdlxuICAgICAgICB7Li4ucmVzdH1cbiAgICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWV9XG4gICAgICAgIG9uQ2xpY2s9e29uQ2xpY2t9XG4gICAgICAgIG9uS2V5UHJlc3M9e29uS2V5UHJlc3N9XG4gICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICB0YWJJbmRleD1cIjBcIlxuICAgICAgPlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L2Rpdj5cbiAgICApfVxuICA8L2Rpdj5cbik7XG5cbmNvbnN0IGdldFNsYWNrRGlzcGxheSA9IHNsYWNrSW5TZWNvbmRzID0+IHtcbiAgcmV0dXJuIGAke3NsYWNrSW5TZWNvbmRzIC8gNjB9ICR7aTE4bmV4dC50KCdtaW51dGUtc2hvcnQnKX1gO1xufTtcblxuY29uc3QgdXBkYXRlVmlhUG9pbnRTbGFjayA9IChcbiAgYWN0aXZlVmlhUG9pbnRTbGFja3MsXG4gIHVwZGF0ZWRWaWFQb2ludEluZGV4LFxuICB2aWFQb2ludFJlbW92ZWQgPSBmYWxzZSxcbikgPT4ge1xuICBjb25zdCBmb3VuZEF0SW5kZXggPSBhY3RpdmVWaWFQb2ludFNsYWNrcy5pbmRleE9mKHVwZGF0ZWRWaWFQb2ludEluZGV4KTtcbiAgaWYgKGZvdW5kQXRJbmRleCA+IC0xKSB7XG4gICAgYWN0aXZlVmlhUG9pbnRTbGFja3Muc3BsaWNlKGZvdW5kQXRJbmRleCwgMSk7XG4gIH1cbiAgcmV0dXJuIHZpYVBvaW50UmVtb3ZlZFxuICAgID8gYWN0aXZlVmlhUG9pbnRTbGFja3MubWFwKHZhbHVlID0+XG4gICAgICAgIHZhbHVlID4gdXBkYXRlZFZpYVBvaW50SW5kZXggPyB2YWx1ZSAtIDEgOiB2YWx1ZSxcbiAgICAgIClcbiAgICA6IGFjdGl2ZVZpYVBvaW50U2xhY2tzO1xufTtcblxuY29uc3QgaXNLZXlib2FyZFNlbGVjdGlvbkV2ZW50ID0gZXZlbnQgPT4ge1xuICBjb25zdCBzcGFjZSA9IFsxMywgJyAnLCAnU3BhY2ViYXInXTtcbiAgY29uc3QgZW50ZXIgPSBbMzIsICdFbnRlciddO1xuICBjb25zdCBrZXkgPSAoZXZlbnQgJiYgKGV2ZW50LmtleSB8fCBldmVudC53aGljaCB8fCBldmVudC5rZXlDb2RlKSkgfHwgJyc7XG4gIGlmICgha2V5IHx8ICFzcGFjZS5jb25jYXQoZW50ZXIpLmluY2x1ZGVzKGtleSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgcmV0dXJuIHRydWU7XG59O1xuXG5jb25zdCB2YWx1ZSA9IGxvY2F0aW9uID0+XG4gIChsb2NhdGlvbiAmJiBsb2NhdGlvbi5hZGRyZXNzKSB8fFxuICAobG9jYXRpb24gJiYgbG9jYXRpb24uZ3BzICYmIGxvY2F0aW9uLnJlYWR5ICYmICdOeWt5aW5lbiBzaWphaW50aScpIHx8XG4gICcnO1xuXG5jb25zdCBnZXRMb2NhdGlvblR5cGUgPSBsb2NhdGlvbiA9PlxuICBsb2NhdGlvbiAmJiBsb2NhdGlvbi5ncHMgPT09IHRydWUgPyAncG9zaXRpb24nIDogJ2xvY2F0aW9uJztcblxuY29uc3QgZ2V0U2xhY2tUaW1lT3B0aW9ucyA9ICgpID0+IHtcbiAgY29uc3QgdGltZU9wdGlvbnMgPSBbXTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPD0gOTsgaSsrKSB7XG4gICAgY29uc3QgdmFsdWVJbk1pbnV0ZXMgPSBpICogMTA7XG4gICAgdGltZU9wdGlvbnMucHVzaCh7XG4gICAgICBkaXNwbGF5TmFtZTogYCR7dmFsdWVJbk1pbnV0ZXN9ICR7aTE4bmV4dC50KCdtaW51dGUtc2hvcnQnKX1gLFxuICAgICAgdmFsdWU6IHZhbHVlSW5NaW51dGVzICogNjAsXG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIHRpbWVPcHRpb25zO1xufTtcblxuSXRpbmVyYXJ5U2VhcmNoQ29udHJvbC5wcm9wVHlwZXMgPSB7XG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIGVuYWJsZWQ6IFByb3BUeXBlcy5ib29sLmlzUmVxdWlyZWQsXG4gIG9uQ2xpY2s6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIG9uS2V5UHJlc3M6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIHdpZGU6IFByb3BUeXBlcy5ib29sLFxufTtcblxuSXRpbmVyYXJ5U2VhcmNoQ29udHJvbC5kZWZhdWx0UHJvcHMgPSB7XG4gIGNoaWxkcmVuOiB1bmRlZmluZWQsXG4gIHdpZGU6IGZhbHNlLFxufTtcblxuLyoqXG4gKiBQYW5lbCB0aGF0IHJlbmRlcnMgdHdvIERUQXV0b3N1Z2dlc3Qgc2VhcmNoIGZpZWxkcywgaW5jbHVkaW5nIHZpYXBvaW50IGhhbmRsaW5nXG4gKlxuICogQGV4YW1wbGVcbiAqIGNvbnN0IHNlYXJjaENvbnRleHQgPSB7XG4gKiAgIGlzUGVsaWFzTG9jYXRpb25Bd2FyZTogZmFsc2UgLy8gdHJ1ZSAvIGZhbHNlIGRvZXMgTGV0IFBlbGlhcyBzdWdnZXN0IGJhc2VkIG9uIGN1cnJlbnQgdXNlciBsb2NhdGlvblxuICogICBtaW5pbWFsUmVnZXhwOiB1bmRlZmluZWQgLy8gdXNlZCBmb3IgdGVzdGluZyBtaW4uIHJlZ2V4cC4gRm9yIGV4YW1wbGU6IG5ldyBSZWdFeHAoJy57Mix9JyksXG4gKiAgIGxpbmVSZWdleHA6IHVuZGVmaW5lZCAvLyAgaWRlbnRpZnkgc2VhcmNoZXMgZm9yIHJvdXRlIG51bWJlcnMvbGFiZWxzOiBidXMgfCB0cmFpbiB8IG1ldHJvLiBGb3IgZXhhbXBsZTogbmV3IFJlZ0V4cChcbiAqICAgIC8vICAgJyheWzAtOV0rW2Etel0/JHxeW3l1bGVhcGlua3J0ZHpdJHwoXm1bMTJdP2I/JCkpJyxcbiAqICAgIC8vICAnaScsXG4gKiAgICAvLyAgKSxcbiAqICAgVVJMX1BFTElBUzogJycgLy8gdXJsIGZvciBwZWxpYXMgc2VhcmNoZXNcbiAqICAgZmVlZElEczogWydIU0wnLCAnSFNMTGF1dHRhJ10gLy8gRmVlZElkJ3MgbGlrZSAgW0hTTCwgSFNMTGF1dHRhXVxuICogICBnZW9jb2RpbmdTb3VyY2VzOiBbJ29hJywnb3NtJywnbmxzZmknXSAgLy8gc291cmNlcyBmb3IgZ2VvY29kaW5nXG4gKiAgIGdlb2NvZGluZ1NlYXJjaFBhcmFtczsge30gIC8vIFNlYXJjaHBhcm1hcyBmcm8gZ2VvY29kaW5nXG4gKiAgIGdldEZhdm91cml0ZUxvY2F0aW9uczogKCkgPT4gKHt9KSwgICAgLy8gRnVuY3Rpb24gdGhhdCByZXR1cm5zIGFycmF5IG9mIGZhdm91cml0ZSBsb2NhdGlvbnMuXG4gKiAgIGdldEZhdm91cml0ZVN0b3BzOiAoKSA9PiAoe30pLCAgICAgICAgLy8gRnVuY3Rpb24gdGhhdCByZXR1cm5zIGFycmF5IG9mIGZhdm91cml0ZSBzdG9wcy5cbiAqICAgZ2V0TGFuZ3VhZ2U6ICgpID0+ICh7fSksICAgICAgICAgICAgICAvLyBGdW5jdGlvbiB0aGF0IHJldHVybnMgY3VycmVudCBsYW5ndWFnZS5cbiAqICAgZ2V0RmF2b3VyaXRlUm91dGVzOiAoKSA9PiAoe30pLCAgICAgICAvLyBGdW5jdGlvbiB0aGF0IHJldHVybnMgYXJyYXkgb2YgZmF2b3VyaXRlIHJvdXRlcy5cbiAqICAgZ2V0UG9zaXRpb25zOiAoKSA9PiAoe30pLCAgICAgICAgICAgICAvLyBGdW5jdGlvbiB0aGF0IHJldHVybnMgdXNlcidzIGdlb2xvY2F0aW9uLlxuICogICBnZXRSb3V0ZXNRdWVyeTogKCkgPT4gKHt9KSwgICAgICAgICAgIC8vIEZ1bmN0aW9uIHRoYXQgcmV0dXJucyBxdWVyeSBmb3IgZmV0Y2hpbmcgcm91dGVzLlxuICogICBnZXRTdG9wQW5kU3RhdGlvbnNRdWVyeTogKCkgPT4gKHt9KSwgIC8vIEZ1bmN0aW9uIHRoYXQgZmV0Y2hlcyBmYXZvdXJpdGUgc3RvcHMgYW5kIHN0YXRpb25zIGZyb20gZ3JhcGhxbCBBUEkuXG4gKiAgIGdldEZhdm91cml0ZVJvdXRlc1F1ZXJ5OiAoKSA9PiAoe30pLCAgLy8gRnVuY3Rpb24gdGhhdCByZXR1cm5zIHF1ZXJ5IGZvciBmZXRjaGluZyBmYXZvdXJpdGUgcm91dGVzLlxuICogICBnZXRGYXZvdXJpdGVWZWhpY2xlUmVudGFsU3RhdGlvbnM6ICgpID0+ICh7fSksICAvLyBGdW5jdGlvbiB0aGF0IHJldHVybnMgZmF2b3VyaXRlIGJpa2UgcmVudGFsIHN0YXRpb24uXG4gKiAgIGdldEZhdm91cml0ZVZlaGljbGVSZW50YWxTdGF0aW9uc1F1ZXJ5OiAoKSA9PiAoe30pLCAvLyBGdW5jdGlvbiB0aGF0IHJldHVybnMgcXVlcnkgZm9yIGZldGNoaW5nIGZhdm91cml0ZSBiaWtlIHJlbnRhbCBzdGF0aW9ucy5cbiAqICAgc3RhcnRMb2NhdGlvbldhdGNoOiAoKSA9PiAoe30pLCAgICAgICAvLyBGdW5jdGlvbiB0aGF0IGxvY2F0ZXMgdXNlcnMgZ2VvbG9jYXRpb24uXG4gKiAgIHNhdmVTZWFyY2g6ICgpID0+ICh7fSksICAgICAgICAgICAgICAgLy8gRnVuY3Rpb24gdGhhdCBzYXZlcyBzZWFyY2ggdG8gb2xkIHNlYXJjaGVzIHN0b3JlLlxuICogICBjbGVhck9sZFNlYXJjaGVzOiAoKSA9PiAoe30pLCAgICAgICAgIC8vIEZ1bmN0aW9uIHRoYXQgY2xlYXJzIG9sZCBzZWFyY2hlcyBzdG9yZS5cbiAqICAgZ2V0RnV0dXJlUm91dGVzOiAoKSA9PiAoe30pLCAgICAgICAgICAvLyBGdW5jdGlvbiB0aGF0IHJldHVybiBmdXR1cmUgcm91dGVzXG4gKiAgIHNhdmVGdXR1cmVSb3V0ZTogKCkgPT4gKHt9KSwgICAgICAgICAgLy8gRnVuY3Rpb24gdGhhdCBzYXZlcyBhIGZ1dHVyZSByb3V0ZVxuICogICBjbGVhckZ1dHVyZVJvdXRlczogKCkgPT4gKHt9KSwgICAgICAgIC8vIEZ1bmN0aW9uIHRoYXQgY2xlYXJzIGZ1dHVyZSByb3V0ZXNcbiAqIH07XG4gKlxuICogY29uc3Qgb3JpZ2luID0ge1xuICogIGxhdDogNjAuMTY5MTk2LFxuICogIGxvbjogMjQuOTU3Njc0LFxuICogIGFkZHJlc3M6ICdBbGVrc2FudGVyaW5rYXR1LCBIZWxzaW5raScsXG4gKiAgc2V0OiB0cnVlLFxuICogIHJlYWR5OiB0cnVlLFxuICogfVxuICpcbiAqIGNvbnN0IGRlc3RpbmF0aW9uID0ge1xuICogICBsYXQ6IDYwLjE5OTA5MyxcbiAqICAgbG9uOiAyNC45NDA1MzYsXG4gKiAgIGFkZHJlc3M6ICdPcGFzdGluc2lsdGEgNiwgSGVsc2lua2knLFxuICogICBzZXQ6IHRydWUsXG4gKiAgIHJlYWR5OiB0cnVlLFxuICogfVxuICogb25TZWxlY3QoaXRlbSwgaWQpIHtcbiAqICByZXR1cm4gbnVsbDsgIC8vIERlZmluZSB3aGF0IHRvIGRvIHdoZW4gYSBzdWdnZXN0aW9uIGlzIGJlaW5nIHNlbGVjdGVkLiBOb25lIGJ5IGRlZmF1bHQuXG4gKiAgfVxuICogb25DbGVhcihpZCkge1xuICogIHJldHVybiBudWxsOyAgLy8gRGVmaW5lIHdoYXQgdG8gZG8gd2hlbiBhIHN1Z2dlc3Rpb24gaXMgYmVpbmcgc2VsZWN0ZWQuIE5vbmUgYnkgZGVmYXVsdC5cbiAqIH1cbiAqIGNvbnN0IGdldEF1dG9TdWdnZXN0SWNvbnM6IHtcbiAqICAgLy8gQ2FsbGVkIGZvciBldmVyeSBjaXR5IGJpa2Ugc3RhdGlvbiByZW5kZXJlZCBhcyBhIHNlYXJjaCBzdWdnZXN0aW9uLiBTaG91bGQgcmV0dXJuIHRoZSBpY29uIGFuZFxuICogICAvLyBjb2xvciB1c2VkIGZvciB0aGF0IHN0YXRpb24uIFR3byBpY29ucyBhcmUgYXZhaWxhYmxlLCAnY2l0eWJpa2Utc3RvcC1kaWdpdHJhbnNpdCcgYW5kaXR5YmlrZS1zdG9wLWRpZ2l0cmFuc2l0LXNlY29uZGFyeScuXG4gKiAgIGNpdHliaWtlczogc3RhdGlvbiA9PiB7XG4gKiAgICAgIHJldHVybiBbJ2NpdHliaWtlLXN0b3AtZGlnaXRyYW5zaXQnLCAnI2YyYjYyZCddO1xuICogICB9XG4gKiB9XG4gKiBjb25zdCB0YXJnZXRzID0gWydMb2NhdGlvbnMnLCAnU3RvcHMnLCAnUm91dGVzJ107IC8vIERlZmluZXMgd2hhdCB5b3UgYXJlIHNlYXJjaGluZy4gYWxsIGF2YWlsYWJsZSBvcHRpb25zIGFyZSBMb2NhdGlvbnMsIFN0b3BzLCBSb3V0ZXMsIFZlaGljbGVSZW50YWxTdGF0aW9ucywgRnV0dXJlUm91dGVzLCBNYXBQb3NpdGlvbiBhbmQgQ3VycmVudFBvc2l0aW9uLiBMZWF2ZSBlbXB0eSB0byBzZWFyY2ggYWxsIHRhcmdldHMuXG4gKiBjb25zdCBzb3VyY2VzID0gWydGYXZvdXJpdGUnLCAnSGlzdG9yeScsICdEYXRhc291cmNlJ10gLy8gRGVmaW5lcyB3aGVyZSB5b3UgYXJlIHNlYXJjaGluZy4gYWxsIGF2YWlsYWJsZSBhcmU6IEZhdm91cml0ZSwgSGlzdG9yeSAocHJldmlvdXNseSBzZWFyY2hlZCBzZWFyY2hlcyksIGFuZCBEYXRhc291cmNlLiBMZWF2ZSBlbXB0eSB0byB1c2UgYWxsIHNvdXJjZXMuXG4gKiA8RFRBdXRvc3VnZ2VzdFBhbmVsXG4gKiAgICBhcHBFbGVtZW50PXthcHBFbGVtZW50fSAvLyBSZXF1aXJlZC4gUm9vdCBlbGVtZW50J3MgaWQuIE5lZWRlZCBmb3IgcmVhY3QtbW9kYWwgY29tcG9uZW50LlxuICogICAgb3JpZ2luPXtvcmlnaW59IC8vIFNlbGVjdGVkIG9yaWdpbiBwb2ludFxuICogICAgZGVzdGluYXRpb249e2Rlc3RpbmF0aW9ufSAvLyBTZWxlY3RlZCBkZXN0aW5hdGlvbiBwb2ludFxuICogICAgb3JpZ2luUGxhY2VIb2xkZXI9eydHaXZlIG9yaWdpbid9IC8vIE9wdGlvbmFsIEdpdmUgc3RyaW5nIHNob3duIGluaXRpYWxseSBpbnNpZGUgb3JpZ2luIHNlYXJjaCBmaWVsZFxuICogICAgZGVzdGluYXRpb25QbGFjZUhvbGRlcj17J0dpdmUgZGVzdGluYXRpb24nfSAvLyBPcHRpb25hbCBHaXZlIHN0cmluZyBzaG93biBpbml0YWxseSBpbnNpZGUgZGVzdGluYXRpb24gc2VhcmNoIGZpZWxkXG4gKiAgICBpbml0aWFsVmlhUG9pbnRzPXtbXX0gLy8gT3B0aW9uYWwuICBJZiBzaG93VmlhcG9pbnRDb250cm9sIGlzIHNldCB0byB0cnVlLCBwYXNzIGluaXRpYWwgdmlhIHBvaW50cyB0byB0aGUgcGFuZWwuIEN1cnJlbnRseSBubyBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGlzIGdpdmVuLlxuICogICAgdXBkYXRlVmlhUG9pbnRzPXsoKSA9PiByZXR1cm4gW119IC8vIE9wdGlvbmFsLiBJZiBzaG93VmlhcG9pbnRDb250cm9sIGlzIHNldCB0byB0cnVlLCBkZWZpbmUgaG93IHRvIHVwZGF0ZSB5b3VyIHZpYSBwb2ludCBsaXN0IHdpdGggdGhpcyBmdW5jdGlvbi4gQ3VycmVubHR5IG5vIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gaXMgZ2l2ZW4uXG4gKiAgICBzd2FwT3JkZXI9eygpID0+IHJldHVybiBudWxsfSAvLyBPcHRpb25hbC4gSWYgc2hvd1N3YXBDb250cm9sIGlzIHNldCB0byB0cnVlLCBkZWZpbmUgaG93IHRvIHN3YXAgb3JkZXIgb2YgeW91ciBwb2ludHMgKG9yaWdpbiwgZGVzdGluYXRpb24sIHZpYXBvaW50cykuIEN1cnJlbnRseSBubyBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGlzIGdpdmVuLlxuICogICAgc2VhcmNoQ29udGV4dD17c2VhcmNoQ29udGV4dH1cbiAqICAgIGdldEF1dG9TdWdnZXN0SWNvbnM9e2dldEF1dG9TdWdnZXN0SWNvbnN9XG4gKiAgICBvblNlbGVjdD17dGhpcy5vblNlbGVjdH1cbiAqICAgIG9uQ2xlYXI9e3RoaXMub25DbGVhcn1cbiAqICAgIGxhbmc9XCJmaVwiIC8vIERlZmluZSBsYW5ndWFnZSBmaSBzdiBvciBlbi5cbiAqICAgIGFkZEFuYWx5dGljc0V2ZW50PXtudWxsfSAvLyBPcHRpb25hbC4geW91IGNhbiByZWNvcmQgYW4gYW5hbHl0aWNzIGV2ZW50IGlmIHlvdSB3aXNoLiBpZiBwYXNzZWQsIGNvbXBvbmVudCB3aWxsIHBhc3MgYW4gY2F0ZWdvcnksIGFjdGlvbiwgbmFtZSBwYXJhbWV0ZXJzIHRvIGFkZEFuYWx5dGljc0V2ZW50XG4gKiAgICBkaXNhYmxlQXV0b0ZvY3VzPXtmYWxzZX0gLy8gT3B0aW9uYWwuIHVzZSB0aGlzIHRvIGRpc2FibGUgYXV0b2ZvY3VzIGNvbXBsZXRlbHkgZnJvbSBEVEF1dG9zdWdnZXN0UGFuZWxcbiAqICAgIHNvdXJjZXM9e3NvdXJjZXN9XG4gKiAgICB0YXJnZXRzPXt0YXJnZXRzfVxuICogICAgaXNNb2JpbGUgIC8vIE9wdGlvbmFsLiBEZWZhdWx0cyB0byBmYWxzZS4gV2hldGhlciB0byB1c2UgbW9iaWxlIHNlYXJjaC5cbiAqICAgIG9yaWdpbk1vYmlsZUxhYmVsPVwiT3JpZ2luIGxhYmVsXCIgLy8gT3B0aW9uYWwuIEN1c3RvbSBsYWJlbCB0ZXh0IGZvciBvcmlnaW4gZmllbGQgb24gbW9iaWxlLlxuICogICAgZGVzdGluYXRpb25Nb2JpbGVMYWJlbD1cIkRlc3RpbmF0aW9uIGxhYmVsXCIgLy8gT3B0aW9uYWwuIEN1c3RvbSBsYWJlbCB0ZXh0IGZvciBkZXN0aW5hdGlvbiBmaWVsZCBvbiBtb2JpbGUuXG4gKiAgICBoYW5kbGVGb2N1c0NoYW5nZT17KCkgPT4ge319IC8vIE9wdGlvbmFsLiBJZiBkZWZpbmVkIG92ZXJyaWRlcyBkZWZhdWx0IG9uRm9jdXNDaGFuZ2UgYmVoYXZpb3VyXG4gKiAgICBzaG93U3dhcENvbnRyb2w9e2ZhbHNlfSAvLyBPcHRpb25hbC5cbiAqICAgIHNob3dWaWFwb2ludENvbnRyb2w9e2ZhbHNlfSAvLyBPcHRpb25hbC5cbiAqL1xuXG5jb25zdCBsb2NhdGlvblNoYXBlID0gUHJvcFR5cGVzLnNoYXBlKHtcbiAgYWRkcmVzczogUHJvcFR5cGVzLnN0cmluZyxcbiAgbGF0OiBQcm9wVHlwZXMubnVtYmVyLFxuICBsb246IFByb3BUeXBlcy5udW1iZXIsXG4gIGxvY2F0aW9uU2xhY2s6IFByb3BUeXBlcy5udW1iZXIsXG59KTtcblxuY2xhc3MgRFRBdXRvc3VnZ2VzdFBhbmVsIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcbiAgc3RhdGljIHByb3BUeXBlcyA9IHtcbiAgICBhcHBFbGVtZW50OiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gICAgb3JpZ2luOiBsb2NhdGlvblNoYXBlLFxuICAgIGRlc3RpbmF0aW9uOiBsb2NhdGlvblNoYXBlLFxuICAgIG9yaWdpblBsYWNlSG9sZGVyOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIGRlc3RpbmF0aW9uUGxhY2VIb2xkZXI6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgdmlhUG9pbnRzOiBQcm9wVHlwZXMuYXJyYXlPZihsb2NhdGlvblNoYXBlKSxcbiAgICB1cGRhdGVWaWFQb2ludHM6IFByb3BUeXBlcy5mdW5jLFxuICAgIGhhbmRsZVZpYVBvaW50TG9jYXRpb25TZWxlY3RlZDogUHJvcFR5cGVzLmZ1bmMsXG4gICAgc3dhcE9yZGVyOiBQcm9wVHlwZXMuZnVuYyxcbiAgICBzZWFyY2hQYW5lbFRleHQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgc2VhcmNoQ29udGV4dDogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAgIFVSTF9QRUxJQVM6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgfSkuaXNSZXF1aXJlZCxcbiAgICBvblNlbGVjdDogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgICBvbkNsZWFyOiBQcm9wVHlwZXMuZnVuYyxcbiAgICBhZGRBbmFseXRpY3NFdmVudDogUHJvcFR5cGVzLmZ1bmMsXG4gICAgbGFuZzogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBkaXNhYmxlQXV0b0ZvY3VzOiBQcm9wVHlwZXMuYm9vbCxcbiAgICBzb3VyY2VzOiBQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMuc3RyaW5nKSxcbiAgICB0YXJnZXRzOiBQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMuc3RyaW5nKSxcbiAgICBmaWx0ZXJSZXN1bHRzOiBQcm9wVHlwZXMuZnVuYyxcbiAgICBpc01vYmlsZTogUHJvcFR5cGVzLmJvb2wsXG4gICAgY29sb3I6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgaG92ZXJDb2xvcjogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBvcmlnaW5Nb2JpbGVMYWJlbDogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBkZXN0aW5hdGlvbk1vYmlsZUxhYmVsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIHJlZlBvaW50OiBsb2NhdGlvblNoYXBlLFxuICAgIG1vZGVTZXQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgbW9kZUljb25Db2xvcnM6IFByb3BUeXBlcy5vYmplY3RPZihQcm9wVHlwZXMuc3RyaW5nKSxcbiAgICBnZXRBdXRvU3VnZ2VzdEljb25zOiBQcm9wVHlwZXMub2JqZWN0T2YoUHJvcFR5cGVzLmZ1bmMpLFxuICAgIGZvbnRXZWlnaHRzOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgICAgbWVkaXVtOiBQcm9wVHlwZXMubnVtYmVyLFxuICAgIH0pLFxuICAgIHNob3dTY3JvbGw6IFByb3BUeXBlcy5ib29sLFxuICAgIG9uRm9jdXNDaGFuZ2U6IFByb3BUeXBlcy5mdW5jLFxuICAgIGlzRW1iZWRkZWQ6IFByb3BUeXBlcy5ib29sLFxuICAgIHNob3dTd2FwQ29udHJvbDogUHJvcFR5cGVzLmJvb2wsXG4gICAgc2hvd1ZpYXBvaW50Q29udHJvbDogUHJvcFR5cGVzLmJvb2wsXG4gICAgc2hvd1NsYWNrQ29udHJvbDogUHJvcFR5cGVzLmJvb2wsXG4gIH07XG5cbiAgc3RhdGljIGRlZmF1bHRQcm9wcyA9IHtcbiAgICBvcmlnaW46IHVuZGVmaW5lZCxcbiAgICBkZXN0aW5hdGlvbjogdW5kZWZpbmVkLFxuICAgIHZpYVBvaW50czogW10sXG4gICAgb3JpZ2luUGxhY2VIb2xkZXI6ICdnaXZlLW9yaWdpbicsXG4gICAgZGVzdGluYXRpb25QbGFjZUhvbGRlcjogJ2dpdmUtZGVzdGluYXRpb24nLFxuICAgIHN3YXBPcmRlcjogdW5kZWZpbmVkLFxuICAgIHVwZGF0ZVZpYVBvaW50czogKCkgPT4ge30sXG4gICAgbGFuZzogJ2ZpJyxcbiAgICBzZWFyY2hQYW5lbFRleHQ6IHVuZGVmaW5lZCxcbiAgICBzb3VyY2VzOiBbXSxcbiAgICB0YXJnZXRzOiBbXSxcbiAgICBmaWx0ZXJSZXN1bHRzOiB1bmRlZmluZWQsXG4gICAgb25DbGVhcjogdW5kZWZpbmVkLFxuICAgIGdldEF1dG9TdWdnZXN0SWNvbnM6IHVuZGVmaW5lZCxcbiAgICByZWZQb2ludDogdW5kZWZpbmVkLFxuICAgIGFkZEFuYWx5dGljc0V2ZW50OiB1bmRlZmluZWQsXG4gICAgZGlzYWJsZUF1dG9Gb2N1czogZmFsc2UsXG4gICAgaXNNb2JpbGU6IGZhbHNlLFxuICAgIGhhbmRsZVZpYVBvaW50TG9jYXRpb25TZWxlY3RlZDogdW5kZWZpbmVkLFxuICAgIGNvbG9yOiAnIzAwN2FjOScsXG4gICAgaG92ZXJDb2xvcjogJyMwMDYyYTEnLFxuICAgIG9yaWdpbk1vYmlsZUxhYmVsOiBudWxsLFxuICAgIGRlc3RpbmF0aW9uTW9iaWxlTGFiZWw6IG51bGwsXG4gICAgbW9kZVNldDogdW5kZWZpbmVkLFxuICAgIG1vZGVJY29uQ29sb3JzOiB1bmRlZmluZWQsXG4gICAgZm9udFdlaWdodHM6IHtcbiAgICAgIG1lZGl1bTogNTAwLFxuICAgIH0sXG4gICAgc2hvd1Njcm9sbDogZmFsc2UsXG4gICAgb25Gb2N1c0NoYW5nZTogdW5kZWZpbmVkLFxuICAgIGlzRW1iZWRkZWQ6IGZhbHNlLFxuICAgIHNob3dTd2FwQ29udHJvbDogZmFsc2UsXG4gICAgc2hvd1ZpYXBvaW50Q29udHJvbDogZmFsc2UsXG4gICAgc2hvd1NsYWNrQ29udHJvbDogZmFsc2UsXG4gIH07XG5cbiAgY29uc3RydWN0b3IocHJvcHMpIHtcbiAgICBzdXBlcihwcm9wcyk7XG4gICAgdGhpcy5zdGF0ZSA9IHtcbiAgICAgIGFjdGl2ZVNsYWNrSW5wdXRzOiBbXSxcbiAgICAgIHJlZnM6IFtdLFxuICAgIH07XG4gICAgT2JqZWN0LmtleXModHJhbnNsYXRpb25zKS5mb3JFYWNoKGxhbmcgPT4ge1xuICAgICAgaTE4bmV4dC5hZGRSZXNvdXJjZUJ1bmRsZShsYW5nLCAndHJhbnNsYXRpb24nLCB0cmFuc2xhdGlvbnNbbGFuZ10pO1xuICAgIH0pO1xuICB9XG5cbiAgY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgaTE4bmV4dC5jaGFuZ2VMYW5ndWFnZSh0aGlzLnByb3BzLmxhbmcpO1xuICB9XG5cbiAgY29tcG9uZW50RGlkVXBkYXRlKCkge1xuICAgIGlmIChpMThuZXh0Lmxhbmd1YWdlICE9PSB0aGlzLnByb3BzLmxhbmcpIHtcbiAgICAgIGkxOG5leHQuY2hhbmdlTGFuZ3VhZ2UodGhpcy5wcm9wcy5sYW5nKTtcbiAgICB9XG4gIH1cblxuICBzdG9yZVJlZmVyZW5jZSA9IHJlZiA9PiB7XG4gICAgdGhpcy5zZXRTdGF0ZShwcmV2U3RhdGUgPT4gKHsgcmVmczogWy4uLnByZXZTdGF0ZS5yZWZzLCByZWZdIH0pKTtcbiAgfTtcblxuICBoYW5kbGVGb2N1c0NoYW5nZSA9ICgpID0+IHtcbiAgICBjb25zdCB7IGRlc3RpbmF0aW9uIH0gPSB0aGlzLnByb3BzO1xuICAgIGlmICghZGVzdGluYXRpb24gfHwgIWRlc3RpbmF0aW9uLmxhdCkge1xuICAgICAgdGhpcy5zdGF0ZS5yZWZzWzFdLmZvY3VzKCk7XG4gICAgfVxuICB9O1xuXG4gIHVwZGF0ZVZpYVBvaW50cyA9IHZpYVBvaW50cyA9PiB7XG4gICAgaWYgKHZpYVBvaW50cy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMucHJvcHMudXBkYXRlVmlhUG9pbnRzKFtdKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5wcm9wcy51cGRhdGVWaWFQb2ludHModmlhUG9pbnRzLmZpbHRlcih2cCA9PiAhaXNWaWFQb2ludEVtcHR5KHZwKSkpO1xuICB9O1xuXG4gIGhhbmRsZVRvZ2dsZVZpYVBvaW50U2xhY2tDbGljayA9IHZpYVBvaW50SW5kZXggPT4ge1xuICAgIGNvbnN0IHsgYWN0aXZlU2xhY2tJbnB1dHMgfSA9IHRoaXMuc3RhdGU7XG4gICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICBhY3RpdmVTbGFja0lucHV0czogYWN0aXZlU2xhY2tJbnB1dHMuaW5jbHVkZXModmlhUG9pbnRJbmRleClcbiAgICAgICAgPyB1cGRhdGVWaWFQb2ludFNsYWNrKGFjdGl2ZVNsYWNrSW5wdXRzLCB2aWFQb2ludEluZGV4KVxuICAgICAgICA6IGFjdGl2ZVNsYWNrSW5wdXRzLmNvbmNhdChbdmlhUG9pbnRJbmRleF0pLFxuICAgIH0pO1xuICB9O1xuXG4gIGhhbmRsZVZpYVBvaW50U2xhY2tUaW1lU2VsZWN0ZWQgPSAoc2xhY2tUaW1lSW5TZWNvbmRzLCBpKSA9PiB7XG4gICAgaWYgKHRoaXMucHJvcHMuYWRkQW5hbHl0aWNzRXZlbnQpIHtcbiAgICAgIHRoaXMucHJvcHMuYWRkQW5hbHl0aWNzRXZlbnQoe1xuICAgICAgICBhY3Rpb246ICdFZGl0VmlhUG9pbnRTdG9wRHVyYXRpb24nLFxuICAgICAgICBjYXRlZ29yeTogJ0l0aW5lcmFyeVNldHRpbmdzJyxcbiAgICAgICAgbmFtZTogc2xhY2tUaW1lSW5TZWNvbmRzIC8gNjAsXG4gICAgICB9KTtcbiAgICB9XG4gICAgY29uc3QgeyB2aWFQb2ludHMgfSA9IHRoaXMucHJvcHM7XG4gICAgdmlhUG9pbnRzW2ldLmxvY2F0aW9uU2xhY2sgPSBOdW1iZXIucGFyc2VJbnQoc2xhY2tUaW1lSW5TZWNvbmRzLCAxMCk7XG4gICAgdGhpcy51cGRhdGVWaWFQb2ludHModmlhUG9pbnRzKTtcbiAgfTtcblxuICBoYW5kbGVWaWFQb2ludExvY2F0aW9uU2VsZWN0ZWQgPSAodmlhUG9pbnRMb2NhdGlvbiwgaSkgPT4ge1xuICAgIHRoaXMucHJvcHMuaGFuZGxlVmlhUG9pbnRMb2NhdGlvblNlbGVjdGVkKHZpYVBvaW50TG9jYXRpb24sIGkpO1xuICB9O1xuXG4gIGhhbmRsZVJlbW92ZVZpYVBvaW50Q2xpY2sgPSB2aWFQb2ludEluZGV4ID0+IHtcbiAgICBpZiAodGhpcy5wcm9wcy5hZGRBbmFseXRpY3NFdmVudCkge1xuICAgICAgdGhpcy5wcm9wcy5hZGRBbmFseXRpY3NFdmVudCh7XG4gICAgICAgIGFjdGlvbjogJ1JlbW92ZUpvdXJuZXlWaWFQb2ludCcsXG4gICAgICAgIGNhdGVnb3J5OiAnSXRpbmVyYXJ5U2V0dGluZ3MnLFxuICAgICAgICBuYW1lOiBudWxsLFxuICAgICAgfSk7XG4gICAgfVxuICAgIGNvbnN0IHsgYWN0aXZlU2xhY2tJbnB1dHMgfSA9IHRoaXMuc3RhdGU7XG4gICAgY29uc3QgeyB2aWFQb2ludHMgfSA9IHRoaXMucHJvcHM7XG4gICAgdmlhUG9pbnRzLnNwbGljZSh2aWFQb2ludEluZGV4LCAxKTtcbiAgICB0aGlzLnNldFN0YXRlKFxuICAgICAge1xuICAgICAgICBhY3RpdmVTbGFja0lucHV0czogdXBkYXRlVmlhUG9pbnRTbGFjayhcbiAgICAgICAgICBhY3RpdmVTbGFja0lucHV0cyxcbiAgICAgICAgICB2aWFQb2ludEluZGV4LFxuICAgICAgICAgIHRydWUsXG4gICAgICAgICksXG4gICAgICB9LFxuICAgICAgKCkgPT4gdGhpcy51cGRhdGVWaWFQb2ludHModmlhUG9pbnRzKSxcbiAgICApO1xuICB9O1xuXG4gIGhhbmRsZUFkZFZpYVBvaW50Q2xpY2sgPSAoKSA9PiB7XG4gICAgaWYgKHRoaXMucHJvcHMuYWRkQW5hbHl0aWNzRXZlbnQpIHtcbiAgICAgIHRoaXMucHJvcHMuYWRkQW5hbHl0aWNzRXZlbnQoe1xuICAgICAgICBhY3Rpb246ICdBZGRKb3VybmV5VmlhUG9pbnQnLFxuICAgICAgICBjYXRlZ29yeTogJ0l0aW5lcmFyeVNldHRpbmdzJyxcbiAgICAgICAgbmFtZTogJ1F1aWNrU2V0dGluZ3NCdXR0b24nLFxuICAgICAgfSk7XG4gICAgfVxuICAgIGNvbnN0IHsgdmlhUG9pbnRzIH0gPSB0aGlzLnByb3BzO1xuICAgIHZpYVBvaW50cy5wdXNoKGdldEVtcHR5VmlhUG9pbnRQbGFjZUhvbGRlcigpKTtcbiAgICAvLyBXZSBuZWVkIHRvIHVwZGF0ZSB0aGUgc3RhdGUgc28gdGhhdCBwbGFjZUhvbGRlciB3aWxsIHNob3cgdXAgaW4gcGFuZWwuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L25vLWFjY2Vzcy1zdGF0ZS1pbi1zZXRzdGF0ZVxuICAgIHRoaXMuc2V0U3RhdGUodGhpcy5zdGF0ZSk7XG4gIH07XG5cbiAgaGFuZGxlU3dhcE9yZGVyQ2xpY2sgPSAoKSA9PiB7XG4gICAgaWYgKHRoaXMucHJvcHMuYWRkQW5hbHl0aWNzRXZlbnQpIHtcbiAgICAgIHRoaXMucHJvcHMuYWRkQW5hbHl0aWNzRXZlbnQoe1xuICAgICAgICBhY3Rpb246ICdTd2l0Y2hKb3VybmV5U3RhcnRBbmRFbmRQb2ludE9yZGVyJyxcbiAgICAgICAgY2F0ZWdvcnk6ICdJdGluZXJhcnlTZXR0aW5ncycsXG4gICAgICAgIG5hbWU6IG51bGwsXG4gICAgICB9KTtcbiAgICB9XG4gICAgY29uc3QgeyB2aWFQb2ludHMgfSA9IHRoaXMucHJvcHM7XG4gICAgdmlhUG9pbnRzLnJldmVyc2UoKTtcbiAgICB0aGlzLnByb3BzLnN3YXBPcmRlcigpO1xuICB9O1xuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCB7XG4gICAgICBvcmlnaW4sXG4gICAgICBzZWFyY2hQYW5lbFRleHQsXG4gICAgICBzZWFyY2hDb250ZXh0LFxuICAgICAgZGlzYWJsZUF1dG9Gb2N1cyxcbiAgICAgIHZpYVBvaW50cyxcbiAgICAgIG9yaWdpbk1vYmlsZUxhYmVsLFxuICAgICAgZGVzdGluYXRpb25Nb2JpbGVMYWJlbCxcbiAgICAgIGZvbnRXZWlnaHRzLFxuICAgICAgb25Gb2N1c0NoYW5nZSxcbiAgICAgIHNob3dTd2FwQ29udHJvbCxcbiAgICAgIHNob3dWaWFwb2ludENvbnRyb2wsXG4gICAgfSA9IHRoaXMucHJvcHM7XG4gICAgY29uc3QgeyBhY3RpdmVTbGFja0lucHV0cyB9ID0gdGhpcy5zdGF0ZTtcbiAgICBjb25zdCBzbGFja1RpbWUgPSBnZXRTbGFja1RpbWVPcHRpb25zKCk7XG4gICAgY29uc3QgZGVmYXVsdFNsYWNrVGltZVZhbHVlID0gMDtcbiAgICBjb25zdCBnZXRWaWFQb2ludFNsYWNrVGltZU9yRGVmYXVsdCA9IChcbiAgICAgIHZpYVBvaW50LFxuICAgICAgZGVmYXVsdFZhbHVlID0gZGVmYXVsdFNsYWNrVGltZVZhbHVlLFxuICAgICkgPT4gKHZpYVBvaW50ICYmIHZpYVBvaW50LmxvY2F0aW9uU2xhY2spIHx8IGRlZmF1bHRWYWx1ZTtcbiAgICBjb25zdCBpc1ZpYVBvaW50U2xhY2tUaW1lSW5wdXRBY3RpdmUgPSBpbmRleCA9PlxuICAgICAgYWN0aXZlU2xhY2tJbnB1dHMuaW5jbHVkZXMoaW5kZXgpO1xuICAgIHJldHVybiAoXG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzTmFtZT17Y3goW1xuICAgICAgICAgIHN0eWxlc1snYXV0b3N1Z2dlc3QtcGFuZWwnXSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBzbWFsbDogdGhpcy5wcm9wcy5pc01vYmlsZSxcbiAgICAgICAgICB9LFxuICAgICAgICBdKX1cbiAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAnLS1jb2xvcic6IGAke3RoaXMucHJvcHMuY29sb3J9YCxcbiAgICAgICAgICAnLS1mb250LXdlaWdodC1tZWRpdW0nOiBmb250V2VpZ2h0cy5tZWRpdW0sXG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgIHsnICd9XG4gICAgICAgIHtzZWFyY2hQYW5lbFRleHQgPyAoXG4gICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIDxoMSBjbGFzc05hbWU9e3N0eWxlc1snYXV0b3N1Z2dlc3Qtc2VhcmNocGFuZWwtdGV4dCddfT5cbiAgICAgICAgICAgICAgeycgJ31cbiAgICAgICAgICAgICAge3NlYXJjaFBhbmVsVGV4dH1cbiAgICAgICAgICAgIDwvaDE+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICkgOiBudWxsfVxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzWydvcmlnaW4taW5wdXQtY29udGFpbmVyJ119PlxuICAgICAgICAgIDxEVEF1dG9TdWdnZXN0XG4gICAgICAgICAgICBhcHBFbGVtZW50PXt0aGlzLnByb3BzLmFwcEVsZW1lbnR9XG4gICAgICAgICAgICBpY29uPVwibWFwTWFya2VyXCJcbiAgICAgICAgICAgIGlkPVwib3JpZ2luXCJcbiAgICAgICAgICAgIGF1dG9Gb2N1cz17XG4gICAgICAgICAgICAgIGRpc2FibGVBdXRvRm9jdXMgPT09IHRydWVcbiAgICAgICAgICAgICAgICA/IGZhbHNlXG4gICAgICAgICAgICAgICAgOiAhdGhpcy5wcm9wcy5pc01vYmlsZSAmJiAhb3JpZ2luLmxhdFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc3RvcmVSZWY9e3RoaXMuc3RvcmVSZWZlcmVuY2V9XG4gICAgICAgICAgICByZWZQb2ludD17dGhpcy5wcm9wcy5yZWZQb2ludH1cbiAgICAgICAgICAgIGNsYXNzTmFtZT17Z2V0TG9jYXRpb25UeXBlKG9yaWdpbil9XG4gICAgICAgICAgICBwbGFjZWhvbGRlcj17dGhpcy5wcm9wcy5vcmlnaW5QbGFjZUhvbGRlcn1cbiAgICAgICAgICAgIHZhbHVlPXt2YWx1ZShvcmlnaW4pfVxuICAgICAgICAgICAgc2VhcmNoQ29udGV4dD17c2VhcmNoQ29udGV4dH1cbiAgICAgICAgICAgIGdldEF1dG9TdWdnZXN0SWNvbnM9e3RoaXMucHJvcHMuZ2V0QXV0b1N1Z2dlc3RJY29uc31cbiAgICAgICAgICAgIG9uU2VsZWN0PXt0aGlzLnByb3BzLm9uU2VsZWN0fVxuICAgICAgICAgICAgb25DbGVhcj17dGhpcy5wcm9wcy5vbkNsZWFyfVxuICAgICAgICAgICAgZm9jdXNDaGFuZ2U9e29uRm9jdXNDaGFuZ2UgfHwgdGhpcy5oYW5kbGVGb2N1c0NoYW5nZX1cbiAgICAgICAgICAgIGxhbmc9e3RoaXMucHJvcHMubGFuZ31cbiAgICAgICAgICAgIHNvdXJjZXM9e3RoaXMucHJvcHMuc291cmNlc31cbiAgICAgICAgICAgIHRhcmdldHM9e3RoaXMucHJvcHMudGFyZ2V0c31cbiAgICAgICAgICAgIGZpbHRlclJlc3VsdHM9e3RoaXMucHJvcHMuZmlsdGVyUmVzdWx0c31cbiAgICAgICAgICAgIGlzTW9iaWxlPXt0aGlzLnByb3BzLmlzTW9iaWxlfVxuICAgICAgICAgICAgY29sb3I9e3RoaXMucHJvcHMuY29sb3J9XG4gICAgICAgICAgICBob3ZlckNvbG9yPXt0aGlzLnByb3BzLmhvdmVyQ29sb3J9XG4gICAgICAgICAgICBtb2JpbGVMYWJlbD17b3JpZ2luTW9iaWxlTGFiZWx9XG4gICAgICAgICAgICBmb250V2VpZ2h0cz17dGhpcy5wcm9wcy5mb250V2VpZ2h0c31cbiAgICAgICAgICAgIG1vZGVTZXQ9e3RoaXMucHJvcHMubW9kZVNldH1cbiAgICAgICAgICAgIG1vZGVJY29uQ29sb3JzPXt0aGlzLnByb3BzLm1vZGVJY29uQ29sb3JzfVxuICAgICAgICAgICAgc2hvd1Njcm9sbD17dGhpcy5wcm9wcy5zaG93U2Nyb2xsfVxuICAgICAgICAgICAgaXNFbWJlZGRlZD17dGhpcy5wcm9wcy5pc0VtYmVkZGVkfVxuICAgICAgICAgIC8+XG4gICAgICAgICAgeyhzaG93U3dhcENvbnRyb2wgfHwgc2hvd1ZpYXBvaW50Q29udHJvbCkgJiYgKFxuICAgICAgICAgICAgPEl0aW5lcmFyeVNlYXJjaENvbnRyb2xcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMub3Bwb3NpdGV9XG4gICAgICAgICAgICAgIGVuYWJsZWQ9e3Nob3dTd2FwQ29udHJvbH1cbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gdGhpcy5oYW5kbGVTd2FwT3JkZXJDbGljaygpfVxuICAgICAgICAgICAgICBvbktleVByZXNzPXtlID0+XG4gICAgICAgICAgICAgICAgaXNLZXlib2FyZFNlbGVjdGlvbkV2ZW50KGUpICYmIHRoaXMuaGFuZGxlU3dhcE9yZGVyQ2xpY2soKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGFyaWEtbGFiZWw9e2kxOG5leHQudCgnc3dhcC1vcmRlci1idXR0b24tbGFiZWwnKX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPEljb24gaW1nPVwib3Bwb3NpdGVcIiBjb2xvcj17dGhpcy5wcm9wcy5jb2xvcn0gLz5cbiAgICAgICAgICAgIDwvSXRpbmVyYXJ5U2VhcmNoQ29udHJvbD5cbiAgICAgICAgICApfVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAge3ZpYVBvaW50cy5sZW5ndGggPT09IDAgJiYgKFxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXNbJ3JlY3RhbmdsZS1jb250YWluZXInXX0+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLnJlY3RhbmdsZX0gLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKX1cbiAgICAgICAgPFJlYWN0U29ydGFibGVcbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlc1sndmlhcG9pbnRzLWNvbnRhaW5lciddfVxuICAgICAgICAgIGxpc3Q9e3ZpYVBvaW50c31cbiAgICAgICAgICBoYW5kbGU9e2AuJHtzdHlsZXNbJ3ZpYXBvaW50LWJlZm9yZSddfWB9XG4gICAgICAgICAgYW5pbWF0aW9uPXsyMDB9XG4gICAgICAgICAgZGlzYWJsZWQ9e3ZpYVBvaW50cy5sZW5ndGggPD0gMX1cbiAgICAgICAgICBzZXRMaXN0PXtpdGVtcyA9PiB7XG4gICAgICAgICAgICBjb25zdCBuZXdWaWFQb2ludHMgPSBpdGVtcy5maWx0ZXIodnAgPT4gIWlzVmlhUG9pbnRFbXB0eSh2cCkpO1xuICAgICAgICAgICAgaWYgKG5ld1ZpYVBvaW50cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgIHRoaXMucHJvcHMudXBkYXRlVmlhUG9pbnRzKG5ld1ZpYVBvaW50cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIHt2aWFQb2ludHMubWFwKChvLCBpKSA9PiAoXG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17Y3goc3R5bGVzWyd2aWFwb2ludC1jb250YWluZXInXSl9XG4gICAgICAgICAgICAgIGtleT17YHZpYXBvaW50LSR7aX1gfSAvLyBlc2xpbnQtZGlzYWJsZS1saW5lXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXNbJ2xpZ2h0LWdyYXktYmFja2dyb3VuZCddfT5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLnJvd30+XG4gICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzWyd2aWFwb2ludC1iZWZvcmUnXX1cbiAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3ZpYVBvaW50cy5sZW5ndGggPiAxID8geyBjdXJzb3I6ICdtb3ZlJyB9IDoge319XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHt2aWFQb2ludHMubGVuZ3RoID4gMSAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgPEljb25cbiAgICAgICAgICAgICAgICAgICAgICAgIGltZz1cImVsbGlwc2lzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvdGF0ZT17OTB9XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcj17dGhpcy5wcm9wcy5jb2xvcn1cbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y3goXG4gICAgICAgICAgICAgICAgICAgICAgYCR7c3R5bGVzWyd2aWFwb2ludC1pbnB1dC1jb250YWluZXInXX0gJHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlc1tgdmlhcG9pbnQtJHtpICsgMX1gXVxuICAgICAgICAgICAgICAgICAgICAgIH1gLFxuICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8RFRBdXRvU3VnZ2VzdFxuICAgICAgICAgICAgICAgICAgICAgIGFwcEVsZW1lbnQ9e3RoaXMucHJvcHMuYXBwRWxlbWVudH1cbiAgICAgICAgICAgICAgICAgICAgICBpY29uPVwibWFwTWFya2VyLXZpYVwiXG4gICAgICAgICAgICAgICAgICAgICAgaWQ9XCJ2aWEtcG9pbnRcIlxuICAgICAgICAgICAgICAgICAgICAgIGFyaWFMYWJlbD17aTE4bmV4dC50KCd2aWEtcG9pbnQtaW5kZXgnLCB7IGluZGV4OiBpICsgMSB9KX1cbiAgICAgICAgICAgICAgICAgICAgICBhdXRvRm9jdXM9e1xuICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZUF1dG9Gb2N1cyA9PT0gdHJ1ZSA/IGZhbHNlIDogIXRoaXMucHJvcHMuaXNNb2JpbGVcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ2aWEtcG9pbnRcIlxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInZpYXBvaW50XCJcbiAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hDb250ZXh0PXtzZWFyY2hDb250ZXh0fVxuICAgICAgICAgICAgICAgICAgICAgIHJlZlBvaW50PXt0aGlzLnByb3BzLnJlZlBvaW50fVxuICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXsobyAmJiBvLmFkZHJlc3MpIHx8ICcnfVxuICAgICAgICAgICAgICAgICAgICAgIG9uU2VsZWN0PXt0aGlzLnByb3BzLm9uU2VsZWN0fVxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xlYXI9e3RoaXMucHJvcHMub25DbGVhcn1cbiAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVWaWFQb2ludHM9e2l0ZW0gPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlVmlhUG9pbnRMb2NhdGlvblNlbGVjdGVkKGl0ZW0sIGkpXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIGxhbmc9e3RoaXMucHJvcHMubGFuZ31cbiAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VzPXt0aGlzLnByb3BzLnNvdXJjZXN9XG4gICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0cz17WydTdG9wcycsICdTdGF0aW9ucyddfVxuICAgICAgICAgICAgICAgICAgICAgIGZpbHRlclJlc3VsdHM9e3RoaXMucHJvcHMuZmlsdGVyUmVzdWx0c31cbiAgICAgICAgICAgICAgICAgICAgICBnZXRBdXRvU3VnZ2VzdEljb25zPXt0aGlzLnByb3BzLmdldEF1dG9TdWdnZXN0SWNvbnN9XG4gICAgICAgICAgICAgICAgICAgICAgaXNNb2JpbGU9e3RoaXMucHJvcHMuaXNNb2JpbGV9XG4gICAgICAgICAgICAgICAgICAgICAgY29sb3I9e3RoaXMucHJvcHMuY29sb3J9XG4gICAgICAgICAgICAgICAgICAgICAgaG92ZXJDb2xvcj17dGhpcy5wcm9wcy5ob3ZlckNvbG9yfVxuICAgICAgICAgICAgICAgICAgICAgIGZvbnRXZWlnaHRzPXt0aGlzLnByb3BzLmZvbnRXZWlnaHRzfVxuICAgICAgICAgICAgICAgICAgICAgIG1vZGVTZXQ9e3RoaXMucHJvcHMubW9kZVNldH1cbiAgICAgICAgICAgICAgICAgICAgICBtb2RlSWNvbkNvbG9ycz17dGhpcy5wcm9wcy5tb2RlSWNvbkNvbG9yc31cbiAgICAgICAgICAgICAgICAgICAgICBzaG93U2Nyb2xsPXt0aGlzLnByb3BzLnNob3dTY3JvbGx9XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIHt0aGlzLnByb3BzLnNob3dTbGFja0NvbnRyb2wgJiYgKFxuICAgICAgICAgICAgICAgICAgICA8SXRpbmVyYXJ5U2VhcmNoQ29udHJvbFxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzWydhZGQtdmlhLXBvaW50LXNsYWNrJ119XG4gICAgICAgICAgICAgICAgICAgICAgZW5hYmxlZD17dGhpcy5wcm9wcy5zaG93VmlhcG9pbnRDb250cm9sfVxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHRoaXMuaGFuZGxlVG9nZ2xlVmlhUG9pbnRTbGFja0NsaWNrKGkpfVxuICAgICAgICAgICAgICAgICAgICAgIG9uS2V5UHJlc3M9e2UgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlzS2V5Ym9hcmRTZWxlY3Rpb25FdmVudChlKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVUb2dnbGVWaWFQb2ludFNsYWNrQ2xpY2soaSlcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD17aTE4bmV4dC50KFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNWaWFQb2ludFNsYWNrVGltZUlucHV0QWN0aXZlKGkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgID8gJ2FkZC12aWEtZHVyYXRpb24tYnV0dG9uLWxhYmVsLW9wZW4nXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDogJ2FkZC12aWEtZHVyYXRpb24tYnV0dG9uLWxhYmVsLWNsb3NlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgaW5kZXg6IGkgKyAxIH0sXG4gICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICB3aWRlXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8SWNvbiBpbWc9XCJ0aW1lXCIgY29sb3I9e3RoaXMucHJvcHMuY29sb3J9IC8+XG4gICAgICAgICAgICAgICAgICAgIDwvSXRpbmVyYXJ5U2VhcmNoQ29udHJvbD5cbiAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgeyFpc1ZpYVBvaW50U2xhY2tUaW1lSW5wdXRBY3RpdmUoaSkgJiZcbiAgICAgICAgICAgICAgICAgIHZpYVBvaW50c1tpXSAmJlxuICAgICAgICAgICAgICAgICAgdmlhUG9pbnRzW2ldLmxvY2F0aW9uU2xhY2sgPiAwICYmIChcbiAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlc1sndmlhcG9pbnQtc2xhY2stdGltZSddfVxuICAgICAgICAgICAgICAgICAgICA+e2Ake2kxOG5leHQudCgndmlhcG9pbnQtc2xhY2stYW1vdW50Jyl9OiAke2dldFNsYWNrRGlzcGxheShcbiAgICAgICAgICAgICAgICAgICAgICB2aWFQb2ludHNbaV0ubG9jYXRpb25TbGFjayxcbiAgICAgICAgICAgICAgICAgICAgKX1gfTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjeChzdHlsZXNbJ2lucHV0LXZpYXBvaW50LXNsYWNrLWNvbnRhaW5lciddLCB7XG4gICAgICAgICAgICAgICAgICAgIGNvbGxhcHNlZDogIWlzVmlhUG9pbnRTbGFja1RpbWVJbnB1dEFjdGl2ZShpKSxcbiAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXNbJ3NlbGVjdC13cmFwcGVyJ119PlxuICAgICAgICAgICAgICAgICAgICA8U2VsZWN0XG4gICAgICAgICAgICAgICAgICAgICAgaWQ9e2B2aWFwb2ludC1zbGFjay0ke2l9YH1cbiAgICAgICAgICAgICAgICAgICAgICBsYWJlbD17aTE4bmV4dC50KCd2aWFwb2ludC1zbGFjay1hbW91bnQnKX1cbiAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zPXtzbGFja1RpbWV9XG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2dldFZpYVBvaW50U2xhY2tUaW1lT3JEZWZhdWx0KHZpYVBvaW50c1tpXSl9XG4gICAgICAgICAgICAgICAgICAgICAgZ2V0RGlzcGxheT17Z2V0U2xhY2tEaXNwbGF5fVxuICAgICAgICAgICAgICAgICAgICAgIHZpYVBvaW50SW5kZXg9e2l9XG4gICAgICAgICAgICAgICAgICAgICAgaWNvbj17XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlc1snY29tYm9ib3gtaWNvbiddfSAke3N0eWxlc1sndGltZS1pbnB1dC1pY29uJ119YH1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb24gaW1nPVwidGltZVwiIGNvbG9yPXt0aGlzLnByb3BzLmNvbG9yfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICBvblNsYWNrVGltZVNlbGVjdGVkPXt0aGlzLmhhbmRsZVZpYVBvaW50U2xhY2tUaW1lU2VsZWN0ZWR9XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxJdGluZXJhcnlTZWFyY2hDb250cm9sXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXNbJ3JlbW92ZS12aWEtcG9pbnQnXX1cbiAgICAgICAgICAgICAgICBlbmFibGVkPXt0aGlzLnByb3BzLnNob3dWaWFwb2ludENvbnRyb2x9XG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gdGhpcy5oYW5kbGVSZW1vdmVWaWFQb2ludENsaWNrKGkpfVxuICAgICAgICAgICAgICAgIG9uS2V5UHJlc3M9e2UgPT5cbiAgICAgICAgICAgICAgICAgIGlzS2V5Ym9hcmRTZWxlY3Rpb25FdmVudChlKSAmJlxuICAgICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVSZW1vdmVWaWFQb2ludENsaWNrKGkpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9e2kxOG5leHQudCgncmVtb3ZlLXZpYS1idXR0b24tbGFiZWwnLCB7XG4gICAgICAgICAgICAgICAgICBpbmRleDogaSArIDEsXG4gICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8SWNvbiBpbWc9XCJ0cmFzaFwiIGNvbG9yPXt0aGlzLnByb3BzLmNvbG9yfSAvPlxuICAgICAgICAgICAgICA8L0l0aW5lcmFyeVNlYXJjaENvbnRyb2w+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9SZWFjdFNvcnRhYmxlPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzWydkZXN0aW5hdGlvbi1pbnB1dC1jb250YWluZXInXX0+XG4gICAgICAgICAgPERUQXV0b1N1Z2dlc3RcbiAgICAgICAgICAgIGFwcEVsZW1lbnQ9e3RoaXMucHJvcHMuYXBwRWxlbWVudH1cbiAgICAgICAgICAgIGljb249XCJtYXBNYXJrZXJcIlxuICAgICAgICAgICAgaWQ9XCJkZXN0aW5hdGlvblwiXG4gICAgICAgICAgICBhdXRvRm9jdXM9e1xuICAgICAgICAgICAgICBkaXNhYmxlQXV0b0ZvY3VzID09PSB0cnVlXG4gICAgICAgICAgICAgICAgPyBmYWxzZVxuICAgICAgICAgICAgICAgIDogIXRoaXMucHJvcHMuaXNNb2JpbGUgJiYgIU51bWJlci5pc05hTihvcmlnaW4ubGF0KVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc3RvcmVSZWY9e3RoaXMuc3RvcmVSZWZlcmVuY2V9XG4gICAgICAgICAgICBwbGFjZWhvbGRlcj17dGhpcy5wcm9wcy5kZXN0aW5hdGlvblBsYWNlSG9sZGVyfVxuICAgICAgICAgICAgY2xhc3NOYW1lPXtnZXRMb2NhdGlvblR5cGUodGhpcy5wcm9wcy5kZXN0aW5hdGlvbil9XG4gICAgICAgICAgICBnZXRBdXRvU3VnZ2VzdEljb25zPXt0aGlzLnByb3BzLmdldEF1dG9TdWdnZXN0SWNvbnN9XG4gICAgICAgICAgICBzZWFyY2hDb250ZXh0PXtzZWFyY2hDb250ZXh0fVxuICAgICAgICAgICAgb25TZWxlY3Q9e3RoaXMucHJvcHMub25TZWxlY3R9XG4gICAgICAgICAgICBvbkNsZWFyPXt0aGlzLnByb3BzLm9uQ2xlYXJ9XG4gICAgICAgICAgICByZWZQb2ludD17dGhpcy5wcm9wcy5yZWZQb2ludH1cbiAgICAgICAgICAgIHZhbHVlPXt2YWx1ZSh0aGlzLnByb3BzLmRlc3RpbmF0aW9uKX1cbiAgICAgICAgICAgIGxhbmc9e3RoaXMucHJvcHMubGFuZ31cbiAgICAgICAgICAgIHNvdXJjZXM9e3RoaXMucHJvcHMuc291cmNlc31cbiAgICAgICAgICAgIHRhcmdldHM9e3RoaXMucHJvcHMudGFyZ2V0c31cbiAgICAgICAgICAgIGZpbHRlclJlc3VsdHM9e3RoaXMucHJvcHMuZmlsdGVyUmVzdWx0c31cbiAgICAgICAgICAgIGlzTW9iaWxlPXt0aGlzLnByb3BzLmlzTW9iaWxlfVxuICAgICAgICAgICAgY29sb3I9e3RoaXMucHJvcHMuY29sb3J9XG4gICAgICAgICAgICBob3ZlckNvbG9yPXt0aGlzLnByb3BzLmhvdmVyQ29sb3J9XG4gICAgICAgICAgICBtb2JpbGVMYWJlbD17ZGVzdGluYXRpb25Nb2JpbGVMYWJlbH1cbiAgICAgICAgICAgIGZvbnRXZWlnaHRzPXt0aGlzLnByb3BzLmZvbnRXZWlnaHRzfVxuICAgICAgICAgICAgbW9kZVNldD17dGhpcy5wcm9wcy5tb2RlU2V0fVxuICAgICAgICAgICAgbW9kZUljb25Db2xvcnM9e3RoaXMucHJvcHMubW9kZUljb25Db2xvcnN9XG4gICAgICAgICAgICBzaG93U2Nyb2xsPXt0aGlzLnByb3BzLnNob3dTY3JvbGx9XG4gICAgICAgICAgICBpc0VtYmVkZGVkPXt0aGlzLnByb3BzLmlzRW1iZWRkZWR9XG4gICAgICAgICAgLz5cbiAgICAgICAgICB7KHNob3dTd2FwQ29udHJvbCB8fCBzaG93VmlhcG9pbnRDb250cm9sKSAmJiAoXG4gICAgICAgICAgICA8SXRpbmVyYXJ5U2VhcmNoQ29udHJvbFxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2N4KHN0eWxlc1snYWRkLXZpYS1wb2ludCddLCBzdHlsZXMubW9yZSwge1xuICAgICAgICAgICAgICAgIGNvbGxhcHNlZDogdmlhUG9pbnRzLmxlbmd0aCA+IDQsXG4gICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICBlbmFibGVkPXtzaG93VmlhcG9pbnRDb250cm9sICYmIHZpYVBvaW50cy5sZW5ndGggPT09IDB9XG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHRoaXMuaGFuZGxlQWRkVmlhUG9pbnRDbGljaygpfVxuICAgICAgICAgICAgICBvbktleVByZXNzPXtlID0+XG4gICAgICAgICAgICAgICAgaXNLZXlib2FyZFNlbGVjdGlvbkV2ZW50KGUpICYmIHRoaXMuaGFuZGxlQWRkVmlhUG9pbnRDbGljaygpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgYXJpYS1sYWJlbD17aTE4bmV4dC50KCdhZGQtdmlhLWJ1dHRvbi1sYWJlbCcpfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8SWNvblxuICAgICAgICAgICAgICAgIGltZz1cInZpYXBvaW50XCJcbiAgICAgICAgICAgICAgICB3aWR0aD17MS4yNX1cbiAgICAgICAgICAgICAgICBoZWlnaHQ9ezEuMzc1fVxuICAgICAgICAgICAgICAgIGNvbG9yPXt0aGlzLnByb3BzLmNvbG9yfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9JdGluZXJhcnlTZWFyY2hDb250cm9sPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgKTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBEVEF1dG9zdWdnZXN0UGFuZWw7XG4iXSwibmFtZXMiOlsiX3R5cGVvZiIsIm8iLCJTeW1ib2wiLCJpdGVyYXRvciIsImNvbnN0cnVjdG9yIiwicHJvdG90eXBlIiwidG9Qcm9wZXJ0eUtleSIsInQiLCJpIiwiciIsImUiLCJ0b1ByaW1pdGl2ZSIsImNhbGwiLCJUeXBlRXJyb3IiLCJTdHJpbmciLCJOdW1iZXIiLCJfZGVmaW5lUHJvcGVydHkiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsInZhbHVlIiwiZW51bWVyYWJsZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIiwibiIsImhhc093blByb3BlcnR5IiwiaW5kZXhPZiIsIm9iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJsZW5ndGgiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsInN0eWxlSW5qZWN0IiwiY3NzIiwicmVmIiwiaW5zZXJ0QXQiLCJkb2N1bWVudCIsImhlYWQiLCJnZXRFbGVtZW50c0J5VGFnTmFtZSIsInN0eWxlIiwiY3JlYXRlRWxlbWVudCIsInR5cGUiLCJmaXJzdENoaWxkIiwiaW5zZXJ0QmVmb3JlIiwiYXBwZW5kQ2hpbGQiLCJzdHlsZVNoZWV0IiwiY3NzVGV4dCIsImNyZWF0ZVRleHROb2RlIiwiU2VsZWN0IiwiZ2V0RGlzcGxheSIsIm9wdGlvbnMiLCJvblNsYWNrVGltZVNlbGVjdGVkIiwidmlhUG9pbnRJbmRleCIsImlkIiwibGFiZWwiLCJpY29uIiwiZGlzcGxheVZhbHVlIiwiY2hhbmdlRGlzcGxheVZhbHVlIiwidXNlU3RhdGUiLCJvcGVuIiwiY2hhbmdlT3BlbiIsInVzZUVmZmVjdCIsInNjcm9sbFJlZiIsInVzZVJlZiIsInNjcm9sbEluZGV4IiwiTWF0aCIsImZsb29yIiwidXNlTGF5b3V0RWZmZWN0IiwiY3VycmVudCIsInNjcm9sbFRvcCIsImlucHV0SWQiLCJsYWJlbElkIiwiUmVhY3QiLCJjbGFzc05hbWUiLCJzdHlsZXMiLCJodG1sRm9yIiwiQXV0b3N1Z2dlc3QiLCJzdWdnZXN0aW9ucyIsImdldFN1Z2dlc3Rpb25WYWx1ZSIsInMiLCJyZW5kZXJTdWdnZXN0aW9uIiwiZGlzcGxheU5hbWUiLCJvblN1Z2dlc3Rpb25zRmV0Y2hSZXF1ZXN0ZWQiLCJzaG91bGRSZW5kZXJTdWdnZXN0aW9ucyIsImZvY3VzSW5wdXRPblN1Z2dlc3Rpb25DbGljayIsIm9uU3VnZ2VzdGlvbnNDbGVhclJlcXVlc3RlZCIsImlucHV0UHJvcHMiLCJvbkNoYW5nZSIsIm9uSW5wdXRDaGFuZ2UiLCJfIiwibmV3VmFsdWUiLCJtZXRob2QiLCJvbkZvY3VzIiwib25CbHVyIiwicmVhZE9ubHkiLCJyZW5kZXJTdWdnZXN0aW9uc0NvbnRhaW5lciIsImNvbnRhaW5lclByb3BzIiwiY2hpbGRyZW4iLCJvdGhlclJlZnMiLCJfZXhjbHVkZWQiLCJhc3NpZ24iLCJ0YWJJbmRleCIsImVsZW0iLCJ0aGVtZSIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsInByb3BUeXBlcyIsIlByb3BUeXBlcyIsIm51bWJlciIsImlzUmVxdWlyZWQiLCJmdW5jIiwiYXJyYXlPZiIsInNoYXBlIiwic3RyaW5nIiwibm9kZSIsInRyYW5zbGF0aW9ucyIsImRlIiwiZW4iLCJmaSIsInBsIiwic3YiLCJpMThuZXh0X19kZWZhdWx0IiwiaW5pdCIsImxuZyIsImZhbGxiYWNrTG5nIiwiZGVmYXVsdE5TIiwiaW50ZXJwb2xhdGlvbiIsImVzY2FwZVZhbHVlIiwiZ2V0RW1wdHlWaWFQb2ludFBsYWNlSG9sZGVyIiwiaXNWaWFQb2ludEVtcHR5IiwidmlhUG9pbnQiLCJ1bmRlZmluZWQiLCJpc0VtcHR5Iiwia2V5cyIsImluY2x1ZGVzIiwiSXRpbmVyYXJ5U2VhcmNoQ29udHJvbCIsIl9yZWYiLCJlbmFibGVkIiwib25DbGljayIsIm9uS2V5UHJlc3MiLCJ3aWRlIiwicmVzdCIsInJvbGUiLCJnZXRTbGFja0Rpc3BsYXkiLCJzbGFja0luU2Vjb25kcyIsImkxOG5leHQiLCJ1cGRhdGVWaWFQb2ludFNsYWNrIiwiYWN0aXZlVmlhUG9pbnRTbGFja3MiLCJ1cGRhdGVkVmlhUG9pbnRJbmRleCIsInZpYVBvaW50UmVtb3ZlZCIsImZvdW5kQXRJbmRleCIsInNwbGljZSIsIm1hcCIsImlzS2V5Ym9hcmRTZWxlY3Rpb25FdmVudCIsImV2ZW50Iiwia2V5Iiwid2hpY2giLCJrZXlDb2RlIiwiY29uY2F0IiwicHJldmVudERlZmF1bHQiLCJsb2NhdGlvbiIsImFkZHJlc3MiLCJncHMiLCJyZWFkeSIsImdldExvY2F0aW9uVHlwZSIsImJvb2wiLCJkZWZhdWx0UHJvcHMiLCJsb2NhdGlvblNoYXBlIiwibGF0IiwibG9uIiwibG9jYXRpb25TbGFjayIsIkRUQXV0b3N1Z2dlc3RQYW5lbCIsIkNvbXBvbmVudCIsInByb3BzIiwic3VwZXIiLCJ0aGlzIiwic2V0U3RhdGUiLCJwcmV2U3RhdGUiLCJyZWZzIiwiZGVzdGluYXRpb24iLCJzdGF0ZSIsImZvY3VzIiwidmlhUG9pbnRzIiwidXBkYXRlVmlhUG9pbnRzIiwiZmlsdGVyIiwidnAiLCJhY3RpdmVTbGFja0lucHV0cyIsInNsYWNrVGltZUluU2Vjb25kcyIsImFkZEFuYWx5dGljc0V2ZW50IiwiYWN0aW9uIiwiY2F0ZWdvcnkiLCJuYW1lIiwicGFyc2VJbnQiLCJ2aWFQb2ludExvY2F0aW9uIiwiaGFuZGxlVmlhUG9pbnRMb2NhdGlvblNlbGVjdGVkIiwicHVzaCIsInJldmVyc2UiLCJzd2FwT3JkZXIiLCJmb3JFYWNoIiwibGFuZyIsImFkZFJlc291cmNlQnVuZGxlIiwiY29tcG9uZW50RGlkTW91bnQiLCJjaGFuZ2VMYW5ndWFnZSIsImNvbXBvbmVudERpZFVwZGF0ZSIsImxhbmd1YWdlIiwicmVuZGVyIiwib3JpZ2luIiwic2VhcmNoUGFuZWxUZXh0Iiwic2VhcmNoQ29udGV4dCIsImRpc2FibGVBdXRvRm9jdXMiLCJvcmlnaW5Nb2JpbGVMYWJlbCIsImRlc3RpbmF0aW9uTW9iaWxlTGFiZWwiLCJmb250V2VpZ2h0cyIsIm9uRm9jdXNDaGFuZ2UiLCJzaG93U3dhcENvbnRyb2wiLCJzaG93VmlhcG9pbnRDb250cm9sIiwic2xhY2tUaW1lIiwiZ2V0U2xhY2tUaW1lT3B0aW9ucyIsInRpbWVPcHRpb25zIiwidmFsdWVJbk1pbnV0ZXMiLCJnZXRWaWFQb2ludFNsYWNrVGltZU9yRGVmYXVsdCIsImRlZmF1bHRWYWx1ZSIsImlzVmlhUG9pbnRTbGFja1RpbWVJbnB1dEFjdGl2ZSIsImluZGV4IiwiY3giLCJpc01vYmlsZSIsImNvbG9yIiwibWVkaXVtIiwiRFRBdXRvU3VnZ2VzdCIsImFwcEVsZW1lbnQiLCJhdXRvRm9jdXMiLCJzdG9yZVJlZiIsInN0b3JlUmVmZXJlbmNlIiwicmVmUG9pbnQiLCJwbGFjZWhvbGRlciIsIm9yaWdpblBsYWNlSG9sZGVyIiwiZ2V0QXV0b1N1Z2dlc3RJY29ucyIsIm9uU2VsZWN0Iiwib25DbGVhciIsImZvY3VzQ2hhbmdlIiwiaGFuZGxlRm9jdXNDaGFuZ2UiLCJzb3VyY2VzIiwidGFyZ2V0cyIsImZpbHRlclJlc3VsdHMiLCJob3ZlckNvbG9yIiwibW9iaWxlTGFiZWwiLCJtb2RlU2V0IiwibW9kZUljb25Db2xvcnMiLCJzaG93U2Nyb2xsIiwiaXNFbWJlZGRlZCIsIm9wcG9zaXRlIiwiaGFuZGxlU3dhcE9yZGVyQ2xpY2siLCJJY29uIiwiaW1nIiwicmVjdGFuZ2xlIiwiUmVhY3RTb3J0YWJsZSIsImxpc3QiLCJoYW5kbGUiLCJhbmltYXRpb24iLCJkaXNhYmxlZCIsInNldExpc3QiLCJpdGVtcyIsIm5ld1ZpYVBvaW50cyIsInJvdyIsImN1cnNvciIsInJvdGF0ZSIsImFyaWFMYWJlbCIsImhhbmRsZVZpYVBvaW50cyIsIml0ZW0iLCJzaG93U2xhY2tDb250cm9sIiwiaGFuZGxlVG9nZ2xlVmlhUG9pbnRTbGFja0NsaWNrIiwiaGFuZGxlVmlhUG9pbnRTbGFja1RpbWVTZWxlY3RlZCIsImhhbmRsZVJlbW92ZVZpYVBvaW50Q2xpY2siLCJpc05hTiIsImRlc3RpbmF0aW9uUGxhY2VIb2xkZXIiLCJtb3JlIiwiaGFuZGxlQWRkVmlhUG9pbnRDbGljayIsIndpZHRoIiwiaGVpZ2h0IiwiVVJMX1BFTElBUyIs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
|
package/lib/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("classnames"),require("prop-types"),require("react"),require("react-sortablejs"),require("i18next"),require("@digitransit-component/digitransit-component-autosuggest"),require("@digitransit-component/digitransit-component-icon"),require("lodash/isEmpty"),require("react-autosuggest")):"function"==typeof define&&define.amd?define(["exports","classnames","prop-types","react","react-sortablejs","i18next","@digitransit-component/digitransit-component-autosuggest","@digitransit-component/digitransit-component-icon","lodash/isEmpty","react-autosuggest"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self)["@digitransit-component/digitransit-component-autosuggest-panel"]={},e.cx,e.PropTypes,e.React,e.reactSortablejs,e.i18next,e.DTAutosuggest,e.Icon,e.isEmpty,e.Autosuggest)}(this,(function(e,t,n,i,o,a,s,l,r,p){"use strict";function c(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var d=c(t),u=c(n),_=c(i),h=c(a),g=c(s),f=c(l),v=c(r),y=c(p);function m(e){return m="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},m(e)}function b(e){var t=function(e,t){if("object"!=m(e)||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var i=n.call(e,t||"default");if("object"!=m(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==m(t)?t:String(t)}function x(e,t,n){return(t=b(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function k(e,t){if(null==e)return{};var n,i,o=function(e,t){if(null==e)return{};var n,i,o={},a=Object.keys(e);for(i=0;i<a.length;i++)n=a[i],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i<a.length;i++)n=a[i],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function w(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,i=new Array(t);n<t;n++)i[n]=e[n];return i}function S(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var i,o,a,s,l=[],r=!0,p=!1;try{if(a=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;r=!1}else for(;!(r=(i=a.call(n)).done)&&(l.push(i.value),l.length!==t);r=!0);}catch(e){p=!0,o=e}finally{try{if(!r&&null!=n.return&&(s=n.return(),Object(s)!==s))return}finally{if(p)throw o}}return l}}(e,t)||function(e,t){if(e){if("string"==typeof e)return w(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?w(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function E(e,t){void 0===t&&(t={});var n=t.insertAt;if(e&&"undefined"!=typeof document){var i=document.head||document.getElementsByTagName("head")[0],o=document.createElement("style");o.type="text/css","top"===n&&i.firstChild?i.insertBefore(o,i.firstChild):i.appendChild(o),o.styleSheet?o.styleSheet.cssText=e:o.appendChild(document.createTextNode(e))}}var C={"combobox-container":"select_combobox-container__0lRpm","left-column":"select_left-column__cSrMR","combobox-label":"select_combobox-label__F9Ayd",container:"select_container__yrA-N",suggestion:"select_suggestion__b05iD",suggestionHighlighted:"select_suggestionHighlighted__ZFPWo",suggestionsContainerOpen:"select_suggestionsContainerOpen__9wcJ5",input:"select_input__pK5vk"};E(".select_combobox-container__0lRpm {\n background-color: #fff;\n border: solid #888 1px;\n display: flex;\n align-items: center;\n border-radius: 5px;\n height: 50px;\n justify-content: space-between;\n flex-grow: 1; }\n .select_combobox-container__0lRpm:focus-within {\n border-color: #007ac9; }\n .select_combobox-container__0lRpm .select_left-column__cSrMR {\n display: flex;\n flex-direction: column;\n width: 100%; }\n\n.select_combobox-label__F9Ayd {\n font-size: 12px;\n line-height: 20px;\n color: #666;\n letter-spacing: -0.48px;\n margin-left: 12px;\n margin-top: 4px; }\n\n.select_container__yrA-N {\n position: relative; }\n .select_container__yrA-N .select_suggestion__b05iD {\n font-size: 15px;\n line-height: 49px;\n height: 50px;\n padding: 0 0 0 12px;\n letter-spacing: -0.6px;\n color: #333;\n font-weight: 500; }\n .select_container__yrA-N .select_suggestionHighlighted__ZFPWo {\n font-size: 15px;\n font-weight: 500;\n background: #f2f5f7; }\n .select_container__yrA-N .select_suggestionsContainerOpen__9wcJ5 {\n position: absolute;\n background-color: #fff;\n z-index: 20;\n max-height: 250px;\n overflow-x: hidden;\n overflow-y: scroll;\n border-radius: 5px;\n box-shadow: 0 2px 0 0 rgba(0, 0, 0, 0.06);\n border: 1px rgba(0, 0, 0, 0.1) solid;\n top: 35px;\n width: calc(100% + 45px); }\n .select_container__yrA-N .select_suggestionsContainerOpen__9wcJ5 ul {\n padding: 0;\n margin: 0; }\n .select_container__yrA-N .select_suggestionsContainerOpen__9wcJ5 li:not(:last-child) {\n border-bottom: 1px solid #ddd; }\n .select_container__yrA-N .select_input__pK5vk {\n -moz-appearance: none;\n appearance: none;\n margin: -4px 0 0 0;\n padding-left: 12px;\n border: none;\n height: 26px;\n background: #fff;\n font-weight: 500;\n box-shadow: none;\n font-size: 15px;\n font-stretch: normal;\n font-style: normal;\n line-height: 1.33;\n letter-spacing: -0.6px;\n color: #333; }\n .select_container__yrA-N .select_input__pK5vk:focus {\n outline: none;\n border: none;\n box-shadow: none;\n background: #fff; }\n .select_container__yrA-N .select_input__pK5vk:-moz-read-only {\n cursor: pointer;\n background: #fff; }\n .select_container__yrA-N .select_input__pK5vk:read-only {\n cursor: pointer;\n background: #fff; }\n");var P=["ref"],N=e=>{var t=e.value,n=e.getDisplay,o=e.options,a=e.onSlackTimeSelected,s=e.viaPointIndex,l=e.id,r=e.label,p=e.icon,c=S(i.useState(n(t)),2),d=c[0],u=c[1],h=S(i.useState(!1),2),g=h[0],f=h[1];i.useEffect((()=>u(n(t))),[t]);var v=i.useRef(null),m=Math.floor(t/600);i.useLayoutEffect((()=>{g&&v.current&&(v.current.scrollTop=50*m)}),[t,g]);var b=`${l}-input`,x=`${l}-label`;return _.default.createElement("label",{className:C["combobox-container"],htmlFor:b},_.default.createElement("span",{className:C["left-column"]},_.default.createElement("span",{className:C["combobox-label"],id:x},r),_.default.createElement(y.default,{id:l,suggestions:o,getSuggestionValue:e=>e.value,renderSuggestion:e=>e.displayName,onSuggestionsFetchRequested:()=>null,shouldRenderSuggestions:()=>!0,focusInputOnSuggestionClick:!1,onSuggestionsClearRequested:()=>null,inputProps:{value:d,onChange:(e,n)=>{var i=n.newValue;switch(n.method){case"enter":case"click":a(i,s);break;case"escape":u(t)}},onFocus:()=>{f(!0)},onBlur:()=>{f(!1)},id:b,"aria-labelledby":x,"aria-autocomplete":"none",readOnly:!0},renderSuggestionsContainer:e=>{var t=e.containerProps,n=e.children,i=t.ref,o=k(t,P);return _.default.createElement("div",Object.assign({tabIndex:"-1"},o,{ref:e=>{e&&(v.current=e,i(e))}}),n)},theme:C})),p)};"production"!==process.env.NODE_ENV&&(N.propTypes={value:u.default.number.isRequired,onSlackTimeSelected:u.default.func.isRequired,getDisplay:u.default.func.isRequired,options:u.default.arrayOf(u.default.shape({displayName:u.default.string.isRequired,value:u.default.number.isRequired}).isRequired).isRequired,id:u.default.string.isRequired,label:u.default.node.isRequired,icon:u.default.node.isRequired,viaPointIndex:u.default.number.isRequired});var A={de:{"add-via-button-label":"Füge Zwischenziel hinzu","add-via-duration-button-label":"Setze Umsteigezeit für Zwischenziel {{index}}","add-via-duration-button-label-close":"Schließe Umsteigezeit-Auswahl für Zwischenziel {{index}}","add-via-duration-button-label-open":"Öffne Umsteigezeit-Auswahl für Zwischenziel {{index}}","minute-short":"min","remove-via-button-label":"Entferne Zwischenziel {{index}}","swap-order-button-label":"Tausche Start mit Ziel","via-point":"Zwischenziel","via-point-index":"Zwischenziel {{index}}","viapoint-slack-amount":"Umsteigezeit"},en:{"add-via-button-label":"Add via point","add-via-duration-button-label":"Set stop duration at via point {{index}}","add-via-duration-button-label-close":"Close stop duration selector at via point {{index}}","add-via-duration-button-label-open":"Open stop duration selector at via point {{index}}","minute-short":"min","remove-via-button-label":"Remove via point {{index}}","swap-order-button-label":"Reverse origin and destination","via-point":"Via point","via-point-index":"Via point {{index}}","viapoint-slack-amount":"Stop duration"},fi:{"add-via-button-label":"Lisää välipiste","add-via-duration-button-label":"Aseta välipisteelle {{index}} pysähdyksen kesto","add-via-duration-button-label-close":"Avaa välipisteen {{index}} pysähdyksen kesto valitsin","add-via-duration-button-label-open":"Sulje välipisteen {{index}} pysähdyksen kesto valitsin","minute-short":"min","remove-via-button-label":"Poista välipiste {{index}}","swap-order-button-label":"Käännä reitin suunta vastakkaiseksi","via-point":"Välipiste","via-point-index":"Välipiste {{index}}","viapoint-slack-amount":"Pysähdyksen kesto"},pl:{"add-via-button-label":"Dodaj punkt pośredni","add-via-duration-button-label":"Wybierz czas postoju dla punktu {{index}}","add-via-duration-button-label-close":"Zamknij wybornik czasu postoju w punkcie {{index}}","add-via-duration-button-label-open":"Otwórz wybornik czasu postoju w punkcie {{index}}","minute-short":"min.","remove-via-button-label":"Usuń punkt pośredni {{index}}","swap-order-button-label":"Odwróć początek i cel","via-point":"Punkt pośredni","via-point-index":"Punkt pośredni {{index}}","viapoint-slack-amount":"Czas postoju"},sv:{"add-via-button-label":"Lägg till viapunkt","add-via-duration-button-label":"Ställ in varaktighet för viapunkten {{index}}","add-via-duration-button-label-close":"Stäng väljaren för varaktighet vid via-punkten {{index}}","add-via-duration-button-label-open":"Öppna väljaren för varaktighet vid via-punkten {{index}}","minute-short":"min","remove-via-button-label":"Ta bort viapunkt {{index}}","swap-order-button-label":"Sväng ruttens riktning till den motsatta","via-point":"Via punkt","via-point-index":"Via punkt {{index}}","viapoint-slack-amount":"Stoppets varaktighet"}},O={"autosuggest-panel":"styles_autosuggest-panel__meNwd","autosuggest-searchpanel-text":"styles_autosuggest-searchpanel-text__-VQTg","origin-input-container":"styles_origin-input-container__p4Qik","destination-input-container":"styles_destination-input-container__jBY4I",row:"styles_row__1GhCD","viapoints-container":"styles_viapoints-container__FYp7K","viapoint-container":"styles_viapoint-container__8yh1M","light-gray-background":"styles_light-gray-background__4fyZs","viapoint-before":"styles_viapoint-before__t4saF","viapoint-input-container":"styles_viapoint-input-container__uZx95","viapoint-1":"styles_viapoint-1__8Mna8",viapoint:"styles_viapoint__vUO9L","viapoint-2":"styles_viapoint-2__-OoUa","viapoint-3":"styles_viapoint-3__vvivE","viapoint-4":"styles_viapoint-4__jS9k1","viapoint-5":"styles_viapoint-5__J4V5N","viapoint-slack-time":"styles_viapoint-slack-time__Xpo0G","select-wrapper":"styles_select-wrapper__1usZw","via-point-button-container":"styles_via-point-button-container__cI2JI","input-viapoint-slack-container":"styles_input-viapoint-slack-container__TNgVy","itinerary-search-control":"styles_itinerary-search-control__cEL1X",opposite:"styles_opposite__zQQhd","add-via-point":"styles_add-via-point__E-gGB","add-via-point-slack":"styles_add-via-point-slack__GKjFf","remove-via-point":"styles_remove-via-point__e9DMQ","combobox-icon":"styles_combobox-icon__d3k1e","time-input-icon":"styles_time-input-icon__M8dmw","rectangle-container":"styles_rectangle-container__AdbAA",rectangle:"styles_rectangle__1IO7E","search-panel-whitespace":"styles_search-panel-whitespace__Luhwx"};E(".styles_autosuggest-panel__meNwd {\n width: 100%; }\n\n.styles_autosuggest-searchpanel-text__-VQTg {\n font-size: 24px;\n font-weight: var(--font-weight-medium);\n letter-spacing: -0.8px;\n color: #333;\n line-height: 1;\n margin-bottom: 17px;\n margin-top: unset; }\n @media screen and (min-width: 768px) {\n .styles_autosuggest-searchpanel-text__-VQTg {\n letter-spacing: -0.8px;\n line-height: 27px;\n margin-bottom: 21px; } }\n\n.styles_origin-input-container__p4Qik,\n.styles_destination-input-container__jBY4I {\n display: flex;\n flex: 1 0 100%; }\n .styles_origin-input-container__p4Qik input[type='text'],\n .styles_destination-input-container__jBY4I input[type='text'] {\n margin: 0; }\n\n.styles_row__1GhCD {\n display: flex;\n flex-direction: row; }\n\n.styles_viapoints-container__FYp7K {\n display: flex;\n flex-direction: column; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M {\n display: flex;\n flex: 1 0 100%;\n min-height: 50px; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M:first-child {\n margin-top: 6px; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M:not(:first-child) {\n margin-top: 3px; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M:last-child {\n margin-bottom: 6px; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs {\n display: flex;\n padding: 3px 0;\n flex-direction: column;\n background: #f2f5f7;\n border-radius: 5px;\n width: 100%; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-before__t4saF {\n display: flex;\n min-width: 27px;\n justify-content: center;\n align-items: center; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-before__t4saF svg {\n fill: #888;\n height: 20px; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-input-container__uZx95 {\n display: flex;\n align-items: center;\n width: 100%; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-input-container__uZx95 input[type='text'] {\n margin: 0; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-input-container__uZx95.styles_viapoint-1__8Mna8 > div.styles_viapoint__vUO9L {\n z-index: 15; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-input-container__uZx95.styles_viapoint-2__-OoUa > div.styles_viapoint__vUO9L {\n z-index: 14; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-input-container__uZx95.styles_viapoint-3__vvivE > div.styles_viapoint__vUO9L {\n z-index: 13; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-input-container__uZx95.styles_viapoint-4__jS9k1 > div.styles_viapoint__vUO9L {\n z-index: 12; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-input-container__uZx95.styles_viapoint-5__J4V5N > div.styles_viapoint__vUO9L {\n z-index: 11; }\n\n.styles_viapoint-slack-time__Xpo0G {\n font-size: 13px;\n font-weight: normal;\n letter-spacing: -0.36px;\n color: #333;\n padding-left: 27px;\n padding-top: 12px;\n padding-bottom: 10px; }\n\n.styles_select-wrapper__1usZw {\n display: flex;\n height: 50px;\n margin-top: 9px;\n padding-left: 27px;\n padding-right: 47px; }\n\n.styles_via-point-button-container__cI2JI {\n display: flex; }\n .styles_via-point-button-container__cI2JI > div:nth-child(1) {\n order: 1;\n border-left: none; }\n .styles_via-point-button-container__cI2JI > div:nth-child(2) {\n order: 2;\n border-left: 1px solid rgba(151, 151, 151, 0.2); }\n\n.styles_input-viapoint-slack-container__TNgVy {\n display: flex;\n flex-direction: column; }\n\n.styles_itinerary-search-control__cEL1X {\n display: flex;\n align-items: center;\n justify-content: center;\n text-align: center;\n max-height: 50px;\n min-width: var(--width); }\n .styles_itinerary-search-control__cEL1X + .styles_itinerary-search-control__cEL1X {\n border-left: 1px solid rgba(151, 151, 151, 0.2); }\n .styles_itinerary-search-control__cEL1X .styles_opposite__zQQhd {\n display: flex;\n justify-content: center;\n align-items: center;\n height: 100%;\n min-width: 40px;\n cursor: pointer; }\n .styles_itinerary-search-control__cEL1X .styles_opposite__zQQhd svg {\n width: 19px;\n height: 17px; }\n .styles_itinerary-search-control__cEL1X .styles_add-via-point__E-gGB {\n display: flex;\n justify-content: center;\n align-items: center;\n height: 100%;\n min-width: 40px;\n cursor: pointer; }\n .styles_itinerary-search-control__cEL1X .styles_add-via-point__E-gGB svg {\n width: 20px;\n height: 22px; }\n .styles_itinerary-search-control__cEL1X .styles_add-via-point-slack__GKjFf {\n display: flex;\n justify-content: center;\n align-items: center;\n height: 100%;\n min-width: 47px;\n cursor: pointer; }\n .styles_itinerary-search-control__cEL1X .styles_add-via-point-slack__GKjFf svg {\n width: 18px;\n height: 19px; }\n .styles_itinerary-search-control__cEL1X .styles_remove-via-point__e9DMQ {\n display: flex;\n justify-content: center;\n align-items: center;\n height: 100%;\n max-height: 44px;\n min-width: 40px;\n cursor: pointer; }\n .styles_itinerary-search-control__cEL1X .styles_remove-via-point__e9DMQ svg {\n width: 14px;\n height: 14px; }\n\n.styles_combobox-icon__d3k1e {\n color: var(--color);\n border-left: solid #888 1px;\n height: 35px; }\n .styles_combobox-icon__d3k1e.styles_time-input-icon__M8dmw {\n padding: 9px 13px 0 13px; }\n .styles_combobox-icon__d3k1e.styles_time-input-icon__M8dmw svg {\n width: 18px;\n height: 19px; }\n\n.styles_rectangle-container__AdbAA {\n display: block;\n position: relative;\n height: 9px;\n z-index: 19; }\n .styles_rectangle-container__AdbAA .styles_rectangle__1IO7E {\n position: absolute;\n width: 4px;\n height: 21px;\n border-radius: 2px;\n background-color: #ddd;\n margin-left: 25px;\n margin-top: -5px; }\n\n.styles_search-panel-whitespace__Luhwx {\n min-width: 40px; }\n");var V=["children","className","enabled","onClick","onKeyPress","wide"];h.default.init({lng:"fi",fallbackLng:"fi",defaultNS:"translation",interpolation:{escapeValue:!1}});var I=()=>({}),R=e=>{if(void 0===e||v.default(e))return!0;var t=Object.keys(e);return 1===t.length||2===t.length&&t.includes("locationSlack")},M=e=>{var t=e.children,n=e.className,i=e.enabled,o=e.onClick,a=e.onKeyPress,s=e.wide,l=k(e,V);return _.default.createElement("div",{className:O["itinerary-search-control"],style:{"--width":s?"47px":"40px"}},o&&i&&_.default.createElement("div",Object.assign({},l,{className:n,onClick:o,onKeyPress:a,role:"button",tabIndex:"0"}),t))},j=e=>`${e/60} ${h.default.t("minute-short")}`,L=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=e.indexOf(t);return i>-1&&e.splice(i,1),n?e.map((e=>e>t?e-1:e)):e},F=e=>{var t=e&&(e.key||e.which||e.keyCode)||"";return!(!t||![13," ","Spacebar"].concat([32,"Enter"]).includes(t))&&(e.preventDefault(),!0)},z=e=>e&&e.address||e&&e.gps&&e.ready&&"Nykyinen sijainti"||"",K=e=>e&&!0===e.gps?"position":"location";"production"!==process.env.NODE_ENV&&(M.propTypes={children:u.default.node,className:u.default.string.isRequired,enabled:u.default.bool.isRequired,onClick:u.default.func.isRequired,onKeyPress:u.default.func.isRequired,wide:u.default.bool}),M.defaultProps={children:void 0,wide:!1};var Z="production"!==process.env.NODE_ENV?u.default.shape({address:u.default.string,lat:u.default.number,lon:u.default.number,locationSlack:u.default.number}):{};class T extends _.default.Component{constructor(e){super(e),x(this,"storeReference",(e=>{this.setState((t=>({refs:[...t.refs,e]})))})),x(this,"handleFocusChange",(()=>{var e=this.props.destination;e&&e.lat||this.state.refs[1].focus()})),x(this,"updateViaPoints",(e=>{0!==e.length?this.props.updateViaPoints(e.filter((e=>!R(e)))):this.props.updateViaPoints([])})),x(this,"handleToggleViaPointSlackClick",(e=>{var t=this.state.activeSlackInputs;this.setState({activeSlackInputs:t.includes(e)?L(t,e):t.concat([e])})})),x(this,"handleViaPointSlackTimeSelected",((e,t)=>{this.props.addAnalyticsEvent&&this.props.addAnalyticsEvent({action:"EditViaPointStopDuration",category:"ItinerarySettings",name:e/60});var n=this.props.viaPoints;n[t].locationSlack=Number.parseInt(e,10),this.updateViaPoints(n)})),x(this,"handleViaPointLocationSelected",((e,t)=>{this.props.handleViaPointLocationSelected(e,t)})),x(this,"handleRemoveViaPointClick",(e=>{this.props.addAnalyticsEvent&&this.props.addAnalyticsEvent({action:"RemoveJourneyViaPoint",category:"ItinerarySettings",name:null});var t=this.state.activeSlackInputs,n=this.props.viaPoints;n.splice(e,1),this.setState({activeSlackInputs:L(t,e,!0)},(()=>this.updateViaPoints(n)))})),x(this,"handleAddViaPointClick",(()=>{this.props.addAnalyticsEvent&&this.props.addAnalyticsEvent({action:"AddJourneyViaPoint",category:"ItinerarySettings",name:"QuickSettingsButton"}),this.props.viaPoints.push({}),this.setState(this.state)})),x(this,"handleSwapOrderClick",(()=>{this.props.addAnalyticsEvent&&this.props.addAnalyticsEvent({action:"SwitchJourneyStartAndEndPointOrder",category:"ItinerarySettings",name:null}),this.props.viaPoints.reverse(),this.props.swapOrder()})),this.state={activeSlackInputs:[],refs:[]},Object.keys(A).forEach((e=>{h.default.addResourceBundle(e,"translation",A[e])}))}componentDidMount(){h.default.changeLanguage(this.props.lang)}componentDidUpdate(){h.default.language!==this.props.lang&&h.default.changeLanguage(this.props.lang)}render(){var e=this.props,t=e.origin,n=e.searchPanelText,i=e.searchContext,a=e.disableAutoFocus,s=e.viaPoints,l=e.originMobileLabel,r=e.destinationMobileLabel,p=e.fontWeights,c=e.onFocusChange,u=e.showSwapControl,v=e.showViapointControl,y=this.state.activeSlackInputs,m=(()=>{for(var e=[],t=0;t<=9;t++){var n=10*t;e.push({displayName:`${n} ${h.default.t("minute-short")}`,value:60*n})}return e})(),b=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return e&&e.locationSlack||t},x=e=>y.includes(e);return _.default.createElement("div",{className:d.default(O["autosuggest-panel"],this.props.isMobile&&"small"),style:{"--color":`${this.props.color}`,"--font-weight-medium":p.medium}}," ",n?_.default.createElement("div",null,_.default.createElement("h1",{className:O["autosuggest-searchpanel-text"]}," ",n)):null,_.default.createElement("div",{className:O["origin-input-container"]},_.default.createElement(g.default,{appElement:this.props.appElement,icon:"mapMarker",id:"origin",autoFocus:!0!==a&&(!this.props.isMobile&&!t.lat),storeRef:this.storeReference,refPoint:this.props.refPoint,className:K(t),placeholder:this.props.originPlaceHolder,value:z(t),searchContext:i,getAutoSuggestIcons:this.props.getAutoSuggestIcons,onSelect:this.props.onSelect,onClear:this.props.onClear,focusChange:c||this.handleFocusChange,lang:this.props.lang,sources:this.props.sources,targets:this.props.targets,filterResults:this.props.filterResults,isMobile:this.props.isMobile,color:this.props.color,hoverColor:this.props.hoverColor,mobileLabel:l,fontWeights:this.props.fontWeights,modeSet:this.props.modeSet,modeIconColors:this.props.modeIconColors,showScroll:this.props.showScroll,isEmbedded:this.props.isEmbedded}),(u||v)&&_.default.createElement(M,{className:O.opposite,enabled:u,onClick:()=>this.handleSwapOrderClick(),onKeyPress:e=>F(e)&&this.handleSwapOrderClick(),"aria-label":h.default.t("swap-order-button-label")},_.default.createElement(f.default,{img:"opposite",color:this.props.color}))),0===s.length&&_.default.createElement("div",{className:O["rectangle-container"]},_.default.createElement("div",{className:O.rectangle})),_.default.createElement(o.ReactSortable,{className:O["viapoints-container"],list:s,handle:`.${O["viapoint-before"]}`,animation:200,disabled:s.length<=1,setList:e=>{var t=e.filter((e=>!R(e)));t.length>0&&this.props.updateViaPoints(t)}},s.map(((e,t)=>_.default.createElement("div",{className:d.default(O["viapoint-container"]),key:`viapoint-${t}`},_.default.createElement("div",{className:O["light-gray-background"]},_.default.createElement("div",{className:O.row},_.default.createElement("div",{className:O["viapoint-before"],style:s.length>1?{cursor:"move"}:{}},s.length>1&&_.default.createElement(f.default,{img:"ellipsis",rotate:90,color:this.props.color})),_.default.createElement("div",{className:`${O["viapoint-input-container"]} ${O[`viapoint-${t+1}`]}`},_.default.createElement(g.default,{appElement:this.props.appElement,icon:"mapMarker-via",id:"via-point",ariaLabel:h.default.t("via-point-index",{index:t+1}),autoFocus:!0!==a&&!this.props.isMobile,placeholder:"via-point",className:"viapoint",searchContext:i,refPoint:this.props.refPoint,value:e&&e.address||"",onSelect:this.props.onSelect,onClear:this.props.onClear,handleViaPoints:e=>this.handleViaPointLocationSelected(e,t),lang:this.props.lang,sources:this.props.sources,targets:["Stops","Stations"],filterResults:this.props.filterResults,getAutoSuggestIcons:this.props.getAutoSuggestIcons,isMobile:this.props.isMobile,color:this.props.color,hoverColor:this.props.hoverColor,fontWeights:this.props.fontWeights,modeSet:this.props.modeSet,modeIconColors:this.props.modeIconColors,showScroll:this.props.showScroll})),this.props.showSlackControl&&_.default.createElement(M,{className:O["add-via-point-slack"],enabled:this.props.showViapointControl,onClick:()=>this.handleToggleViaPointSlackClick(t),onKeyPress:e=>F(e)&&this.handleToggleViaPointSlackClick(t),"aria-label":h.default.t(x(t)?"add-via-duration-button-label-open":"add-via-duration-button-label-close",{index:t+1}),wide:!0},_.default.createElement(f.default,{img:"time",color:this.props.color}))),!x(t)&&s[t]&&s[t].locationSlack>0&&_.default.createElement("span",{className:O["viapoint-slack-time"]},`${h.default.t("viapoint-slack-amount")}: ${j(s[t].locationSlack)}`),_.default.createElement("div",{className:d.default(O["input-viapoint-slack-container"],!x(t)&&"collapsed")},_.default.createElement("div",{className:O["select-wrapper"]},_.default.createElement(N,{id:`viapoint-slack-${t}`,label:h.default.t("viapoint-slack-amount"),options:m,value:b(s[t]),getDisplay:j,viaPointIndex:t,icon:_.default.createElement("span",{className:`${O["combobox-icon"]} ${O["time-input-icon"]}`},_.default.createElement(f.default,{img:"time",color:this.props.color})),onSlackTimeSelected:this.handleViaPointSlackTimeSelected})))),_.default.createElement(M,{className:O["remove-via-point"],enabled:this.props.showViapointControl,onClick:()=>this.handleRemoveViaPointClick(t),onKeyPress:e=>F(e)&&this.handleRemoveViaPointClick(t),"aria-label":h.default.t("remove-via-button-label",{index:t+1})},_.default.createElement(f.default,{img:"trash",color:this.props.color})))))),_.default.createElement("div",{className:O["destination-input-container"]},_.default.createElement(g.default,{appElement:this.props.appElement,icon:"mapMarker",id:"destination",autoFocus:!0!==a&&(!this.props.isMobile&&!Number.isNaN(t.lat)),storeRef:this.storeReference,placeholder:this.props.destinationPlaceHolder,className:K(this.props.destination),getAutoSuggestIcons:this.props.getAutoSuggestIcons,searchContext:i,onSelect:this.props.onSelect,onClear:this.props.onClear,refPoint:this.props.refPoint,value:z(this.props.destination),lang:this.props.lang,sources:this.props.sources,targets:this.props.targets,filterResults:this.props.filterResults,isMobile:this.props.isMobile,color:this.props.color,hoverColor:this.props.hoverColor,mobileLabel:r,fontWeights:this.props.fontWeights,modeSet:this.props.modeSet,modeIconColors:this.props.modeIconColors,showScroll:this.props.showScroll,isEmbedded:this.props.isEmbedded}),(u||v)&&_.default.createElement(M,{className:d.default(O["add-via-point"],O.more,s.length>4&&"collapsed"),enabled:v&&0===s.length,onClick:()=>this.handleAddViaPointClick(),onKeyPress:e=>F(e)&&this.handleAddViaPointClick(),"aria-label":h.default.t("add-via-button-label")},_.default.createElement(f.default,{img:"viapoint",width:1.25,height:1.375,color:this.props.color}))))}}x(T,"defaultProps",{origin:void 0,destination:void 0,viaPoints:[],originPlaceHolder:"give-origin",destinationPlaceHolder:"give-destination",swapOrder:void 0,updateViaPoints:()=>{},lang:"fi",searchPanelText:void 0,sources:[],targets:[],filterResults:void 0,onClear:void 0,getAutoSuggestIcons:void 0,refPoint:void 0,addAnalyticsEvent:void 0,disableAutoFocus:!1,isMobile:!1,handleViaPointLocationSelected:void 0,color:"#007ac9",hoverColor:"#0062a1",originMobileLabel:null,destinationMobileLabel:null,modeSet:void 0,modeIconColors:void 0,fontWeights:{medium:500},showScroll:!1,onFocusChange:void 0,isEmbedded:!1,showSwapControl:!1,showViapointControl:!1,showSlackControl:!1}),"production"!==process.env.NODE_ENV&&(T.propTypes={appElement:u.default.string.isRequired,origin:Z,destination:Z,originPlaceHolder:u.default.string,destinationPlaceHolder:u.default.string,viaPoints:u.default.arrayOf(Z),updateViaPoints:u.default.func,handleViaPointLocationSelected:u.default.func,swapOrder:u.default.func,searchPanelText:u.default.string,searchContext:u.default.shape({URL_PELIAS:u.default.string}).isRequired,onSelect:u.default.func.isRequired,onClear:u.default.func,addAnalyticsEvent:u.default.func,lang:u.default.string,disableAutoFocus:u.default.bool,sources:u.default.arrayOf(u.default.string),targets:u.default.arrayOf(u.default.string),filterResults:u.default.func,isMobile:u.default.bool,color:u.default.string,hoverColor:u.default.string,originMobileLabel:u.default.string,destinationMobileLabel:u.default.string,refPoint:Z,modeSet:u.default.string,modeIconColors:u.default.objectOf(u.default.string),getAutoSuggestIcons:u.default.objectOf(u.default.func),fontWeights:u.default.shape({medium:u.default.number}),showScroll:u.default.bool,onFocusChange:u.default.func,isEmbedded:u.default.bool,showSwapControl:u.default.bool,showViapointControl:u.default.bool,showSlackControl:u.default.bool}),e.default=T,e.getEmptyViaPointPlaceHolder=I,Object.defineProperty(e,"__esModule",{value:!0})}));
|
|
1
|
+
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("classnames"),require("prop-types"),require("react"),require("react-sortablejs"),require("i18next"),require("@digitransit-component/digitransit-component-autosuggest"),require("@digitransit-component/digitransit-component-icon"),require("lodash/isEmpty"),require("react-autosuggest")):"function"==typeof define&&define.amd?define(["exports","classnames","prop-types","react","react-sortablejs","i18next","@digitransit-component/digitransit-component-autosuggest","@digitransit-component/digitransit-component-icon","lodash/isEmpty","react-autosuggest"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self)["@digitransit-component/digitransit-component-autosuggest-panel"]={},e.cx,e.PropTypes,e.React,e.reactSortablejs,e.i18next,e.DTAutosuggest,e.Icon,e.isEmpty,e.Autosuggest)}(this,(function(e,t,n,i,o,a,s,l,r,c){"use strict";function p(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var d=p(t),u=p(n),_=p(i),h=p(a),g=p(s),f=p(l),v=p(r),y=p(c);function m(e){return m="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},m(e)}function b(e){var t=function(e,t){if("object"!=m(e)||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var i=n.call(e,t||"default");if("object"!=m(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==m(t)?t:t+""}function x(e,t,n){return(t=b(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function k(e,t){if(null==e)return{};var n,i,o=function(e,t){if(null==e)return{};var n={};for(var i in e)if({}.hasOwnProperty.call(e,i)){if(-1!==t.indexOf(i))continue;n[i]=e[i]}return n}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i<a.length;i++)n=a[i],-1===t.indexOf(n)&&{}.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function w(e,t){void 0===t&&(t={});var n=t.insertAt;if(e&&"undefined"!=typeof document){var i=document.head||document.getElementsByTagName("head")[0],o=document.createElement("style");o.type="text/css","top"===n&&i.firstChild?i.insertBefore(o,i.firstChild):i.appendChild(o),o.styleSheet?o.styleSheet.cssText=e:o.appendChild(document.createTextNode(e))}}var S={"combobox-container":"select_combobox-container__0lRpm","left-column":"select_left-column__cSrMR","combobox-label":"select_combobox-label__F9Ayd",container:"select_container__yrA-N",suggestion:"select_suggestion__b05iD",suggestionHighlighted:"select_suggestionHighlighted__ZFPWo",suggestionsContainerOpen:"select_suggestionsContainerOpen__9wcJ5",input:"select_input__pK5vk"};w(".select_combobox-container__0lRpm {\n background-color: #fff;\n border: solid #888 1px;\n display: flex;\n align-items: center;\n border-radius: 5px;\n height: 50px;\n justify-content: space-between;\n flex-grow: 1; }\n .select_combobox-container__0lRpm:focus-within {\n border-color: #007ac9; }\n .select_combobox-container__0lRpm .select_left-column__cSrMR {\n display: flex;\n flex-direction: column;\n width: 100%; }\n\n.select_combobox-label__F9Ayd {\n font-size: 12px;\n line-height: 20px;\n color: #666;\n letter-spacing: -0.48px;\n margin-left: 12px;\n margin-top: 4px; }\n\n.select_container__yrA-N {\n position: relative; }\n .select_container__yrA-N .select_suggestion__b05iD {\n font-size: 15px;\n line-height: 49px;\n height: 50px;\n padding: 0 0 0 12px;\n letter-spacing: -0.6px;\n color: #333;\n font-weight: 500; }\n .select_container__yrA-N .select_suggestionHighlighted__ZFPWo {\n font-size: 15px;\n font-weight: 500;\n background: #f2f5f7; }\n .select_container__yrA-N .select_suggestionsContainerOpen__9wcJ5 {\n position: absolute;\n background-color: #fff;\n z-index: 20;\n max-height: 250px;\n overflow-x: hidden;\n overflow-y: scroll;\n border-radius: 5px;\n box-shadow: 0 2px 0 0 rgba(0, 0, 0, 0.06);\n border: 1px rgba(0, 0, 0, 0.1) solid;\n top: 35px;\n width: calc(100% + 45px); }\n .select_container__yrA-N .select_suggestionsContainerOpen__9wcJ5 ul {\n padding: 0;\n margin: 0; }\n .select_container__yrA-N .select_suggestionsContainerOpen__9wcJ5 li:not(:last-child) {\n border-bottom: 1px solid #ddd; }\n .select_container__yrA-N .select_input__pK5vk {\n -moz-appearance: none;\n appearance: none;\n margin: -4px 0 0 0;\n padding-left: 12px;\n border: none;\n height: 26px;\n background: #fff;\n font-weight: 500;\n box-shadow: none;\n font-size: 15px;\n font-stretch: normal;\n font-style: normal;\n line-height: 1.33;\n letter-spacing: -0.6px;\n color: #333; }\n .select_container__yrA-N .select_input__pK5vk:focus {\n outline: none;\n border: none;\n box-shadow: none;\n background: #fff; }\n .select_container__yrA-N .select_input__pK5vk:-moz-read-only {\n cursor: pointer;\n background: #fff; }\n .select_container__yrA-N .select_input__pK5vk:read-only {\n cursor: pointer;\n background: #fff; }\n");const E=["ref"],C=({value:e,getDisplay:t,options:n,onSlackTimeSelected:o,viaPointIndex:a,id:s,label:l,icon:r})=>{const[c,p]=i.useState(t(e)),[d,u]=i.useState(!1);i.useEffect((()=>p(t(e))),[e]);const h=i.useRef(null),g=Math.floor(e/600);i.useLayoutEffect((()=>{d&&h.current&&(h.current.scrollTop=50*g)}),[e,d]);const f=`${s}-input`,v=`${s}-label`;return _.default.createElement("label",{className:S["combobox-container"],htmlFor:f},_.default.createElement("span",{className:S["left-column"]},_.default.createElement("span",{className:S["combobox-label"],id:v},l),_.default.createElement(y.default,{id:s,suggestions:n,getSuggestionValue:e=>e.value,renderSuggestion:e=>e.displayName,onSuggestionsFetchRequested:()=>null,shouldRenderSuggestions:()=>!0,focusInputOnSuggestionClick:!1,onSuggestionsClearRequested:()=>null,inputProps:{value:c,onChange:(t,{newValue:n,method:i})=>{switch(i){case"enter":case"click":o(n,a);break;case"escape":p(e)}},onFocus:()=>{u(!0)},onBlur:()=>{u(!1)},id:f,"aria-labelledby":v,"aria-autocomplete":"none",readOnly:!0},renderSuggestionsContainer:({containerProps:e,children:t})=>{const{ref:n}=e,i=k(e,E);return _.default.createElement("div",Object.assign({tabIndex:"-1"},i,{ref:e=>{e&&(h.current=e,n(e))}}),t)},theme:S})),r)};"production"!==process.env.NODE_ENV&&(C.propTypes={value:u.default.number.isRequired,onSlackTimeSelected:u.default.func.isRequired,getDisplay:u.default.func.isRequired,options:u.default.arrayOf(u.default.shape({displayName:u.default.string.isRequired,value:u.default.number.isRequired}).isRequired).isRequired,id:u.default.string.isRequired,label:u.default.node.isRequired,icon:u.default.node.isRequired,viaPointIndex:u.default.number.isRequired});const P={de:{"add-via-button-label":"Füge Zwischenziel hinzu","add-via-duration-button-label":"Setze Umsteigezeit für Zwischenziel {{index}}","add-via-duration-button-label-close":"Schließe Umsteigezeit-Auswahl für Zwischenziel {{index}}","add-via-duration-button-label-open":"Öffne Umsteigezeit-Auswahl für Zwischenziel {{index}}","minute-short":"min","remove-via-button-label":"Entferne Zwischenziel {{index}}","swap-order-button-label":"Tausche Start mit Ziel","via-point":"Zwischenziel","via-point-index":"Zwischenziel {{index}}","viapoint-slack-amount":"Umsteigezeit"},en:{"add-via-button-label":"Add via point","add-via-duration-button-label":"Set stop duration at via point {{index}}","add-via-duration-button-label-close":"Close stop duration selector at via point {{index}}","add-via-duration-button-label-open":"Open stop duration selector at via point {{index}}","minute-short":"min","remove-via-button-label":"Remove via point {{index}}","swap-order-button-label":"Reverse origin and destination","via-point":"Via point","via-point-index":"Via point {{index}}","viapoint-slack-amount":"Stop duration"},fi:{"add-via-button-label":"Lisää välipiste","add-via-duration-button-label":"Aseta välipisteelle {{index}} pysähdyksen kesto","add-via-duration-button-label-close":"Avaa välipisteen {{index}} pysähdyksen kesto valitsin","add-via-duration-button-label-open":"Sulje välipisteen {{index}} pysähdyksen kesto valitsin","minute-short":"min","remove-via-button-label":"Poista välipiste {{index}}","swap-order-button-label":"Käännä reitin suunta vastakkaiseksi","via-point":"Välipiste","via-point-index":"Välipiste {{index}}","viapoint-slack-amount":"Pysähdyksen kesto"},pl:{"add-via-button-label":"Dodaj punkt pośredni","add-via-duration-button-label":"Wybierz czas postoju dla punktu {{index}}","add-via-duration-button-label-close":"Zamknij wybornik czasu postoju w punkcie {{index}}","add-via-duration-button-label-open":"Otwórz wybornik czasu postoju w punkcie {{index}}","minute-short":"min.","remove-via-button-label":"Usuń punkt pośredni {{index}}","swap-order-button-label":"Odwróć początek i cel","via-point":"Punkt pośredni","via-point-index":"Punkt pośredni {{index}}","viapoint-slack-amount":"Czas postoju"},sv:{"add-via-button-label":"Lägg till viapunkt","add-via-duration-button-label":"Ställ in varaktighet för viapunkten {{index}}","add-via-duration-button-label-close":"Stäng väljaren för varaktighet vid via-punkten {{index}}","add-via-duration-button-label-open":"Öppna väljaren för varaktighet vid via-punkten {{index}}","minute-short":"min","remove-via-button-label":"Ta bort viapunkt {{index}}","swap-order-button-label":"Sväng ruttens riktning till den motsatta","via-point":"Via punkt","via-point-index":"Via punkt {{index}}","viapoint-slack-amount":"Stoppets varaktighet"}};var N={"autosuggest-panel":"styles_autosuggest-panel__meNwd","autosuggest-searchpanel-text":"styles_autosuggest-searchpanel-text__-VQTg","origin-input-container":"styles_origin-input-container__p4Qik","destination-input-container":"styles_destination-input-container__jBY4I",row:"styles_row__1GhCD","viapoints-container":"styles_viapoints-container__FYp7K","viapoint-container":"styles_viapoint-container__8yh1M","light-gray-background":"styles_light-gray-background__4fyZs","viapoint-before":"styles_viapoint-before__t4saF","viapoint-input-container":"styles_viapoint-input-container__uZx95","viapoint-1":"styles_viapoint-1__8Mna8",viapoint:"styles_viapoint__vUO9L","viapoint-2":"styles_viapoint-2__-OoUa","viapoint-3":"styles_viapoint-3__vvivE","viapoint-4":"styles_viapoint-4__jS9k1","viapoint-5":"styles_viapoint-5__J4V5N","viapoint-slack-time":"styles_viapoint-slack-time__Xpo0G","select-wrapper":"styles_select-wrapper__1usZw","via-point-button-container":"styles_via-point-button-container__cI2JI","input-viapoint-slack-container":"styles_input-viapoint-slack-container__TNgVy","itinerary-search-control":"styles_itinerary-search-control__cEL1X",opposite:"styles_opposite__zQQhd","add-via-point":"styles_add-via-point__E-gGB","add-via-point-slack":"styles_add-via-point-slack__GKjFf","remove-via-point":"styles_remove-via-point__e9DMQ","combobox-icon":"styles_combobox-icon__d3k1e","time-input-icon":"styles_time-input-icon__M8dmw","rectangle-container":"styles_rectangle-container__AdbAA",rectangle:"styles_rectangle__1IO7E","search-panel-whitespace":"styles_search-panel-whitespace__Luhwx"};w(".styles_autosuggest-panel__meNwd {\n width: 100%; }\n\n.styles_autosuggest-searchpanel-text__-VQTg {\n font-size: 24px;\n font-weight: var(--font-weight-medium);\n letter-spacing: -0.8px;\n color: #333;\n line-height: 1;\n margin-bottom: 17px;\n margin-top: unset; }\n @media screen and (min-width: 768px) {\n .styles_autosuggest-searchpanel-text__-VQTg {\n letter-spacing: -0.8px;\n line-height: 27px;\n margin-bottom: 21px; } }\n\n.styles_origin-input-container__p4Qik,\n.styles_destination-input-container__jBY4I {\n display: flex;\n flex: 1 0 100%; }\n .styles_origin-input-container__p4Qik input[type='text'],\n .styles_destination-input-container__jBY4I input[type='text'] {\n margin: 0; }\n\n.styles_row__1GhCD {\n display: flex;\n flex-direction: row; }\n\n.styles_viapoints-container__FYp7K {\n display: flex;\n flex-direction: column; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M {\n display: flex;\n flex: 1 0 100%;\n min-height: 50px; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M:first-child {\n margin-top: 6px; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M:not(:first-child) {\n margin-top: 3px; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M:last-child {\n margin-bottom: 6px; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs {\n display: flex;\n padding: 3px 0;\n flex-direction: column;\n background: #f2f5f7;\n border-radius: 5px;\n width: 100%; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-before__t4saF {\n display: flex;\n min-width: 27px;\n justify-content: center;\n align-items: center; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-before__t4saF svg {\n fill: #888;\n height: 20px; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-input-container__uZx95 {\n display: flex;\n align-items: center;\n width: 100%; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-input-container__uZx95 input[type='text'] {\n margin: 0; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-input-container__uZx95.styles_viapoint-1__8Mna8 > div.styles_viapoint__vUO9L {\n z-index: 15; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-input-container__uZx95.styles_viapoint-2__-OoUa > div.styles_viapoint__vUO9L {\n z-index: 14; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-input-container__uZx95.styles_viapoint-3__vvivE > div.styles_viapoint__vUO9L {\n z-index: 13; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-input-container__uZx95.styles_viapoint-4__jS9k1 > div.styles_viapoint__vUO9L {\n z-index: 12; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-input-container__uZx95.styles_viapoint-5__J4V5N > div.styles_viapoint__vUO9L {\n z-index: 11; }\n\n.styles_viapoint-slack-time__Xpo0G {\n font-size: 13px;\n font-weight: normal;\n letter-spacing: -0.36px;\n color: #333;\n padding-left: 27px;\n padding-top: 12px;\n padding-bottom: 10px; }\n\n.styles_select-wrapper__1usZw {\n display: flex;\n height: 50px;\n margin-top: 9px;\n padding-left: 27px;\n padding-right: 47px; }\n\n.styles_via-point-button-container__cI2JI {\n display: flex; }\n .styles_via-point-button-container__cI2JI > div:nth-child(1) {\n order: 1;\n border-left: none; }\n .styles_via-point-button-container__cI2JI > div:nth-child(2) {\n order: 2;\n border-left: 1px solid rgba(151, 151, 151, 0.2); }\n\n.styles_input-viapoint-slack-container__TNgVy {\n display: flex;\n flex-direction: column; }\n\n.styles_itinerary-search-control__cEL1X {\n display: flex;\n align-items: center;\n justify-content: center;\n text-align: center;\n max-height: 50px;\n min-width: var(--width); }\n .styles_itinerary-search-control__cEL1X + .styles_itinerary-search-control__cEL1X {\n border-left: 1px solid rgba(151, 151, 151, 0.2); }\n .styles_itinerary-search-control__cEL1X .styles_opposite__zQQhd {\n display: flex;\n justify-content: center;\n align-items: center;\n height: 100%;\n min-width: 40px;\n cursor: pointer; }\n .styles_itinerary-search-control__cEL1X .styles_opposite__zQQhd svg {\n width: 19px;\n height: 17px; }\n .styles_itinerary-search-control__cEL1X .styles_add-via-point__E-gGB {\n display: flex;\n justify-content: center;\n align-items: center;\n height: 100%;\n min-width: 40px;\n cursor: pointer; }\n .styles_itinerary-search-control__cEL1X .styles_add-via-point__E-gGB svg {\n width: 20px;\n height: 22px; }\n .styles_itinerary-search-control__cEL1X .styles_add-via-point-slack__GKjFf {\n display: flex;\n justify-content: center;\n align-items: center;\n height: 100%;\n min-width: 47px;\n cursor: pointer; }\n .styles_itinerary-search-control__cEL1X .styles_add-via-point-slack__GKjFf svg {\n width: 18px;\n height: 19px; }\n .styles_itinerary-search-control__cEL1X .styles_remove-via-point__e9DMQ {\n display: flex;\n justify-content: center;\n align-items: center;\n height: 100%;\n max-height: 44px;\n min-width: 40px;\n cursor: pointer; }\n .styles_itinerary-search-control__cEL1X .styles_remove-via-point__e9DMQ svg {\n width: 14px;\n height: 14px; }\n\n.styles_combobox-icon__d3k1e {\n color: var(--color);\n border-left: solid #888 1px;\n height: 35px; }\n .styles_combobox-icon__d3k1e.styles_time-input-icon__M8dmw {\n padding: 9px 13px 0 13px; }\n .styles_combobox-icon__d3k1e.styles_time-input-icon__M8dmw svg {\n width: 18px;\n height: 19px; }\n\n.styles_rectangle-container__AdbAA {\n display: block;\n position: relative;\n height: 9px;\n z-index: 19; }\n .styles_rectangle-container__AdbAA .styles_rectangle__1IO7E {\n position: absolute;\n width: 4px;\n height: 21px;\n border-radius: 2px;\n background-color: #ddd;\n margin-left: 25px;\n margin-top: -5px; }\n\n.styles_search-panel-whitespace__Luhwx {\n min-width: 40px; }\n");const A=["children","className","enabled","onClick","onKeyPress","wide"];h.default.init({lng:"fi",fallbackLng:"fi",defaultNS:"translation",interpolation:{escapeValue:!1}});const V=()=>({}),O=e=>{if(void 0===e||v.default(e))return!0;const t=Object.keys(e);return 1===t.length||2===t.length&&t.includes("locationSlack")},R=e=>{let{children:t,className:n,enabled:i,onClick:o,onKeyPress:a,wide:s}=e,l=k(e,A);return _.default.createElement("div",{className:N["itinerary-search-control"],style:{"--width":s?"47px":"40px"}},o&&i&&_.default.createElement("div",Object.assign({},l,{className:n,onClick:o,onKeyPress:a,role:"button",tabIndex:"0"}),t))},I=e=>`${e/60} ${h.default.t("minute-short")}`,M=(e,t,n=!1)=>{const i=e.indexOf(t);return i>-1&&e.splice(i,1),n?e.map((e=>e>t?e-1:e)):e},L=e=>{const t=e&&(e.key||e.which||e.keyCode)||"";return!(!t||![13," ","Spacebar"].concat([32,"Enter"]).includes(t))&&(e.preventDefault(),!0)},j=e=>e&&e.address||e&&e.gps&&e.ready&&"Nykyinen sijainti"||"",F=e=>e&&!0===e.gps?"position":"location";"production"!==process.env.NODE_ENV&&(R.propTypes={children:u.default.node,className:u.default.string.isRequired,enabled:u.default.bool.isRequired,onClick:u.default.func.isRequired,onKeyPress:u.default.func.isRequired,wide:u.default.bool}),R.defaultProps={children:void 0,wide:!1};const z="production"!==process.env.NODE_ENV?u.default.shape({address:u.default.string,lat:u.default.number,lon:u.default.number,locationSlack:u.default.number}):{};class K extends _.default.Component{constructor(e){super(e),x(this,"storeReference",(e=>{this.setState((t=>({refs:[...t.refs,e]})))})),x(this,"handleFocusChange",(()=>{const{destination:e}=this.props;e&&e.lat||this.state.refs[1].focus()})),x(this,"updateViaPoints",(e=>{0!==e.length?this.props.updateViaPoints(e.filter((e=>!O(e)))):this.props.updateViaPoints([])})),x(this,"handleToggleViaPointSlackClick",(e=>{const{activeSlackInputs:t}=this.state;this.setState({activeSlackInputs:t.includes(e)?M(t,e):t.concat([e])})})),x(this,"handleViaPointSlackTimeSelected",((e,t)=>{this.props.addAnalyticsEvent&&this.props.addAnalyticsEvent({action:"EditViaPointStopDuration",category:"ItinerarySettings",name:e/60});const{viaPoints:n}=this.props;n[t].locationSlack=Number.parseInt(e,10),this.updateViaPoints(n)})),x(this,"handleViaPointLocationSelected",((e,t)=>{this.props.handleViaPointLocationSelected(e,t)})),x(this,"handleRemoveViaPointClick",(e=>{this.props.addAnalyticsEvent&&this.props.addAnalyticsEvent({action:"RemoveJourneyViaPoint",category:"ItinerarySettings",name:null});const{activeSlackInputs:t}=this.state,{viaPoints:n}=this.props;n.splice(e,1),this.setState({activeSlackInputs:M(t,e,!0)},(()=>this.updateViaPoints(n)))})),x(this,"handleAddViaPointClick",(()=>{this.props.addAnalyticsEvent&&this.props.addAnalyticsEvent({action:"AddJourneyViaPoint",category:"ItinerarySettings",name:"QuickSettingsButton"});const{viaPoints:e}=this.props;e.push({}),this.setState(this.state)})),x(this,"handleSwapOrderClick",(()=>{this.props.addAnalyticsEvent&&this.props.addAnalyticsEvent({action:"SwitchJourneyStartAndEndPointOrder",category:"ItinerarySettings",name:null});const{viaPoints:e}=this.props;e.reverse(),this.props.swapOrder()})),this.state={activeSlackInputs:[],refs:[]},Object.keys(P).forEach((e=>{h.default.addResourceBundle(e,"translation",P[e])}))}componentDidMount(){h.default.changeLanguage(this.props.lang)}componentDidUpdate(){h.default.language!==this.props.lang&&h.default.changeLanguage(this.props.lang)}render(){const{origin:e,searchPanelText:t,searchContext:n,disableAutoFocus:i,viaPoints:a,originMobileLabel:s,destinationMobileLabel:l,fontWeights:r,onFocusChange:c,showSwapControl:p,showViapointControl:u}=this.props,{activeSlackInputs:v}=this.state,y=(()=>{const e=[];for(let t=0;t<=9;t++){const n=10*t;e.push({displayName:`${n} ${h.default.t("minute-short")}`,value:60*n})}return e})(),m=(e,t=0)=>e&&e.locationSlack||t,b=e=>v.includes(e);return _.default.createElement("div",{className:d.default(N["autosuggest-panel"],this.props.isMobile&&"small"),style:{"--color":`${this.props.color}`,"--font-weight-medium":r.medium}}," ",t?_.default.createElement("div",null,_.default.createElement("h1",{className:N["autosuggest-searchpanel-text"]}," ",t)):null,_.default.createElement("div",{className:N["origin-input-container"]},_.default.createElement(g.default,{appElement:this.props.appElement,icon:"mapMarker",id:"origin",autoFocus:!0!==i&&(!this.props.isMobile&&!e.lat),storeRef:this.storeReference,refPoint:this.props.refPoint,className:F(e),placeholder:this.props.originPlaceHolder,value:j(e),searchContext:n,getAutoSuggestIcons:this.props.getAutoSuggestIcons,onSelect:this.props.onSelect,onClear:this.props.onClear,focusChange:c||this.handleFocusChange,lang:this.props.lang,sources:this.props.sources,targets:this.props.targets,filterResults:this.props.filterResults,isMobile:this.props.isMobile,color:this.props.color,hoverColor:this.props.hoverColor,mobileLabel:s,fontWeights:this.props.fontWeights,modeSet:this.props.modeSet,modeIconColors:this.props.modeIconColors,showScroll:this.props.showScroll,isEmbedded:this.props.isEmbedded}),(p||u)&&_.default.createElement(R,{className:N.opposite,enabled:p,onClick:()=>this.handleSwapOrderClick(),onKeyPress:e=>L(e)&&this.handleSwapOrderClick(),"aria-label":h.default.t("swap-order-button-label")},_.default.createElement(f.default,{img:"opposite",color:this.props.color}))),0===a.length&&_.default.createElement("div",{className:N["rectangle-container"]},_.default.createElement("div",{className:N.rectangle})),_.default.createElement(o.ReactSortable,{className:N["viapoints-container"],list:a,handle:`.${N["viapoint-before"]}`,animation:200,disabled:a.length<=1,setList:e=>{const t=e.filter((e=>!O(e)));t.length>0&&this.props.updateViaPoints(t)}},a.map(((e,t)=>_.default.createElement("div",{className:d.default(N["viapoint-container"]),key:`viapoint-${t}`},_.default.createElement("div",{className:N["light-gray-background"]},_.default.createElement("div",{className:N.row},_.default.createElement("div",{className:N["viapoint-before"],style:a.length>1?{cursor:"move"}:{}},a.length>1&&_.default.createElement(f.default,{img:"ellipsis",rotate:90,color:this.props.color})),_.default.createElement("div",{className:`${N["viapoint-input-container"]} ${N[`viapoint-${t+1}`]}`},_.default.createElement(g.default,{appElement:this.props.appElement,icon:"mapMarker-via",id:"via-point",ariaLabel:h.default.t("via-point-index",{index:t+1}),autoFocus:!0!==i&&!this.props.isMobile,placeholder:"via-point",className:"viapoint",searchContext:n,refPoint:this.props.refPoint,value:e&&e.address||"",onSelect:this.props.onSelect,onClear:this.props.onClear,handleViaPoints:e=>this.handleViaPointLocationSelected(e,t),lang:this.props.lang,sources:this.props.sources,targets:["Stops","Stations"],filterResults:this.props.filterResults,getAutoSuggestIcons:this.props.getAutoSuggestIcons,isMobile:this.props.isMobile,color:this.props.color,hoverColor:this.props.hoverColor,fontWeights:this.props.fontWeights,modeSet:this.props.modeSet,modeIconColors:this.props.modeIconColors,showScroll:this.props.showScroll})),this.props.showSlackControl&&_.default.createElement(R,{className:N["add-via-point-slack"],enabled:this.props.showViapointControl,onClick:()=>this.handleToggleViaPointSlackClick(t),onKeyPress:e=>L(e)&&this.handleToggleViaPointSlackClick(t),"aria-label":h.default.t(b(t)?"add-via-duration-button-label-open":"add-via-duration-button-label-close",{index:t+1}),wide:!0},_.default.createElement(f.default,{img:"time",color:this.props.color}))),!b(t)&&a[t]&&a[t].locationSlack>0&&_.default.createElement("span",{className:N["viapoint-slack-time"]},`${h.default.t("viapoint-slack-amount")}: ${I(a[t].locationSlack)}`),_.default.createElement("div",{className:d.default(N["input-viapoint-slack-container"],!b(t)&&"collapsed")},_.default.createElement("div",{className:N["select-wrapper"]},_.default.createElement(C,{id:`viapoint-slack-${t}`,label:h.default.t("viapoint-slack-amount"),options:y,value:m(a[t]),getDisplay:I,viaPointIndex:t,icon:_.default.createElement("span",{className:`${N["combobox-icon"]} ${N["time-input-icon"]}`},_.default.createElement(f.default,{img:"time",color:this.props.color})),onSlackTimeSelected:this.handleViaPointSlackTimeSelected})))),_.default.createElement(R,{className:N["remove-via-point"],enabled:this.props.showViapointControl,onClick:()=>this.handleRemoveViaPointClick(t),onKeyPress:e=>L(e)&&this.handleRemoveViaPointClick(t),"aria-label":h.default.t("remove-via-button-label",{index:t+1})},_.default.createElement(f.default,{img:"trash",color:this.props.color})))))),_.default.createElement("div",{className:N["destination-input-container"]},_.default.createElement(g.default,{appElement:this.props.appElement,icon:"mapMarker",id:"destination",autoFocus:!0!==i&&(!this.props.isMobile&&!Number.isNaN(e.lat)),storeRef:this.storeReference,placeholder:this.props.destinationPlaceHolder,className:F(this.props.destination),getAutoSuggestIcons:this.props.getAutoSuggestIcons,searchContext:n,onSelect:this.props.onSelect,onClear:this.props.onClear,refPoint:this.props.refPoint,value:j(this.props.destination),lang:this.props.lang,sources:this.props.sources,targets:this.props.targets,filterResults:this.props.filterResults,isMobile:this.props.isMobile,color:this.props.color,hoverColor:this.props.hoverColor,mobileLabel:l,fontWeights:this.props.fontWeights,modeSet:this.props.modeSet,modeIconColors:this.props.modeIconColors,showScroll:this.props.showScroll,isEmbedded:this.props.isEmbedded}),(p||u)&&_.default.createElement(R,{className:d.default(N["add-via-point"],N.more,a.length>4&&"collapsed"),enabled:u&&0===a.length,onClick:()=>this.handleAddViaPointClick(),onKeyPress:e=>L(e)&&this.handleAddViaPointClick(),"aria-label":h.default.t("add-via-button-label")},_.default.createElement(f.default,{img:"viapoint",width:1.25,height:1.375,color:this.props.color}))))}}x(K,"defaultProps",{origin:void 0,destination:void 0,viaPoints:[],originPlaceHolder:"give-origin",destinationPlaceHolder:"give-destination",swapOrder:void 0,updateViaPoints:()=>{},lang:"fi",searchPanelText:void 0,sources:[],targets:[],filterResults:void 0,onClear:void 0,getAutoSuggestIcons:void 0,refPoint:void 0,addAnalyticsEvent:void 0,disableAutoFocus:!1,isMobile:!1,handleViaPointLocationSelected:void 0,color:"#007ac9",hoverColor:"#0062a1",originMobileLabel:null,destinationMobileLabel:null,modeSet:void 0,modeIconColors:void 0,fontWeights:{medium:500},showScroll:!1,onFocusChange:void 0,isEmbedded:!1,showSwapControl:!1,showViapointControl:!1,showSlackControl:!1}),"production"!==process.env.NODE_ENV&&(K.propTypes={appElement:u.default.string.isRequired,origin:z,destination:z,originPlaceHolder:u.default.string,destinationPlaceHolder:u.default.string,viaPoints:u.default.arrayOf(z),updateViaPoints:u.default.func,handleViaPointLocationSelected:u.default.func,swapOrder:u.default.func,searchPanelText:u.default.string,searchContext:u.default.shape({URL_PELIAS:u.default.string}).isRequired,onSelect:u.default.func.isRequired,onClear:u.default.func,addAnalyticsEvent:u.default.func,lang:u.default.string,disableAutoFocus:u.default.bool,sources:u.default.arrayOf(u.default.string),targets:u.default.arrayOf(u.default.string),filterResults:u.default.func,isMobile:u.default.bool,color:u.default.string,hoverColor:u.default.string,originMobileLabel:u.default.string,destinationMobileLabel:u.default.string,refPoint:z,modeSet:u.default.string,modeIconColors:u.default.objectOf(u.default.string),getAutoSuggestIcons:u.default.objectOf(u.default.func),fontWeights:u.default.shape({medium:u.default.number}),showScroll:u.default.bool,onFocusChange:u.default.func,isEmbedded:u.default.bool,showSwapControl:u.default.bool,showViapointControl:u.default.bool,showSlackControl:u.default.bool}),e.default=K,e.getEmptyViaPointPlaceHolder=V,Object.defineProperty(e,"__esModule",{value:!0})}));
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../node_modules/@babel/runtime/helpers/esm/typeof.js","../../../../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","../../../../node_modules/@babel/runtime/helpers/esm/toPrimitive.js","../../../../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../../../../node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","../../../../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../../../../node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../../../../node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../../../../node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../../../../node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../../../../node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../../../../node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../../../../node_modules/style-inject/dist/style-inject.es.js","../src/helpers/Select.js","../src/helpers/translations.js","../src/index.js"],"sourcesContent":["export default function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function toPropertyKey(t) {\n var i = toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : String(i);\n}","import _typeof from \"./typeof.js\";\nexport default function toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}","import toPropertyKey from \"./toPropertyKey.js\";\nexport default function _defineProperty(obj, key, value) {\n key = toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}","import objectWithoutPropertiesLoose from \"./objectWithoutPropertiesLoose.js\";\nexport default function _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n}","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _iterableToArrayLimit(r, l) {\n var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n if (null != t) {\n var e,\n n,\n i,\n u,\n a = [],\n f = !0,\n o = !1;\n try {\n if (i = (t = t.call(r)).next, 0 === l) {\n if (Object(t) !== t) return;\n f = !1;\n } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);\n } catch (r) {\n o = !0, n = r;\n } finally {\n try {\n if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return;\n } finally {\n if (o) throw n;\n }\n }\n return a;\n }\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","export default function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","import PropTypes from 'prop-types';\nimport React, { useState, useEffect, useRef, useLayoutEffect } from 'react';\nimport Autosuggest from 'react-autosuggest';\nimport styles from './select.scss';\n\nconst Select = ({\n value,\n getDisplay,\n options,\n onSlackTimeSelected,\n viaPointIndex,\n id,\n label,\n icon,\n}) => {\n const [displayValue, changeDisplayValue] = useState(getDisplay(value));\n const [open, changeOpen] = useState(false);\n useEffect(() => changeDisplayValue(getDisplay(value)), [value]);\n const scrollRef = useRef(null);\n const scrollIndex = Math.floor(value / 600);\n const elementHeight = 50;\n useLayoutEffect(() => {\n if (open && scrollRef.current) {\n scrollRef.current.scrollTop = elementHeight * scrollIndex;\n }\n }, [value, open]);\n\n const inputId = `${id}-input`;\n const labelId = `${id}-label`;\n\n const onInputChange = (_, { newValue, method }) => {\n switch (method) {\n case 'enter':\n case 'click':\n onSlackTimeSelected(newValue, viaPointIndex);\n break;\n case 'escape':\n changeDisplayValue(value);\n break;\n case 'up':\n case 'down':\n default:\n break;\n }\n };\n return (\n <label className={styles['combobox-container']} htmlFor={inputId}>\n <span className={styles['left-column']}>\n <span className={styles['combobox-label']} id={labelId}>\n {label}\n </span>\n <Autosuggest\n id={id}\n suggestions={options}\n getSuggestionValue={s => s.value}\n renderSuggestion={s => s.displayName}\n onSuggestionsFetchRequested={() => null}\n shouldRenderSuggestions={() => true}\n focusInputOnSuggestionClick={false}\n onSuggestionsClearRequested={() => null}\n inputProps={{\n value: displayValue,\n onChange: onInputChange,\n onFocus: () => {\n changeOpen(true);\n },\n onBlur: () => {\n changeOpen(false);\n },\n id: inputId,\n 'aria-labelledby': labelId,\n 'aria-autocomplete': 'none',\n readOnly: true,\n }}\n renderSuggestionsContainer={({ containerProps, children }) => {\n // set refs for autosuggest library and scrollbar positioning\n const { ref, ...otherRefs } = containerProps;\n const containerRef = elem => {\n if (elem) {\n scrollRef.current = elem;\n ref(elem);\n }\n };\n return (\n <div tabIndex=\"-1\" {...otherRefs} ref={containerRef}>\n {children}\n </div>\n );\n }}\n theme={styles}\n />\n </span>\n {icon}\n </label>\n );\n};\n\nSelect.propTypes = {\n value: PropTypes.number.isRequired,\n onSlackTimeSelected: PropTypes.func.isRequired,\n getDisplay: PropTypes.func.isRequired,\n options: PropTypes.arrayOf(\n PropTypes.shape({\n displayName: PropTypes.string.isRequired,\n value: PropTypes.number.isRequired,\n }).isRequired,\n ).isRequired,\n id: PropTypes.string.isRequired,\n label: PropTypes.node.isRequired,\n icon: PropTypes.node.isRequired,\n viaPointIndex: PropTypes.number.isRequired,\n};\n\nexport default Select;\n","const translations = {\n de: {\n 'add-via-button-label': 'Füge Zwischenziel hinzu',\n 'add-via-duration-button-label':\n 'Setze Umsteigezeit für Zwischenziel {{index}}',\n 'add-via-duration-button-label-close':\n 'Schließe Umsteigezeit-Auswahl für Zwischenziel {{index}}',\n 'add-via-duration-button-label-open':\n 'Öffne Umsteigezeit-Auswahl für Zwischenziel {{index}}',\n 'minute-short': 'min',\n 'remove-via-button-label': 'Entferne Zwischenziel {{index}}',\n 'swap-order-button-label': 'Tausche Start mit Ziel',\n 'via-point': 'Zwischenziel',\n 'via-point-index': 'Zwischenziel {{index}}',\n 'viapoint-slack-amount': 'Umsteigezeit',\n },\n en: {\n 'add-via-button-label': 'Add via point',\n 'add-via-duration-button-label': 'Set stop duration at via point {{index}}',\n 'add-via-duration-button-label-close':\n 'Close stop duration selector at via point {{index}}',\n 'add-via-duration-button-label-open':\n 'Open stop duration selector at via point {{index}}',\n 'minute-short': 'min',\n 'remove-via-button-label': 'Remove via point {{index}}',\n 'swap-order-button-label': 'Reverse origin and destination',\n 'via-point': 'Via point',\n 'via-point-index': 'Via point {{index}}',\n 'viapoint-slack-amount': 'Stop duration',\n },\n fi: {\n 'add-via-button-label': 'Lisää välipiste',\n 'add-via-duration-button-label':\n 'Aseta välipisteelle {{index}} pysähdyksen kesto',\n 'add-via-duration-button-label-close':\n 'Avaa välipisteen {{index}} pysähdyksen kesto valitsin',\n 'add-via-duration-button-label-open':\n 'Sulje välipisteen {{index}} pysähdyksen kesto valitsin',\n 'minute-short': 'min',\n 'remove-via-button-label': 'Poista välipiste {{index}}',\n 'swap-order-button-label': 'Käännä reitin suunta vastakkaiseksi',\n 'via-point': 'Välipiste',\n 'via-point-index': 'Välipiste {{index}}',\n 'viapoint-slack-amount': 'Pysähdyksen kesto',\n },\n pl: {\n 'add-via-button-label': 'Dodaj punkt pośredni',\n 'add-via-duration-button-label':\n 'Wybierz czas postoju dla punktu {{index}}',\n 'add-via-duration-button-label-close':\n 'Zamknij wybornik czasu postoju w punkcie {{index}}',\n 'add-via-duration-button-label-open':\n 'Otwórz wybornik czasu postoju w punkcie {{index}}',\n 'minute-short': 'min.',\n 'remove-via-button-label': 'Usuń punkt pośredni {{index}}',\n 'swap-order-button-label': 'Odwróć początek i cel',\n 'via-point': 'Punkt pośredni',\n 'via-point-index': 'Punkt pośredni {{index}}',\n 'viapoint-slack-amount': 'Czas postoju',\n },\n sv: {\n 'add-via-button-label': 'Lägg till viapunkt',\n 'add-via-duration-button-label':\n 'Ställ in varaktighet för viapunkten {{index}}',\n 'add-via-duration-button-label-close':\n 'Stäng väljaren för varaktighet vid via-punkten {{index}}',\n 'add-via-duration-button-label-open':\n 'Öppna väljaren för varaktighet vid via-punkten {{index}}',\n 'minute-short': 'min',\n 'remove-via-button-label': 'Ta bort viapunkt {{index}}',\n 'swap-order-button-label': 'Sväng ruttens riktning till den motsatta',\n 'via-point': 'Via punkt',\n 'via-point-index': 'Via punkt {{index}}',\n 'viapoint-slack-amount': 'Stoppets varaktighet',\n },\n};\n\nexport default translations;\n","/* eslint-disable import/no-extraneous-dependencies */\nimport cx from 'classnames';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { ReactSortable } from 'react-sortablejs';\nimport i18next from 'i18next';\nimport DTAutoSuggest from '@digitransit-component/digitransit-component-autosuggest';\nimport Icon from '@digitransit-component/digitransit-component-icon';\nimport isEmpty from 'lodash/isEmpty';\nimport Select from './helpers/Select';\nimport translations from './helpers/translations';\nimport styles from './helpers/styles.scss';\n\ni18next.init({\n lng: 'fi',\n fallbackLng: 'fi',\n defaultNS: 'translation',\n interpolation: {\n escapeValue: false, // not needed for react as it escapes by default\n },\n});\n\nexport const getEmptyViaPointPlaceHolder = () => ({});\n\nconst isViaPointEmpty = viaPoint => {\n if (viaPoint === undefined || isEmpty(viaPoint)) {\n return true;\n }\n const keys = Object.keys(viaPoint);\n return (\n keys.length === 1 || (keys.length === 2 && keys.includes('locationSlack'))\n );\n};\n\nconst ItinerarySearchControl = ({\n children,\n className,\n enabled,\n onClick,\n onKeyPress,\n wide,\n ...rest\n}) => (\n <div\n className={styles['itinerary-search-control']}\n style={{ '--width': wide ? '47px' : '40px' }}\n >\n {onClick && enabled && (\n <div\n {...rest}\n className={className}\n onClick={onClick}\n onKeyPress={onKeyPress}\n role=\"button\"\n tabIndex=\"0\"\n >\n {children}\n </div>\n )}\n </div>\n);\n\nconst getSlackDisplay = slackInSeconds => {\n return `${slackInSeconds / 60} ${i18next.t('minute-short')}`;\n};\n\nconst updateViaPointSlack = (\n activeViaPointSlacks,\n updatedViaPointIndex,\n viaPointRemoved = false,\n) => {\n const foundAtIndex = activeViaPointSlacks.indexOf(updatedViaPointIndex);\n if (foundAtIndex > -1) {\n activeViaPointSlacks.splice(foundAtIndex, 1);\n }\n return viaPointRemoved\n ? activeViaPointSlacks.map(value =>\n value > updatedViaPointIndex ? value - 1 : value,\n )\n : activeViaPointSlacks;\n};\n\nconst isKeyboardSelectionEvent = event => {\n const space = [13, ' ', 'Spacebar'];\n const enter = [32, 'Enter'];\n const key = (event && (event.key || event.which || event.keyCode)) || '';\n if (!key || !space.concat(enter).includes(key)) {\n return false;\n }\n event.preventDefault();\n return true;\n};\n\nconst value = location =>\n (location && location.address) ||\n (location && location.gps && location.ready && 'Nykyinen sijainti') ||\n '';\n\nconst getLocationType = location =>\n location && location.gps === true ? 'position' : 'location';\n\nconst getSlackTimeOptions = () => {\n const timeOptions = [];\n for (let i = 0; i <= 9; i++) {\n const valueInMinutes = i * 10;\n timeOptions.push({\n displayName: `${valueInMinutes} ${i18next.t('minute-short')}`,\n value: valueInMinutes * 60,\n });\n }\n return timeOptions;\n};\n\nItinerarySearchControl.propTypes = {\n children: PropTypes.node,\n className: PropTypes.string.isRequired,\n enabled: PropTypes.bool.isRequired,\n onClick: PropTypes.func.isRequired,\n onKeyPress: PropTypes.func.isRequired,\n wide: PropTypes.bool,\n};\n\nItinerarySearchControl.defaultProps = {\n children: undefined,\n wide: false,\n};\n\n/**\n * Panel that renders two DTAutosuggest search fields, including viapoint handling\n *\n * @example\n * const searchContext = {\n * isPeliasLocationAware: false // true / false does Let Pelias suggest based on current user location\n * minimalRegexp: undefined // used for testing min. regexp. For example: new RegExp('.{2,}'),\n * lineRegexp: undefined // identify searches for route numbers/labels: bus | train | metro. For example: new RegExp(\n * // '(^[0-9]+[a-z]?$|^[yuleapinkrtdz]$|(^m[12]?b?$))',\n * // 'i',\n * // ),\n * URL_PELIAS: '' // url for pelias searches\n * feedIDs: ['HSL', 'HSLLautta'] // FeedId's like [HSL, HSLLautta]\n * geocodingSources: ['oa','osm','nlsfi'] // sources for geocoding\n * geocodingSearchParams; {} // Searchparmas fro geocoding\n * getFavouriteLocations: () => ({}), // Function that returns array of favourite locations.\n * getFavouriteStops: () => ({}), // Function that returns array of favourite stops.\n * getLanguage: () => ({}), // Function that returns current language.\n * getFavouriteRoutes: () => ({}), // Function that returns array of favourite routes.\n * getPositions: () => ({}), // Function that returns user's geolocation.\n * getRoutesQuery: () => ({}), // Function that returns query for fetching routes.\n * getStopAndStationsQuery: () => ({}), // Function that fetches favourite stops and stations from graphql API.\n * getFavouriteRoutesQuery: () => ({}), // Function that returns query for fetching favourite routes.\n * getFavouriteVehicleRentalStations: () => ({}), // Function that returns favourite bike rental station.\n * getFavouriteVehicleRentalStationsQuery: () => ({}), // Function that returns query for fetching favourite bike rental stations.\n * startLocationWatch: () => ({}), // Function that locates users geolocation.\n * saveSearch: () => ({}), // Function that saves search to old searches store.\n * clearOldSearches: () => ({}), // Function that clears old searches store.\n * getFutureRoutes: () => ({}), // Function that return future routes\n * saveFutureRoute: () => ({}), // Function that saves a future route\n * clearFutureRoutes: () => ({}), // Function that clears future routes\n * };\n *\n * const origin = {\n * lat: 60.169196,\n * lon: 24.957674,\n * address: 'Aleksanterinkatu, Helsinki',\n * set: true,\n * ready: true,\n * }\n *\n * const destination = {\n * lat: 60.199093,\n * lon: 24.940536,\n * address: 'Opastinsilta 6, Helsinki',\n * set: true,\n * ready: true,\n * }\n * onSelect(item, id) {\n * return null; // Define what to do when a suggestion is being selected. None by default.\n * }\n * onClear(id) {\n * return null; // Define what to do when a suggestion is being selected. None by default.\n * }\n * const getAutoSuggestIcons: {\n * // Called for every city bike station rendered as a search suggestion. Should return the icon and\n * // color used for that station. Two icons are available, 'citybike-stop-digitransit' anditybike-stop-digitransit-secondary'.\n * citybikes: station => {\n * return ['citybike-stop-digitransit', '#f2b62d'];\n * }\n * }\n * const targets = ['Locations', 'Stops', 'Routes']; // Defines what you are searching. all available options are Locations, Stops, Routes, VehicleRentalStations, FutureRoutes, MapPosition and CurrentPosition. Leave empty to search all targets.\n * const sources = ['Favourite', 'History', 'Datasource'] // Defines where you are searching. all available are: Favourite, History (previously searched searches), and Datasource. Leave empty to use all sources.\n * <DTAutosuggestPanel\n * appElement={appElement} // Required. Root element's id. Needed for react-modal component.\n * origin={origin} // Selected origin point\n * destination={destination} // Selected destination point\n * originPlaceHolder={'Give origin'} // Optional Give string shown initially inside origin search field\n * destinationPlaceHolder={'Give destination'} // Optional Give string shown initally inside destination search field\n * initialViaPoints={[]} // Optional. If showViapointControl is set to true, pass initial via points to the panel. Currently no default implementation is given.\n * updateViaPoints={() => return []} // Optional. If showViapointControl is set to true, define how to update your via point list with this function. Currenlty no default implementation is given.\n * swapOrder={() => return null} // Optional. If showSwapControl is set to true, define how to swap order of your points (origin, destination, viapoints). Currently no default implementation is given.\n * searchContext={searchContext}\n * getAutoSuggestIcons={getAutoSuggestIcons}\n * onSelect={this.onSelect}\n * onClear={this.onClear}\n * lang=\"fi\" // Define language fi sv or en.\n * addAnalyticsEvent={null} // Optional. you can record an analytics event if you wish. if passed, component will pass an category, action, name parameters to addAnalyticsEvent\n * disableAutoFocus={false} // Optional. use this to disable autofocus completely from DTAutosuggestPanel\n * sources={sources}\n * targets={targets}\n * isMobile // Optional. Defaults to false. Whether to use mobile search.\n * originMobileLabel=\"Origin label\" // Optional. Custom label text for origin field on mobile.\n * destinationMobileLabel=\"Destination label\" // Optional. Custom label text for destination field on mobile.\n * handleFocusChange={() => {}} // Optional. If defined overrides default onFocusChange behaviour\n * showSwapControl={false} // Optional.\n * showViapointControl={false} // Optional.\n */\n\nconst locationShape = PropTypes.shape({\n address: PropTypes.string,\n lat: PropTypes.number,\n lon: PropTypes.number,\n locationSlack: PropTypes.number,\n});\n\nclass DTAutosuggestPanel extends React.Component {\n static propTypes = {\n appElement: PropTypes.string.isRequired,\n origin: locationShape,\n destination: locationShape,\n originPlaceHolder: PropTypes.string,\n destinationPlaceHolder: PropTypes.string,\n viaPoints: PropTypes.arrayOf(locationShape),\n updateViaPoints: PropTypes.func,\n handleViaPointLocationSelected: PropTypes.func,\n swapOrder: PropTypes.func,\n searchPanelText: PropTypes.string,\n searchContext: PropTypes.shape({\n URL_PELIAS: PropTypes.string,\n }).isRequired,\n onSelect: PropTypes.func.isRequired,\n onClear: PropTypes.func,\n addAnalyticsEvent: PropTypes.func,\n lang: PropTypes.string,\n disableAutoFocus: PropTypes.bool,\n sources: PropTypes.arrayOf(PropTypes.string),\n targets: PropTypes.arrayOf(PropTypes.string),\n filterResults: PropTypes.func,\n isMobile: PropTypes.bool,\n color: PropTypes.string,\n hoverColor: PropTypes.string,\n originMobileLabel: PropTypes.string,\n destinationMobileLabel: PropTypes.string,\n refPoint: locationShape,\n modeSet: PropTypes.string,\n modeIconColors: PropTypes.objectOf(PropTypes.string),\n getAutoSuggestIcons: PropTypes.objectOf(PropTypes.func),\n fontWeights: PropTypes.shape({\n medium: PropTypes.number,\n }),\n showScroll: PropTypes.bool,\n onFocusChange: PropTypes.func,\n isEmbedded: PropTypes.bool,\n showSwapControl: PropTypes.bool,\n showViapointControl: PropTypes.bool,\n showSlackControl: PropTypes.bool,\n };\n\n static defaultProps = {\n origin: undefined,\n destination: undefined,\n viaPoints: [],\n originPlaceHolder: 'give-origin',\n destinationPlaceHolder: 'give-destination',\n swapOrder: undefined,\n updateViaPoints: () => {},\n lang: 'fi',\n searchPanelText: undefined,\n sources: [],\n targets: [],\n filterResults: undefined,\n onClear: undefined,\n getAutoSuggestIcons: undefined,\n refPoint: undefined,\n addAnalyticsEvent: undefined,\n disableAutoFocus: false,\n isMobile: false,\n handleViaPointLocationSelected: undefined,\n color: '#007ac9',\n hoverColor: '#0062a1',\n originMobileLabel: null,\n destinationMobileLabel: null,\n modeSet: undefined,\n modeIconColors: undefined,\n fontWeights: {\n medium: 500,\n },\n showScroll: false,\n onFocusChange: undefined,\n isEmbedded: false,\n showSwapControl: false,\n showViapointControl: false,\n showSlackControl: false,\n };\n\n constructor(props) {\n super(props);\n this.state = {\n activeSlackInputs: [],\n refs: [],\n };\n Object.keys(translations).forEach(lang => {\n i18next.addResourceBundle(lang, 'translation', translations[lang]);\n });\n }\n\n componentDidMount() {\n i18next.changeLanguage(this.props.lang);\n }\n\n componentDidUpdate() {\n if (i18next.language !== this.props.lang) {\n i18next.changeLanguage(this.props.lang);\n }\n }\n\n storeReference = ref => {\n this.setState(prevState => ({ refs: [...prevState.refs, ref] }));\n };\n\n handleFocusChange = () => {\n const { destination } = this.props;\n if (!destination || !destination.lat) {\n this.state.refs[1].focus();\n }\n };\n\n updateViaPoints = viaPoints => {\n if (viaPoints.length === 0) {\n this.props.updateViaPoints([]);\n return;\n }\n this.props.updateViaPoints(viaPoints.filter(vp => !isViaPointEmpty(vp)));\n };\n\n handleToggleViaPointSlackClick = viaPointIndex => {\n const { activeSlackInputs } = this.state;\n this.setState({\n activeSlackInputs: activeSlackInputs.includes(viaPointIndex)\n ? updateViaPointSlack(activeSlackInputs, viaPointIndex)\n : activeSlackInputs.concat([viaPointIndex]),\n });\n };\n\n handleViaPointSlackTimeSelected = (slackTimeInSeconds, i) => {\n if (this.props.addAnalyticsEvent) {\n this.props.addAnalyticsEvent({\n action: 'EditViaPointStopDuration',\n category: 'ItinerarySettings',\n name: slackTimeInSeconds / 60,\n });\n }\n const { viaPoints } = this.props;\n viaPoints[i].locationSlack = Number.parseInt(slackTimeInSeconds, 10);\n this.updateViaPoints(viaPoints);\n };\n\n handleViaPointLocationSelected = (viaPointLocation, i) => {\n this.props.handleViaPointLocationSelected(viaPointLocation, i);\n };\n\n handleRemoveViaPointClick = viaPointIndex => {\n if (this.props.addAnalyticsEvent) {\n this.props.addAnalyticsEvent({\n action: 'RemoveJourneyViaPoint',\n category: 'ItinerarySettings',\n name: null,\n });\n }\n const { activeSlackInputs } = this.state;\n const { viaPoints } = this.props;\n viaPoints.splice(viaPointIndex, 1);\n this.setState(\n {\n activeSlackInputs: updateViaPointSlack(\n activeSlackInputs,\n viaPointIndex,\n true,\n ),\n },\n () => this.updateViaPoints(viaPoints),\n );\n };\n\n handleAddViaPointClick = () => {\n if (this.props.addAnalyticsEvent) {\n this.props.addAnalyticsEvent({\n action: 'AddJourneyViaPoint',\n category: 'ItinerarySettings',\n name: 'QuickSettingsButton',\n });\n }\n const { viaPoints } = this.props;\n viaPoints.push(getEmptyViaPointPlaceHolder());\n // We need to update the state so that placeHolder will show up in panel.\n // eslint-disable-next-line react/no-access-state-in-setstate\n this.setState(this.state);\n };\n\n handleSwapOrderClick = () => {\n if (this.props.addAnalyticsEvent) {\n this.props.addAnalyticsEvent({\n action: 'SwitchJourneyStartAndEndPointOrder',\n category: 'ItinerarySettings',\n name: null,\n });\n }\n const { viaPoints } = this.props;\n viaPoints.reverse();\n this.props.swapOrder();\n };\n\n render() {\n const {\n origin,\n searchPanelText,\n searchContext,\n disableAutoFocus,\n viaPoints,\n originMobileLabel,\n destinationMobileLabel,\n fontWeights,\n onFocusChange,\n showSwapControl,\n showViapointControl,\n } = this.props;\n const { activeSlackInputs } = this.state;\n const slackTime = getSlackTimeOptions();\n const defaultSlackTimeValue = 0;\n const getViaPointSlackTimeOrDefault = (\n viaPoint,\n defaultValue = defaultSlackTimeValue,\n ) => (viaPoint && viaPoint.locationSlack) || defaultValue;\n const isViaPointSlackTimeInputActive = index =>\n activeSlackInputs.includes(index);\n return (\n <div\n className={cx([\n styles['autosuggest-panel'],\n {\n small: this.props.isMobile,\n },\n ])}\n style={{\n '--color': `${this.props.color}`,\n '--font-weight-medium': fontWeights.medium,\n }}\n >\n {' '}\n {searchPanelText ? (\n <div>\n <h1 className={styles['autosuggest-searchpanel-text']}>\n {' '}\n {searchPanelText}\n </h1>\n </div>\n ) : null}\n <div className={styles['origin-input-container']}>\n <DTAutoSuggest\n appElement={this.props.appElement}\n icon=\"mapMarker\"\n id=\"origin\"\n autoFocus={\n disableAutoFocus === true\n ? false\n : !this.props.isMobile && !origin.lat\n }\n storeRef={this.storeReference}\n refPoint={this.props.refPoint}\n className={getLocationType(origin)}\n placeholder={this.props.originPlaceHolder}\n value={value(origin)}\n searchContext={searchContext}\n getAutoSuggestIcons={this.props.getAutoSuggestIcons}\n onSelect={this.props.onSelect}\n onClear={this.props.onClear}\n focusChange={onFocusChange || this.handleFocusChange}\n lang={this.props.lang}\n sources={this.props.sources}\n targets={this.props.targets}\n filterResults={this.props.filterResults}\n isMobile={this.props.isMobile}\n color={this.props.color}\n hoverColor={this.props.hoverColor}\n mobileLabel={originMobileLabel}\n fontWeights={this.props.fontWeights}\n modeSet={this.props.modeSet}\n modeIconColors={this.props.modeIconColors}\n showScroll={this.props.showScroll}\n isEmbedded={this.props.isEmbedded}\n />\n {(showSwapControl || showViapointControl) && (\n <ItinerarySearchControl\n className={styles.opposite}\n enabled={showSwapControl}\n onClick={() => this.handleSwapOrderClick()}\n onKeyPress={e =>\n isKeyboardSelectionEvent(e) && this.handleSwapOrderClick()\n }\n aria-label={i18next.t('swap-order-button-label')}\n >\n <Icon img=\"opposite\" color={this.props.color} />\n </ItinerarySearchControl>\n )}\n </div>\n {viaPoints.length === 0 && (\n <div className={styles['rectangle-container']}>\n <div className={styles.rectangle} />\n </div>\n )}\n <ReactSortable\n className={styles['viapoints-container']}\n list={viaPoints}\n handle={`.${styles['viapoint-before']}`}\n animation={200}\n disabled={viaPoints.length <= 1}\n setList={items => {\n const newViaPoints = items.filter(vp => !isViaPointEmpty(vp));\n if (newViaPoints.length > 0) {\n this.props.updateViaPoints(newViaPoints);\n }\n }}\n >\n {viaPoints.map((o, i) => (\n <div\n className={cx(styles['viapoint-container'])}\n key={`viapoint-${i}`} // eslint-disable-line\n >\n <div className={styles['light-gray-background']}>\n <div className={styles.row}>\n <div\n className={styles['viapoint-before']}\n style={viaPoints.length > 1 ? { cursor: 'move' } : {}}\n >\n {viaPoints.length > 1 && (\n <Icon\n img=\"ellipsis\"\n rotate={90}\n color={this.props.color}\n />\n )}\n </div>\n <div\n className={cx(\n `${styles['viapoint-input-container']} ${\n styles[`viapoint-${i + 1}`]\n }`,\n )}\n >\n <DTAutoSuggest\n appElement={this.props.appElement}\n icon=\"mapMarker-via\"\n id=\"via-point\"\n ariaLabel={i18next.t('via-point-index', { index: i + 1 })}\n autoFocus={\n disableAutoFocus === true ? false : !this.props.isMobile\n }\n placeholder=\"via-point\"\n className=\"viapoint\"\n searchContext={searchContext}\n refPoint={this.props.refPoint}\n value={(o && o.address) || ''}\n onSelect={this.props.onSelect}\n onClear={this.props.onClear}\n handleViaPoints={item =>\n this.handleViaPointLocationSelected(item, i)\n }\n lang={this.props.lang}\n sources={this.props.sources}\n targets={['Stops', 'Stations']}\n filterResults={this.props.filterResults}\n getAutoSuggestIcons={this.props.getAutoSuggestIcons}\n isMobile={this.props.isMobile}\n color={this.props.color}\n hoverColor={this.props.hoverColor}\n fontWeights={this.props.fontWeights}\n modeSet={this.props.modeSet}\n modeIconColors={this.props.modeIconColors}\n showScroll={this.props.showScroll}\n />\n </div>\n {this.props.showSlackControl && (\n <ItinerarySearchControl\n className={styles['add-via-point-slack']}\n enabled={this.props.showViapointControl}\n onClick={() => this.handleToggleViaPointSlackClick(i)}\n onKeyPress={e =>\n isKeyboardSelectionEvent(e) &&\n this.handleToggleViaPointSlackClick(i)\n }\n aria-label={i18next.t(\n isViaPointSlackTimeInputActive(i)\n ? 'add-via-duration-button-label-open'\n : 'add-via-duration-button-label-close',\n { index: i + 1 },\n )}\n wide\n >\n <Icon img=\"time\" color={this.props.color} />\n </ItinerarySearchControl>\n )}\n </div>\n {!isViaPointSlackTimeInputActive(i) &&\n viaPoints[i] &&\n viaPoints[i].locationSlack > 0 && (\n <span\n className={styles['viapoint-slack-time']}\n >{`${i18next.t('viapoint-slack-amount')}: ${getSlackDisplay(\n viaPoints[i].locationSlack,\n )}`}</span>\n )}\n <div\n className={cx(styles['input-viapoint-slack-container'], {\n collapsed: !isViaPointSlackTimeInputActive(i),\n })}\n >\n <div className={styles['select-wrapper']}>\n <Select\n id={`viapoint-slack-${i}`}\n label={i18next.t('viapoint-slack-amount')}\n options={slackTime}\n value={getViaPointSlackTimeOrDefault(viaPoints[i])}\n getDisplay={getSlackDisplay}\n viaPointIndex={i}\n icon={\n <span\n className={`${styles['combobox-icon']} ${styles['time-input-icon']}`}\n >\n <Icon img=\"time\" color={this.props.color} />\n </span>\n }\n onSlackTimeSelected={this.handleViaPointSlackTimeSelected}\n />\n </div>\n </div>\n </div>\n <ItinerarySearchControl\n className={styles['remove-via-point']}\n enabled={this.props.showViapointControl}\n onClick={() => this.handleRemoveViaPointClick(i)}\n onKeyPress={e =>\n isKeyboardSelectionEvent(e) &&\n this.handleRemoveViaPointClick(i)\n }\n aria-label={i18next.t('remove-via-button-label', {\n index: i + 1,\n })}\n >\n <Icon img=\"trash\" color={this.props.color} />\n </ItinerarySearchControl>\n </div>\n ))}\n </ReactSortable>\n <div className={styles['destination-input-container']}>\n <DTAutoSuggest\n appElement={this.props.appElement}\n icon=\"mapMarker\"\n id=\"destination\"\n autoFocus={\n disableAutoFocus === true\n ? false\n : !this.props.isMobile && !Number.isNaN(origin.lat)\n }\n storeRef={this.storeReference}\n placeholder={this.props.destinationPlaceHolder}\n className={getLocationType(this.props.destination)}\n getAutoSuggestIcons={this.props.getAutoSuggestIcons}\n searchContext={searchContext}\n onSelect={this.props.onSelect}\n onClear={this.props.onClear}\n refPoint={this.props.refPoint}\n value={value(this.props.destination)}\n lang={this.props.lang}\n sources={this.props.sources}\n targets={this.props.targets}\n filterResults={this.props.filterResults}\n isMobile={this.props.isMobile}\n color={this.props.color}\n hoverColor={this.props.hoverColor}\n mobileLabel={destinationMobileLabel}\n fontWeights={this.props.fontWeights}\n modeSet={this.props.modeSet}\n modeIconColors={this.props.modeIconColors}\n showScroll={this.props.showScroll}\n isEmbedded={this.props.isEmbedded}\n />\n {(showSwapControl || showViapointControl) && (\n <ItinerarySearchControl\n className={cx(styles['add-via-point'], styles.more, {\n collapsed: viaPoints.length > 4,\n })}\n enabled={showViapointControl && viaPoints.length === 0}\n onClick={() => this.handleAddViaPointClick()}\n onKeyPress={e =>\n isKeyboardSelectionEvent(e) && this.handleAddViaPointClick()\n }\n aria-label={i18next.t('add-via-button-label')}\n >\n <Icon\n img=\"viapoint\"\n width={1.25}\n height={1.375}\n color={this.props.color}\n />\n </ItinerarySearchControl>\n )}\n </div>\n </div>\n );\n }\n}\n\nexport default DTAutosuggestPanel;\n"],"names":["_typeof","o","Symbol","iterator","constructor","prototype","toPropertyKey","t","i","r","e","toPrimitive","call","TypeError","String","Number","_defineProperty","obj","key","value","Object","defineProperty","enumerable","configurable","writable","_objectWithoutProperties","source","excluded","target","sourceKeys","keys","length","indexOf","objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","_arrayLikeToArray","arr","len","arr2","Array","_slicedToArray","isArray","arrayWithHoles","l","n","u","a","f","next","done","push","iterableToArrayLimit","minLen","arrayLikeToArray","toString","slice","name","from","test","unsupportedIterableToArray","nonIterableRest","styleInject","css","ref","insertAt","document","head","getElementsByTagName","style","createElement","type","firstChild","insertBefore","appendChild","styleSheet","cssText","createTextNode","Select","_ref","getDisplay","options","onSlackTimeSelected","viaPointIndex","id","label","icon","_useState2","useState","displayValue","changeDisplayValue","_useState4","open","changeOpen","useEffect","scrollRef","useRef","scrollIndex","Math","floor","useLayoutEffect","current","scrollTop","inputId","labelId","React","className","styles","htmlFor","Autosuggest","suggestions","getSuggestionValue","s","renderSuggestion","displayName","onSuggestionsFetchRequested","shouldRenderSuggestions","focusInputOnSuggestionClick","onSuggestionsClearRequested","inputProps","onChange","onInputChange","_","_ref2","newValue","method","onFocus","onBlur","readOnly","renderSuggestionsContainer","_ref3","containerProps","children","otherRefs","_excluded","assign","tabIndex","elem","theme","process","env","NODE_ENV","propTypes","PropTypes","number","isRequired","func","arrayOf","shape","string","node","translations","de","en","fi","pl","sv","i18next__default","init","lng","fallbackLng","defaultNS","interpolation","escapeValue","getEmptyViaPointPlaceHolder","isViaPointEmpty","viaPoint","undefined","isEmpty","includes","ItinerarySearchControl","enabled","onClick","onKeyPress","wide","rest","role","getSlackDisplay","slackInSeconds","i18next","updateViaPointSlack","activeViaPointSlacks","updatedViaPointIndex","viaPointRemoved","arguments","foundAtIndex","splice","map","isKeyboardSelectionEvent","event","which","keyCode","concat","preventDefault","location","address","gps","ready","getLocationType","bool","defaultProps","locationShape","lat","lon","locationSlack","DTAutosuggestPanel","Component","props","super","this","setState","prevState","refs","destination","state","focus","viaPoints","updateViaPoints","filter","vp","activeSlackInputs","slackTimeInSeconds","addAnalyticsEvent","action","category","parseInt","viaPointLocation","handleViaPointLocationSelected","reverse","swapOrder","forEach","lang","addResourceBundle","componentDidMount","changeLanguage","componentDidUpdate","language","render","_this$props","origin","searchPanelText","searchContext","disableAutoFocus","originMobileLabel","destinationMobileLabel","fontWeights","onFocusChange","showSwapControl","showViapointControl","slackTime","getSlackTimeOptions","timeOptions","valueInMinutes","getViaPointSlackTimeOrDefault","defaultValue","isViaPointSlackTimeInputActive","index","cx","isMobile","color","medium","DTAutoSuggest","appElement","autoFocus","storeRef","storeReference","refPoint","placeholder","originPlaceHolder","getAutoSuggestIcons","onSelect","onClear","focusChange","handleFocusChange","sources","targets","filterResults","hoverColor","mobileLabel","modeSet","modeIconColors","showScroll","isEmbedded","opposite","handleSwapOrderClick","Icon","img","rectangle","ReactSortable","list","handle","animation","disabled","setList","items","newViaPoints","row","cursor","rotate","ariaLabel","handleViaPoints","item","showSlackControl","handleToggleViaPointSlackClick","handleViaPointSlackTimeSelected","handleRemoveViaPointClick","isNaN","destinationPlaceHolder","more","handleAddViaPointClick","width","height","URL_PELIAS","objectOf"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../node_modules/@babel/runtime/helpers/esm/typeof.js","../../../../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","../../../../node_modules/@babel/runtime/helpers/esm/toPrimitive.js","../../../../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../../../../node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","../../../../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../../../../node_modules/style-inject/dist/style-inject.es.js","../src/helpers/Select.js","../src/helpers/translations.js","../src/index.js"],"sourcesContent":["function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nexport { _typeof as default };","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nfunction toPropertyKey(t) {\n var i = toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nexport { toPropertyKey as default };","import _typeof from \"./typeof.js\";\nfunction toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nexport { toPrimitive as default };","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperty(e, r, t) {\n return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n value: t,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : e[r] = t, e;\n}\nexport { _defineProperty as default };","import objectWithoutPropertiesLoose from \"./objectWithoutPropertiesLoose.js\";\nfunction _objectWithoutProperties(e, t) {\n if (null == e) return {};\n var o,\n r,\n i = objectWithoutPropertiesLoose(e, t);\n if (Object.getOwnPropertySymbols) {\n var n = Object.getOwnPropertySymbols(e);\n for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]);\n }\n return i;\n}\nexport { _objectWithoutProperties as default };","function _objectWithoutPropertiesLoose(r, e) {\n if (null == r) return {};\n var t = {};\n for (var n in r) if ({}.hasOwnProperty.call(r, n)) {\n if (-1 !== e.indexOf(n)) continue;\n t[n] = r[n];\n }\n return t;\n}\nexport { _objectWithoutPropertiesLoose as default };","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","import PropTypes from 'prop-types';\nimport React, { useState, useEffect, useRef, useLayoutEffect } from 'react';\nimport Autosuggest from 'react-autosuggest';\nimport styles from './select.scss';\n\nconst Select = ({\n value,\n getDisplay,\n options,\n onSlackTimeSelected,\n viaPointIndex,\n id,\n label,\n icon,\n}) => {\n const [displayValue, changeDisplayValue] = useState(getDisplay(value));\n const [open, changeOpen] = useState(false);\n useEffect(() => changeDisplayValue(getDisplay(value)), [value]);\n const scrollRef = useRef(null);\n const scrollIndex = Math.floor(value / 600);\n const elementHeight = 50;\n useLayoutEffect(() => {\n if (open && scrollRef.current) {\n scrollRef.current.scrollTop = elementHeight * scrollIndex;\n }\n }, [value, open]);\n\n const inputId = `${id}-input`;\n const labelId = `${id}-label`;\n\n const onInputChange = (_, { newValue, method }) => {\n switch (method) {\n case 'enter':\n case 'click':\n onSlackTimeSelected(newValue, viaPointIndex);\n break;\n case 'escape':\n changeDisplayValue(value);\n break;\n case 'up':\n case 'down':\n default:\n break;\n }\n };\n return (\n <label className={styles['combobox-container']} htmlFor={inputId}>\n <span className={styles['left-column']}>\n <span className={styles['combobox-label']} id={labelId}>\n {label}\n </span>\n <Autosuggest\n id={id}\n suggestions={options}\n getSuggestionValue={s => s.value}\n renderSuggestion={s => s.displayName}\n onSuggestionsFetchRequested={() => null}\n shouldRenderSuggestions={() => true}\n focusInputOnSuggestionClick={false}\n onSuggestionsClearRequested={() => null}\n inputProps={{\n value: displayValue,\n onChange: onInputChange,\n onFocus: () => {\n changeOpen(true);\n },\n onBlur: () => {\n changeOpen(false);\n },\n id: inputId,\n 'aria-labelledby': labelId,\n 'aria-autocomplete': 'none',\n readOnly: true,\n }}\n renderSuggestionsContainer={({ containerProps, children }) => {\n // set refs for autosuggest library and scrollbar positioning\n const { ref, ...otherRefs } = containerProps;\n const containerRef = elem => {\n if (elem) {\n scrollRef.current = elem;\n ref(elem);\n }\n };\n return (\n <div tabIndex=\"-1\" {...otherRefs} ref={containerRef}>\n {children}\n </div>\n );\n }}\n theme={styles}\n />\n </span>\n {icon}\n </label>\n );\n};\n\nSelect.propTypes = {\n value: PropTypes.number.isRequired,\n onSlackTimeSelected: PropTypes.func.isRequired,\n getDisplay: PropTypes.func.isRequired,\n options: PropTypes.arrayOf(\n PropTypes.shape({\n displayName: PropTypes.string.isRequired,\n value: PropTypes.number.isRequired,\n }).isRequired,\n ).isRequired,\n id: PropTypes.string.isRequired,\n label: PropTypes.node.isRequired,\n icon: PropTypes.node.isRequired,\n viaPointIndex: PropTypes.number.isRequired,\n};\n\nexport default Select;\n","const translations = {\n de: {\n 'add-via-button-label': 'Füge Zwischenziel hinzu',\n 'add-via-duration-button-label':\n 'Setze Umsteigezeit für Zwischenziel {{index}}',\n 'add-via-duration-button-label-close':\n 'Schließe Umsteigezeit-Auswahl für Zwischenziel {{index}}',\n 'add-via-duration-button-label-open':\n 'Öffne Umsteigezeit-Auswahl für Zwischenziel {{index}}',\n 'minute-short': 'min',\n 'remove-via-button-label': 'Entferne Zwischenziel {{index}}',\n 'swap-order-button-label': 'Tausche Start mit Ziel',\n 'via-point': 'Zwischenziel',\n 'via-point-index': 'Zwischenziel {{index}}',\n 'viapoint-slack-amount': 'Umsteigezeit',\n },\n en: {\n 'add-via-button-label': 'Add via point',\n 'add-via-duration-button-label': 'Set stop duration at via point {{index}}',\n 'add-via-duration-button-label-close':\n 'Close stop duration selector at via point {{index}}',\n 'add-via-duration-button-label-open':\n 'Open stop duration selector at via point {{index}}',\n 'minute-short': 'min',\n 'remove-via-button-label': 'Remove via point {{index}}',\n 'swap-order-button-label': 'Reverse origin and destination',\n 'via-point': 'Via point',\n 'via-point-index': 'Via point {{index}}',\n 'viapoint-slack-amount': 'Stop duration',\n },\n fi: {\n 'add-via-button-label': 'Lisää välipiste',\n 'add-via-duration-button-label':\n 'Aseta välipisteelle {{index}} pysähdyksen kesto',\n 'add-via-duration-button-label-close':\n 'Avaa välipisteen {{index}} pysähdyksen kesto valitsin',\n 'add-via-duration-button-label-open':\n 'Sulje välipisteen {{index}} pysähdyksen kesto valitsin',\n 'minute-short': 'min',\n 'remove-via-button-label': 'Poista välipiste {{index}}',\n 'swap-order-button-label': 'Käännä reitin suunta vastakkaiseksi',\n 'via-point': 'Välipiste',\n 'via-point-index': 'Välipiste {{index}}',\n 'viapoint-slack-amount': 'Pysähdyksen kesto',\n },\n pl: {\n 'add-via-button-label': 'Dodaj punkt pośredni',\n 'add-via-duration-button-label':\n 'Wybierz czas postoju dla punktu {{index}}',\n 'add-via-duration-button-label-close':\n 'Zamknij wybornik czasu postoju w punkcie {{index}}',\n 'add-via-duration-button-label-open':\n 'Otwórz wybornik czasu postoju w punkcie {{index}}',\n 'minute-short': 'min.',\n 'remove-via-button-label': 'Usuń punkt pośredni {{index}}',\n 'swap-order-button-label': 'Odwróć początek i cel',\n 'via-point': 'Punkt pośredni',\n 'via-point-index': 'Punkt pośredni {{index}}',\n 'viapoint-slack-amount': 'Czas postoju',\n },\n sv: {\n 'add-via-button-label': 'Lägg till viapunkt',\n 'add-via-duration-button-label':\n 'Ställ in varaktighet för viapunkten {{index}}',\n 'add-via-duration-button-label-close':\n 'Stäng väljaren för varaktighet vid via-punkten {{index}}',\n 'add-via-duration-button-label-open':\n 'Öppna väljaren för varaktighet vid via-punkten {{index}}',\n 'minute-short': 'min',\n 'remove-via-button-label': 'Ta bort viapunkt {{index}}',\n 'swap-order-button-label': 'Sväng ruttens riktning till den motsatta',\n 'via-point': 'Via punkt',\n 'via-point-index': 'Via punkt {{index}}',\n 'viapoint-slack-amount': 'Stoppets varaktighet',\n },\n};\n\nexport default translations;\n","/* eslint-disable import/no-extraneous-dependencies */\nimport cx from 'classnames';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { ReactSortable } from 'react-sortablejs';\nimport i18next from 'i18next';\nimport DTAutoSuggest from '@digitransit-component/digitransit-component-autosuggest';\nimport Icon from '@digitransit-component/digitransit-component-icon';\nimport isEmpty from 'lodash/isEmpty';\nimport Select from './helpers/Select';\nimport translations from './helpers/translations';\nimport styles from './helpers/styles.scss';\n\ni18next.init({\n lng: 'fi',\n fallbackLng: 'fi',\n defaultNS: 'translation',\n interpolation: {\n escapeValue: false, // not needed for react as it escapes by default\n },\n});\n\nexport const getEmptyViaPointPlaceHolder = () => ({});\n\nconst isViaPointEmpty = viaPoint => {\n if (viaPoint === undefined || isEmpty(viaPoint)) {\n return true;\n }\n const keys = Object.keys(viaPoint);\n return (\n keys.length === 1 || (keys.length === 2 && keys.includes('locationSlack'))\n );\n};\n\nconst ItinerarySearchControl = ({\n children,\n className,\n enabled,\n onClick,\n onKeyPress,\n wide,\n ...rest\n}) => (\n <div\n className={styles['itinerary-search-control']}\n style={{ '--width': wide ? '47px' : '40px' }}\n >\n {onClick && enabled && (\n <div\n {...rest}\n className={className}\n onClick={onClick}\n onKeyPress={onKeyPress}\n role=\"button\"\n tabIndex=\"0\"\n >\n {children}\n </div>\n )}\n </div>\n);\n\nconst getSlackDisplay = slackInSeconds => {\n return `${slackInSeconds / 60} ${i18next.t('minute-short')}`;\n};\n\nconst updateViaPointSlack = (\n activeViaPointSlacks,\n updatedViaPointIndex,\n viaPointRemoved = false,\n) => {\n const foundAtIndex = activeViaPointSlacks.indexOf(updatedViaPointIndex);\n if (foundAtIndex > -1) {\n activeViaPointSlacks.splice(foundAtIndex, 1);\n }\n return viaPointRemoved\n ? activeViaPointSlacks.map(value =>\n value > updatedViaPointIndex ? value - 1 : value,\n )\n : activeViaPointSlacks;\n};\n\nconst isKeyboardSelectionEvent = event => {\n const space = [13, ' ', 'Spacebar'];\n const enter = [32, 'Enter'];\n const key = (event && (event.key || event.which || event.keyCode)) || '';\n if (!key || !space.concat(enter).includes(key)) {\n return false;\n }\n event.preventDefault();\n return true;\n};\n\nconst value = location =>\n (location && location.address) ||\n (location && location.gps && location.ready && 'Nykyinen sijainti') ||\n '';\n\nconst getLocationType = location =>\n location && location.gps === true ? 'position' : 'location';\n\nconst getSlackTimeOptions = () => {\n const timeOptions = [];\n for (let i = 0; i <= 9; i++) {\n const valueInMinutes = i * 10;\n timeOptions.push({\n displayName: `${valueInMinutes} ${i18next.t('minute-short')}`,\n value: valueInMinutes * 60,\n });\n }\n return timeOptions;\n};\n\nItinerarySearchControl.propTypes = {\n children: PropTypes.node,\n className: PropTypes.string.isRequired,\n enabled: PropTypes.bool.isRequired,\n onClick: PropTypes.func.isRequired,\n onKeyPress: PropTypes.func.isRequired,\n wide: PropTypes.bool,\n};\n\nItinerarySearchControl.defaultProps = {\n children: undefined,\n wide: false,\n};\n\n/**\n * Panel that renders two DTAutosuggest search fields, including viapoint handling\n *\n * @example\n * const searchContext = {\n * isPeliasLocationAware: false // true / false does Let Pelias suggest based on current user location\n * minimalRegexp: undefined // used for testing min. regexp. For example: new RegExp('.{2,}'),\n * lineRegexp: undefined // identify searches for route numbers/labels: bus | train | metro. For example: new RegExp(\n * // '(^[0-9]+[a-z]?$|^[yuleapinkrtdz]$|(^m[12]?b?$))',\n * // 'i',\n * // ),\n * URL_PELIAS: '' // url for pelias searches\n * feedIDs: ['HSL', 'HSLLautta'] // FeedId's like [HSL, HSLLautta]\n * geocodingSources: ['oa','osm','nlsfi'] // sources for geocoding\n * geocodingSearchParams; {} // Searchparmas fro geocoding\n * getFavouriteLocations: () => ({}), // Function that returns array of favourite locations.\n * getFavouriteStops: () => ({}), // Function that returns array of favourite stops.\n * getLanguage: () => ({}), // Function that returns current language.\n * getFavouriteRoutes: () => ({}), // Function that returns array of favourite routes.\n * getPositions: () => ({}), // Function that returns user's geolocation.\n * getRoutesQuery: () => ({}), // Function that returns query for fetching routes.\n * getStopAndStationsQuery: () => ({}), // Function that fetches favourite stops and stations from graphql API.\n * getFavouriteRoutesQuery: () => ({}), // Function that returns query for fetching favourite routes.\n * getFavouriteVehicleRentalStations: () => ({}), // Function that returns favourite bike rental station.\n * getFavouriteVehicleRentalStationsQuery: () => ({}), // Function that returns query for fetching favourite bike rental stations.\n * startLocationWatch: () => ({}), // Function that locates users geolocation.\n * saveSearch: () => ({}), // Function that saves search to old searches store.\n * clearOldSearches: () => ({}), // Function that clears old searches store.\n * getFutureRoutes: () => ({}), // Function that return future routes\n * saveFutureRoute: () => ({}), // Function that saves a future route\n * clearFutureRoutes: () => ({}), // Function that clears future routes\n * };\n *\n * const origin = {\n * lat: 60.169196,\n * lon: 24.957674,\n * address: 'Aleksanterinkatu, Helsinki',\n * set: true,\n * ready: true,\n * }\n *\n * const destination = {\n * lat: 60.199093,\n * lon: 24.940536,\n * address: 'Opastinsilta 6, Helsinki',\n * set: true,\n * ready: true,\n * }\n * onSelect(item, id) {\n * return null; // Define what to do when a suggestion is being selected. None by default.\n * }\n * onClear(id) {\n * return null; // Define what to do when a suggestion is being selected. None by default.\n * }\n * const getAutoSuggestIcons: {\n * // Called for every city bike station rendered as a search suggestion. Should return the icon and\n * // color used for that station. Two icons are available, 'citybike-stop-digitransit' anditybike-stop-digitransit-secondary'.\n * citybikes: station => {\n * return ['citybike-stop-digitransit', '#f2b62d'];\n * }\n * }\n * const targets = ['Locations', 'Stops', 'Routes']; // Defines what you are searching. all available options are Locations, Stops, Routes, VehicleRentalStations, FutureRoutes, MapPosition and CurrentPosition. Leave empty to search all targets.\n * const sources = ['Favourite', 'History', 'Datasource'] // Defines where you are searching. all available are: Favourite, History (previously searched searches), and Datasource. Leave empty to use all sources.\n * <DTAutosuggestPanel\n * appElement={appElement} // Required. Root element's id. Needed for react-modal component.\n * origin={origin} // Selected origin point\n * destination={destination} // Selected destination point\n * originPlaceHolder={'Give origin'} // Optional Give string shown initially inside origin search field\n * destinationPlaceHolder={'Give destination'} // Optional Give string shown initally inside destination search field\n * initialViaPoints={[]} // Optional. If showViapointControl is set to true, pass initial via points to the panel. Currently no default implementation is given.\n * updateViaPoints={() => return []} // Optional. If showViapointControl is set to true, define how to update your via point list with this function. Currenlty no default implementation is given.\n * swapOrder={() => return null} // Optional. If showSwapControl is set to true, define how to swap order of your points (origin, destination, viapoints). Currently no default implementation is given.\n * searchContext={searchContext}\n * getAutoSuggestIcons={getAutoSuggestIcons}\n * onSelect={this.onSelect}\n * onClear={this.onClear}\n * lang=\"fi\" // Define language fi sv or en.\n * addAnalyticsEvent={null} // Optional. you can record an analytics event if you wish. if passed, component will pass an category, action, name parameters to addAnalyticsEvent\n * disableAutoFocus={false} // Optional. use this to disable autofocus completely from DTAutosuggestPanel\n * sources={sources}\n * targets={targets}\n * isMobile // Optional. Defaults to false. Whether to use mobile search.\n * originMobileLabel=\"Origin label\" // Optional. Custom label text for origin field on mobile.\n * destinationMobileLabel=\"Destination label\" // Optional. Custom label text for destination field on mobile.\n * handleFocusChange={() => {}} // Optional. If defined overrides default onFocusChange behaviour\n * showSwapControl={false} // Optional.\n * showViapointControl={false} // Optional.\n */\n\nconst locationShape = PropTypes.shape({\n address: PropTypes.string,\n lat: PropTypes.number,\n lon: PropTypes.number,\n locationSlack: PropTypes.number,\n});\n\nclass DTAutosuggestPanel extends React.Component {\n static propTypes = {\n appElement: PropTypes.string.isRequired,\n origin: locationShape,\n destination: locationShape,\n originPlaceHolder: PropTypes.string,\n destinationPlaceHolder: PropTypes.string,\n viaPoints: PropTypes.arrayOf(locationShape),\n updateViaPoints: PropTypes.func,\n handleViaPointLocationSelected: PropTypes.func,\n swapOrder: PropTypes.func,\n searchPanelText: PropTypes.string,\n searchContext: PropTypes.shape({\n URL_PELIAS: PropTypes.string,\n }).isRequired,\n onSelect: PropTypes.func.isRequired,\n onClear: PropTypes.func,\n addAnalyticsEvent: PropTypes.func,\n lang: PropTypes.string,\n disableAutoFocus: PropTypes.bool,\n sources: PropTypes.arrayOf(PropTypes.string),\n targets: PropTypes.arrayOf(PropTypes.string),\n filterResults: PropTypes.func,\n isMobile: PropTypes.bool,\n color: PropTypes.string,\n hoverColor: PropTypes.string,\n originMobileLabel: PropTypes.string,\n destinationMobileLabel: PropTypes.string,\n refPoint: locationShape,\n modeSet: PropTypes.string,\n modeIconColors: PropTypes.objectOf(PropTypes.string),\n getAutoSuggestIcons: PropTypes.objectOf(PropTypes.func),\n fontWeights: PropTypes.shape({\n medium: PropTypes.number,\n }),\n showScroll: PropTypes.bool,\n onFocusChange: PropTypes.func,\n isEmbedded: PropTypes.bool,\n showSwapControl: PropTypes.bool,\n showViapointControl: PropTypes.bool,\n showSlackControl: PropTypes.bool,\n };\n\n static defaultProps = {\n origin: undefined,\n destination: undefined,\n viaPoints: [],\n originPlaceHolder: 'give-origin',\n destinationPlaceHolder: 'give-destination',\n swapOrder: undefined,\n updateViaPoints: () => {},\n lang: 'fi',\n searchPanelText: undefined,\n sources: [],\n targets: [],\n filterResults: undefined,\n onClear: undefined,\n getAutoSuggestIcons: undefined,\n refPoint: undefined,\n addAnalyticsEvent: undefined,\n disableAutoFocus: false,\n isMobile: false,\n handleViaPointLocationSelected: undefined,\n color: '#007ac9',\n hoverColor: '#0062a1',\n originMobileLabel: null,\n destinationMobileLabel: null,\n modeSet: undefined,\n modeIconColors: undefined,\n fontWeights: {\n medium: 500,\n },\n showScroll: false,\n onFocusChange: undefined,\n isEmbedded: false,\n showSwapControl: false,\n showViapointControl: false,\n showSlackControl: false,\n };\n\n constructor(props) {\n super(props);\n this.state = {\n activeSlackInputs: [],\n refs: [],\n };\n Object.keys(translations).forEach(lang => {\n i18next.addResourceBundle(lang, 'translation', translations[lang]);\n });\n }\n\n componentDidMount() {\n i18next.changeLanguage(this.props.lang);\n }\n\n componentDidUpdate() {\n if (i18next.language !== this.props.lang) {\n i18next.changeLanguage(this.props.lang);\n }\n }\n\n storeReference = ref => {\n this.setState(prevState => ({ refs: [...prevState.refs, ref] }));\n };\n\n handleFocusChange = () => {\n const { destination } = this.props;\n if (!destination || !destination.lat) {\n this.state.refs[1].focus();\n }\n };\n\n updateViaPoints = viaPoints => {\n if (viaPoints.length === 0) {\n this.props.updateViaPoints([]);\n return;\n }\n this.props.updateViaPoints(viaPoints.filter(vp => !isViaPointEmpty(vp)));\n };\n\n handleToggleViaPointSlackClick = viaPointIndex => {\n const { activeSlackInputs } = this.state;\n this.setState({\n activeSlackInputs: activeSlackInputs.includes(viaPointIndex)\n ? updateViaPointSlack(activeSlackInputs, viaPointIndex)\n : activeSlackInputs.concat([viaPointIndex]),\n });\n };\n\n handleViaPointSlackTimeSelected = (slackTimeInSeconds, i) => {\n if (this.props.addAnalyticsEvent) {\n this.props.addAnalyticsEvent({\n action: 'EditViaPointStopDuration',\n category: 'ItinerarySettings',\n name: slackTimeInSeconds / 60,\n });\n }\n const { viaPoints } = this.props;\n viaPoints[i].locationSlack = Number.parseInt(slackTimeInSeconds, 10);\n this.updateViaPoints(viaPoints);\n };\n\n handleViaPointLocationSelected = (viaPointLocation, i) => {\n this.props.handleViaPointLocationSelected(viaPointLocation, i);\n };\n\n handleRemoveViaPointClick = viaPointIndex => {\n if (this.props.addAnalyticsEvent) {\n this.props.addAnalyticsEvent({\n action: 'RemoveJourneyViaPoint',\n category: 'ItinerarySettings',\n name: null,\n });\n }\n const { activeSlackInputs } = this.state;\n const { viaPoints } = this.props;\n viaPoints.splice(viaPointIndex, 1);\n this.setState(\n {\n activeSlackInputs: updateViaPointSlack(\n activeSlackInputs,\n viaPointIndex,\n true,\n ),\n },\n () => this.updateViaPoints(viaPoints),\n );\n };\n\n handleAddViaPointClick = () => {\n if (this.props.addAnalyticsEvent) {\n this.props.addAnalyticsEvent({\n action: 'AddJourneyViaPoint',\n category: 'ItinerarySettings',\n name: 'QuickSettingsButton',\n });\n }\n const { viaPoints } = this.props;\n viaPoints.push(getEmptyViaPointPlaceHolder());\n // We need to update the state so that placeHolder will show up in panel.\n // eslint-disable-next-line react/no-access-state-in-setstate\n this.setState(this.state);\n };\n\n handleSwapOrderClick = () => {\n if (this.props.addAnalyticsEvent) {\n this.props.addAnalyticsEvent({\n action: 'SwitchJourneyStartAndEndPointOrder',\n category: 'ItinerarySettings',\n name: null,\n });\n }\n const { viaPoints } = this.props;\n viaPoints.reverse();\n this.props.swapOrder();\n };\n\n render() {\n const {\n origin,\n searchPanelText,\n searchContext,\n disableAutoFocus,\n viaPoints,\n originMobileLabel,\n destinationMobileLabel,\n fontWeights,\n onFocusChange,\n showSwapControl,\n showViapointControl,\n } = this.props;\n const { activeSlackInputs } = this.state;\n const slackTime = getSlackTimeOptions();\n const defaultSlackTimeValue = 0;\n const getViaPointSlackTimeOrDefault = (\n viaPoint,\n defaultValue = defaultSlackTimeValue,\n ) => (viaPoint && viaPoint.locationSlack) || defaultValue;\n const isViaPointSlackTimeInputActive = index =>\n activeSlackInputs.includes(index);\n return (\n <div\n className={cx([\n styles['autosuggest-panel'],\n {\n small: this.props.isMobile,\n },\n ])}\n style={{\n '--color': `${this.props.color}`,\n '--font-weight-medium': fontWeights.medium,\n }}\n >\n {' '}\n {searchPanelText ? (\n <div>\n <h1 className={styles['autosuggest-searchpanel-text']}>\n {' '}\n {searchPanelText}\n </h1>\n </div>\n ) : null}\n <div className={styles['origin-input-container']}>\n <DTAutoSuggest\n appElement={this.props.appElement}\n icon=\"mapMarker\"\n id=\"origin\"\n autoFocus={\n disableAutoFocus === true\n ? false\n : !this.props.isMobile && !origin.lat\n }\n storeRef={this.storeReference}\n refPoint={this.props.refPoint}\n className={getLocationType(origin)}\n placeholder={this.props.originPlaceHolder}\n value={value(origin)}\n searchContext={searchContext}\n getAutoSuggestIcons={this.props.getAutoSuggestIcons}\n onSelect={this.props.onSelect}\n onClear={this.props.onClear}\n focusChange={onFocusChange || this.handleFocusChange}\n lang={this.props.lang}\n sources={this.props.sources}\n targets={this.props.targets}\n filterResults={this.props.filterResults}\n isMobile={this.props.isMobile}\n color={this.props.color}\n hoverColor={this.props.hoverColor}\n mobileLabel={originMobileLabel}\n fontWeights={this.props.fontWeights}\n modeSet={this.props.modeSet}\n modeIconColors={this.props.modeIconColors}\n showScroll={this.props.showScroll}\n isEmbedded={this.props.isEmbedded}\n />\n {(showSwapControl || showViapointControl) && (\n <ItinerarySearchControl\n className={styles.opposite}\n enabled={showSwapControl}\n onClick={() => this.handleSwapOrderClick()}\n onKeyPress={e =>\n isKeyboardSelectionEvent(e) && this.handleSwapOrderClick()\n }\n aria-label={i18next.t('swap-order-button-label')}\n >\n <Icon img=\"opposite\" color={this.props.color} />\n </ItinerarySearchControl>\n )}\n </div>\n {viaPoints.length === 0 && (\n <div className={styles['rectangle-container']}>\n <div className={styles.rectangle} />\n </div>\n )}\n <ReactSortable\n className={styles['viapoints-container']}\n list={viaPoints}\n handle={`.${styles['viapoint-before']}`}\n animation={200}\n disabled={viaPoints.length <= 1}\n setList={items => {\n const newViaPoints = items.filter(vp => !isViaPointEmpty(vp));\n if (newViaPoints.length > 0) {\n this.props.updateViaPoints(newViaPoints);\n }\n }}\n >\n {viaPoints.map((o, i) => (\n <div\n className={cx(styles['viapoint-container'])}\n key={`viapoint-${i}`} // eslint-disable-line\n >\n <div className={styles['light-gray-background']}>\n <div className={styles.row}>\n <div\n className={styles['viapoint-before']}\n style={viaPoints.length > 1 ? { cursor: 'move' } : {}}\n >\n {viaPoints.length > 1 && (\n <Icon\n img=\"ellipsis\"\n rotate={90}\n color={this.props.color}\n />\n )}\n </div>\n <div\n className={cx(\n `${styles['viapoint-input-container']} ${\n styles[`viapoint-${i + 1}`]\n }`,\n )}\n >\n <DTAutoSuggest\n appElement={this.props.appElement}\n icon=\"mapMarker-via\"\n id=\"via-point\"\n ariaLabel={i18next.t('via-point-index', { index: i + 1 })}\n autoFocus={\n disableAutoFocus === true ? false : !this.props.isMobile\n }\n placeholder=\"via-point\"\n className=\"viapoint\"\n searchContext={searchContext}\n refPoint={this.props.refPoint}\n value={(o && o.address) || ''}\n onSelect={this.props.onSelect}\n onClear={this.props.onClear}\n handleViaPoints={item =>\n this.handleViaPointLocationSelected(item, i)\n }\n lang={this.props.lang}\n sources={this.props.sources}\n targets={['Stops', 'Stations']}\n filterResults={this.props.filterResults}\n getAutoSuggestIcons={this.props.getAutoSuggestIcons}\n isMobile={this.props.isMobile}\n color={this.props.color}\n hoverColor={this.props.hoverColor}\n fontWeights={this.props.fontWeights}\n modeSet={this.props.modeSet}\n modeIconColors={this.props.modeIconColors}\n showScroll={this.props.showScroll}\n />\n </div>\n {this.props.showSlackControl && (\n <ItinerarySearchControl\n className={styles['add-via-point-slack']}\n enabled={this.props.showViapointControl}\n onClick={() => this.handleToggleViaPointSlackClick(i)}\n onKeyPress={e =>\n isKeyboardSelectionEvent(e) &&\n this.handleToggleViaPointSlackClick(i)\n }\n aria-label={i18next.t(\n isViaPointSlackTimeInputActive(i)\n ? 'add-via-duration-button-label-open'\n : 'add-via-duration-button-label-close',\n { index: i + 1 },\n )}\n wide\n >\n <Icon img=\"time\" color={this.props.color} />\n </ItinerarySearchControl>\n )}\n </div>\n {!isViaPointSlackTimeInputActive(i) &&\n viaPoints[i] &&\n viaPoints[i].locationSlack > 0 && (\n <span\n className={styles['viapoint-slack-time']}\n >{`${i18next.t('viapoint-slack-amount')}: ${getSlackDisplay(\n viaPoints[i].locationSlack,\n )}`}</span>\n )}\n <div\n className={cx(styles['input-viapoint-slack-container'], {\n collapsed: !isViaPointSlackTimeInputActive(i),\n })}\n >\n <div className={styles['select-wrapper']}>\n <Select\n id={`viapoint-slack-${i}`}\n label={i18next.t('viapoint-slack-amount')}\n options={slackTime}\n value={getViaPointSlackTimeOrDefault(viaPoints[i])}\n getDisplay={getSlackDisplay}\n viaPointIndex={i}\n icon={\n <span\n className={`${styles['combobox-icon']} ${styles['time-input-icon']}`}\n >\n <Icon img=\"time\" color={this.props.color} />\n </span>\n }\n onSlackTimeSelected={this.handleViaPointSlackTimeSelected}\n />\n </div>\n </div>\n </div>\n <ItinerarySearchControl\n className={styles['remove-via-point']}\n enabled={this.props.showViapointControl}\n onClick={() => this.handleRemoveViaPointClick(i)}\n onKeyPress={e =>\n isKeyboardSelectionEvent(e) &&\n this.handleRemoveViaPointClick(i)\n }\n aria-label={i18next.t('remove-via-button-label', {\n index: i + 1,\n })}\n >\n <Icon img=\"trash\" color={this.props.color} />\n </ItinerarySearchControl>\n </div>\n ))}\n </ReactSortable>\n <div className={styles['destination-input-container']}>\n <DTAutoSuggest\n appElement={this.props.appElement}\n icon=\"mapMarker\"\n id=\"destination\"\n autoFocus={\n disableAutoFocus === true\n ? false\n : !this.props.isMobile && !Number.isNaN(origin.lat)\n }\n storeRef={this.storeReference}\n placeholder={this.props.destinationPlaceHolder}\n className={getLocationType(this.props.destination)}\n getAutoSuggestIcons={this.props.getAutoSuggestIcons}\n searchContext={searchContext}\n onSelect={this.props.onSelect}\n onClear={this.props.onClear}\n refPoint={this.props.refPoint}\n value={value(this.props.destination)}\n lang={this.props.lang}\n sources={this.props.sources}\n targets={this.props.targets}\n filterResults={this.props.filterResults}\n isMobile={this.props.isMobile}\n color={this.props.color}\n hoverColor={this.props.hoverColor}\n mobileLabel={destinationMobileLabel}\n fontWeights={this.props.fontWeights}\n modeSet={this.props.modeSet}\n modeIconColors={this.props.modeIconColors}\n showScroll={this.props.showScroll}\n isEmbedded={this.props.isEmbedded}\n />\n {(showSwapControl || showViapointControl) && (\n <ItinerarySearchControl\n className={cx(styles['add-via-point'], styles.more, {\n collapsed: viaPoints.length > 4,\n })}\n enabled={showViapointControl && viaPoints.length === 0}\n onClick={() => this.handleAddViaPointClick()}\n onKeyPress={e =>\n isKeyboardSelectionEvent(e) && this.handleAddViaPointClick()\n }\n aria-label={i18next.t('add-via-button-label')}\n >\n <Icon\n img=\"viapoint\"\n width={1.25}\n height={1.375}\n color={this.props.color}\n />\n </ItinerarySearchControl>\n )}\n </div>\n </div>\n );\n }\n}\n\nexport default DTAutosuggestPanel;\n"],"names":["_typeof","o","Symbol","iterator","constructor","prototype","toPropertyKey","t","i","r","e","toPrimitive","call","TypeError","String","Number","_defineProperty","Object","defineProperty","value","enumerable","configurable","writable","_objectWithoutProperties","n","hasOwnProperty","indexOf","objectWithoutPropertiesLoose","getOwnPropertySymbols","length","propertyIsEnumerable","styleInject","css","ref","insertAt","document","head","getElementsByTagName","style","createElement","type","firstChild","insertBefore","appendChild","styleSheet","cssText","createTextNode","Select","getDisplay","options","onSlackTimeSelected","viaPointIndex","id","label","icon","displayValue","changeDisplayValue","useState","open","changeOpen","useEffect","scrollRef","useRef","scrollIndex","Math","floor","useLayoutEffect","current","scrollTop","inputId","labelId","React","className","styles","htmlFor","Autosuggest","suggestions","getSuggestionValue","s","renderSuggestion","displayName","onSuggestionsFetchRequested","shouldRenderSuggestions","focusInputOnSuggestionClick","onSuggestionsClearRequested","inputProps","onChange","onInputChange","_","newValue","method","onFocus","onBlur","readOnly","renderSuggestionsContainer","containerProps","children","otherRefs","_excluded","assign","tabIndex","elem","theme","process","env","NODE_ENV","propTypes","PropTypes","number","isRequired","func","arrayOf","shape","string","node","translations","de","en","fi","pl","sv","i18next__default","init","lng","fallbackLng","defaultNS","interpolation","escapeValue","getEmptyViaPointPlaceHolder","isViaPointEmpty","viaPoint","undefined","isEmpty","keys","includes","ItinerarySearchControl","_ref","enabled","onClick","onKeyPress","wide","rest","role","getSlackDisplay","slackInSeconds","i18next","updateViaPointSlack","activeViaPointSlacks","updatedViaPointIndex","viaPointRemoved","foundAtIndex","splice","map","isKeyboardSelectionEvent","event","key","which","keyCode","concat","preventDefault","location","address","gps","ready","getLocationType","bool","defaultProps","locationShape","lat","lon","locationSlack","DTAutosuggestPanel","Component","props","super","this","setState","prevState","refs","destination","state","focus","viaPoints","updateViaPoints","filter","vp","activeSlackInputs","slackTimeInSeconds","addAnalyticsEvent","action","category","name","parseInt","viaPointLocation","handleViaPointLocationSelected","push","reverse","swapOrder","forEach","lang","addResourceBundle","componentDidMount","changeLanguage","componentDidUpdate","language","render","origin","searchPanelText","searchContext","disableAutoFocus","originMobileLabel","destinationMobileLabel","fontWeights","onFocusChange","showSwapControl","showViapointControl","slackTime","getSlackTimeOptions","timeOptions","valueInMinutes","getViaPointSlackTimeOrDefault","defaultValue","isViaPointSlackTimeInputActive","index","cx","isMobile","color","medium","DTAutoSuggest","appElement","autoFocus","storeRef","storeReference","refPoint","placeholder","originPlaceHolder","getAutoSuggestIcons","onSelect","onClear","focusChange","handleFocusChange","sources","targets","filterResults","hoverColor","mobileLabel","modeSet","modeIconColors","showScroll","isEmbedded","opposite","handleSwapOrderClick","Icon","img","rectangle","ReactSortable","list","handle","animation","disabled","setList","items","newViaPoints","row","cursor","rotate","ariaLabel","handleViaPoints","item","showSlackControl","handleToggleViaPointSlackClick","handleViaPointSlackTimeSelected","handleRemoveViaPointClick","isNaN","destinationPlaceHolder","more","handleAddViaPointClick","width","height","URL_PELIAS","objectOf"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@digitransit-component/digitransit-component-autosuggest-panel",
|
|
3
|
-
"version": "4.0.
|
|
3
|
+
"version": "4.0.6",
|
|
4
4
|
"description": "digitransit-component autosuggest-panel module",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"files": [
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
"author": "Digitransit Authors",
|
|
29
29
|
"license": "(AGPL-3.0 OR EUPL-1.2)",
|
|
30
30
|
"peerDependencies": {
|
|
31
|
-
"@digitransit-component/digitransit-component-autosuggest": "^3.0.
|
|
31
|
+
"@digitransit-component/digitransit-component-autosuggest": "^3.0.5",
|
|
32
32
|
"@digitransit-component/digitransit-component-icon": "^1.0.1",
|
|
33
33
|
"@hsl-fi/sass": "^0.2.0",
|
|
34
34
|
"classnames": "2.2.6",
|
|
@@ -42,5 +42,5 @@
|
|
|
42
42
|
"react-sortablejs": "2.0.11",
|
|
43
43
|
"recompose": "0.30.0"
|
|
44
44
|
},
|
|
45
|
-
"gitHead": "
|
|
45
|
+
"gitHead": "01bdba2babf3c538d39e4dadc6f2935faa7c23ac"
|
|
46
46
|
}
|