@digitransit-component/digitransit-component-favourite-modal 1.0.1 → 1.0.3
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 +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
1
|
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("react"),require("prop-types"),require("classnames"),require("i18next"),require("lodash/isEmpty"),require("lodash/isNumber"),require("@hsl-fi/modal"),require("@digitransit-component/digitransit-component-icon")):"function"==typeof define&&define.amd?define(["exports","react","prop-types","classnames","i18next","lodash/isEmpty","lodash/isNumber","@hsl-fi/modal","@digitransit-component/digitransit-component-icon"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self)["@digitransit-component/digitransit-component-favourite-modal"]={},e.React,e.PropTypes,e.cx,e.i18next,e.isEmpty,e.isNumber,e.Modal,e.Icon)}(this,(function(e,t,o,a,i,n,l,r,d){"use strict";function s(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var u=s(t),c=s(o),f=s(a),p=s(i),m=s(n),_=s(l),v=s(r),b=s(d);function h(){return h=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var o=arguments[t];for(var a in o)Object.prototype.hasOwnProperty.call(o,a)&&(e[a]=o[a])}return e},h.apply(this,arguments)}function g(e,t){void 0===t&&(t={});var o=t.insertAt;if(e&&"undefined"!=typeof document){var a=document.head||document.getElementsByTagName("head")[0],i=document.createElement("style");i.type="text/css","top"===o&&a.firstChild?a.insertBefore(i,a.firstChild):a.appendChild(i),i.styleSheet?i.styleSheet.cssText=e:i.appendChild(document.createTextNode(e))}}var k={"generic-table":"styles_generic-table__ZDktB",row:"styles_row__2H9Yg","generic-table__label-container":"styles_generic-table__label-container__BFaCU","favourite-icon-table-column":"styles_favourite-icon-table-column__fIdH1",place:"styles_place__NQ5kk",work:"styles_work__1IJjU",home:"styles_home__1tTd4",school:"styles_school__X2Mcv",sport:"styles_sport__EfCxT",shopping:"styles_shopping__XNGKI","selected-icon":"styles_selected-icon__vfbGq"};g(".styles_generic-table__ZDktB > .styles_row__2H9Yg {\n display: flex; }\n\n.styles_generic-table__label-container__BFaCU {\n font-size: 0.8rem;\n margin-top: 3px;\n color: #666;\n height: 16px;\n max-width: 62.5rem;\n margin-left: auto;\n margin-right: auto; }\n\n.styles_favourite-icon-table-column__fIdH1 {\n cursor: pointer;\n flex: 1;\n align-items: center;\n padding: 0;\n background: #fff;\n float: left;\n height: 50px;\n margin: 0;\n line-height: 1;\n text-align: center;\n font-size: 17px;\n border-top: solid 1px #d9d9d9;\n border-bottom: solid 1px #d9d9d9;\n border-right: solid 1px #d9d9d9;\n border-left: none; }\n .styles_favourite-icon-table-column__fIdH1.styles_place__NQ5kk svg {\n width: 24px;\n height: 24px; }\n .styles_favourite-icon-table-column__fIdH1.styles_work__1IJjU svg {\n width: 20px;\n height: 20px; }\n .styles_favourite-icon-table-column__fIdH1.styles_home__1tTd4 svg, .styles_favourite-icon-table-column__fIdH1.styles_school__X2Mcv svg, .styles_favourite-icon-table-column__fIdH1.styles_sport__EfCxT svg, .styles_favourite-icon-table-column__fIdH1.styles_shopping__XNGKI svg {\n width: 18px;\n height: 18px; }\n .styles_favourite-icon-table-column__fIdH1:active, .styles_favourite-icon-table-column__fIdH1:hover, .styles_favourite-icon-table-column__fIdH1:focus, .styles_favourite-icon-table-column__fIdH1 .styles_selected-icon__vfbGq {\n background: #333;\n color: #fff; }\n\n.styles_favourite-icon-table-column__fIdH1:first-child {\n border-left: solid 1px #d9d9d9;\n border-top-left-radius: 5px;\n border-bottom-left-radius: 5px; }\n\n.styles_favourite-icon-table-column__fIdH1:last-child {\n border-top-right-radius: 5px;\n border-bottom-right-radius: 5px; }\n\n.styles_favourite-icon-table-column__fIdH1.styles_selected-icon__vfbGq {\n background: #333;\n color: #fff; }\n");const x={de:{cancel:"Abbrechen","choose-icon":"Wählen Sie ein Symbol für diesen Ort","close-favourite-modal":"Favoriten-Dialog schließen","edit-place":"Ort bearbeiten","favourite-modal-on-add-new":"Neuen Favoriten hinzufügen","favourite-modal-on-edit":"Favorit bearbeiten: {{favourite.name}}","input-placeholder":"Einen Namen für Ort setzen (optional)",save:"Speichern","save-place":"Favorit speichern"},en:{cancel:"Cancel","choose-icon":"Select the place's icon","close-favourite-modal":"Close the favourite modal","edit-place":"Edit place","favourite-modal-on-add-new":"Add a new favorite","favourite-modal-on-edit":"Editing favourite: {{favourite.name}}","input-placeholder":"Give the name a place (optional)",save:"Save","save-place":"Save place","cannot-save-place":"Cannot save a place without address or icon",place:"a place",home:"home",work:"work",sport:"sport",school:"school",shopping:"shopping","required-text":"required field"},fi:{cancel:"Peruuta","choose-icon":"Valitse paikan kuvake","close-favourite-modal":"Sulje suosikkimodaali","edit-place":"Muokkaa paikkaa","favourite-modal-on-add-new":"Lisää uusi suosikki","favourite-modal-on-edit":"Muokkaa suosikkia {{favourite.name}}","input-placeholder":"Anna paikalle nimi (vapaaehtoinen)",save:"Tallenna","save-place":"Tallenna paikka","cannot-save-place":"Paikkaa ilman osoitetta tai ikonia ei voida tallentaa",place:"paikka",home:"koti",work:"työ",sport:"urheilu",school:"koulu",shopping:"ostokset","required-text":"pakollinen kenttä"},sv:{cancel:"Avbryt","choose-icon":"Välj platsens ikon","close-favourite-modal":"Stäng favoritmodalen","edit-place":"Redigera plats","favourite-modal-on-add-new":"Lägg till ny favorit","favourite-modal-on-edit":"Redigera platsen: {{favourite.name}}","input-placeholder":"Ange platsens namn (frivilligt)",save:"Spara","save-place":"Spara plats","cannot-save-place":"Det går inte att spara en plats utan adress eller ikon",place:"en plats",home:"hem",work:"arbete",sport:"sport",school:"skola",shopping:"shoppa","required-field":"obligatoriskt fält"}};var y="desktop_favourite-modal-desktop-container__JeGRK",R="desktop_favourite-modal-desktop-top__SRAj7",E="desktop_favourite-modal-desktop-header__LzO65",q="desktop_favourite-modal-desktop-main__3SYc5",I="desktop_favourite-modal-desktop-location-search__ajBVr",N="desktop_favourite-modal-desktop-name__BmsiY",w="desktop_favourite-modal-desktop-input__6L7ez",S="desktop_favourite-modal-desktop-text__Gs-U3",T="desktop_favourite-modal-desktop-icons__LtHSO",G="desktop_icons-container__rs22H",C="desktop_favourite-modal-desktop-buttons__2Ag9q",O="desktop_favourite-modal-desktop-button__8Gh8t",H="desktop_save__I0AgO",A="desktop_disabled__Greqy",U="desktop_edit__t9NzU",J="desktop_sr-only__VJyNM";g(".desktop_favourite-modal-desktop-container__JeGRK {\n display: flex;\n flex-direction: column; }\n .desktop_favourite-modal-desktop-container__JeGRK .desktop_favourite-modal-desktop-top__SRAj7 {\n display: flex;\n flex-direction: row;\n width: 100%; }\n .desktop_favourite-modal-desktop-container__JeGRK .desktop_favourite-modal-desktop-top__SRAj7 .desktop_favourite-modal-desktop-header__LzO65 {\n width: 100%;\n font-size: 18px;\n font-weight: var(--font-weight-medium);\n line-height: 1.33;\n letter-spacing: -0.6px;\n color: #333333;\n margin-bottom: 25px; }\n .desktop_favourite-modal-desktop-container__JeGRK .desktop_favourite-modal-desktop-main__3SYc5 {\n text-align: left;\n margin-bottom: 27px; }\n .desktop_favourite-modal-desktop-container__JeGRK .desktop_favourite-modal-desktop-main__3SYc5 .desktop_favourite-modal-desktop-location-search__ajBVr {\n margin-bottom: 9px; }\n .desktop_favourite-modal-desktop-container__JeGRK .desktop_favourite-modal-desktop-main__3SYc5 .desktop_favourite-modal-desktop-name__BmsiY .desktop_favourite-modal-desktop-input__6L7ez {\n display: flex;\n position: relative;\n width: 100%;\n height: 44px;\n font-family: 'Gotham Rounded A', 'Gotham Rounded B', 'Roboto', Arial, Georgia, Serif;\n border-radius: 5px;\n border: solid 1px #888888;\n background-color: #ffffff;\n padding-left: 20px;\n font-size: 15px;\n line-height: 1.2;\n letter-spacing: -0.5px;\n color: #333;\n box-sizing: border-box;\n -webkit-appearance: none;\n appearance: none; }\n .desktop_favourite-modal-desktop-container__JeGRK .desktop_favourite-modal-desktop-main__3SYc5 .desktop_favourite-modal-desktop-name__BmsiY .desktop_favourite-modal-desktop-input__6L7ez::placeholder {\n color: #666; }\n .desktop_favourite-modal-desktop-container__JeGRK .desktop_favourite-modal-desktop-main__3SYc5 .desktop_favourite-modal-desktop-name__BmsiY .desktop_favourite-modal-desktop-input__6L7ez:focus {\n background: #fff;\n outline: none;\n border: 1px solid var(--color);\n box-shadow: 0px 0px 2px 1px var(--hover-color);\n -webkit-appearance: none; }\n .desktop_favourite-modal-desktop-container__JeGRK .desktop_favourite-modal-desktop-text__Gs-U3 {\n font-size: 16px;\n font-weight: var(--font-weight-medium);\n letter-spacing: -0.53px;\n color: #333333;\n margin: 0 0 11px 0;\n padding: 0; }\n .desktop_favourite-modal-desktop-container__JeGRK .desktop_favourite-modal-desktop-icons__LtHSO {\n margin-bottom: 30px; }\n .desktop_favourite-modal-desktop-container__JeGRK .desktop_icons-container__rs22H {\n border: none;\n margin: 0;\n padding: 0; }\n .desktop_favourite-modal-desktop-container__JeGRK .desktop_favourite-modal-desktop-buttons__2Ag9q {\n display: flex;\n flex-direction: column; }\n .desktop_favourite-modal-desktop-container__JeGRK .desktop_favourite-modal-desktop-buttons__2Ag9q .desktop_favourite-modal-desktop-button__8Gh8t {\n display: flex;\n justify-content: center;\n align-items: center;\n position: relative;\n width: 100%;\n height: 50px;\n font-size: 18px;\n font-family: 'Gotham Rounded A', 'Gotham Rounded B', 'Roboto', Arial, Georgia, Serif;\n font-weight: var(--font-weight-medium);\n letter-spacing: -0.5px;\n background: var(--color);\n color: #fff;\n line-height: 0;\n text-align: center;\n padding: 0;\n margin: 0;\n border-width: 0;\n transition: background-color 300ms ease-out;\n border-radius: 25px;\n cursor: pointer; }\n .desktop_favourite-modal-desktop-container__JeGRK .desktop_favourite-modal-desktop-buttons__2Ag9q .desktop_favourite-modal-desktop-button__8Gh8t.desktop_save__I0AgO:active, .desktop_favourite-modal-desktop-container__JeGRK .desktop_favourite-modal-desktop-buttons__2Ag9q .desktop_favourite-modal-desktop-button__8Gh8t.desktop_save__I0AgO:focus, .desktop_favourite-modal-desktop-container__JeGRK .desktop_favourite-modal-desktop-buttons__2Ag9q .desktop_favourite-modal-desktop-button__8Gh8t.desktop_save__I0AgO:hover {\n border-color: var(--hover-color);\n background: var(--hover-color);\n color: #fff; }\n .desktop_favourite-modal-desktop-container__JeGRK .desktop_favourite-modal-desktop-buttons__2Ag9q .desktop_favourite-modal-desktop-button__8Gh8t.desktop_save__I0AgO.desktop_disabled__Greqy {\n background: #bbb; }\n .desktop_favourite-modal-desktop-container__JeGRK .desktop_favourite-modal-desktop-buttons__2Ag9q .desktop_favourite-modal-desktop-button__8Gh8t.desktop_save__I0AgO.desktop_disabled__Greqy:active {\n background: #bbb; }\n .desktop_favourite-modal-desktop-container__JeGRK .desktop_favourite-modal-desktop-buttons__2Ag9q .desktop_favourite-modal-desktop-button__8Gh8t.desktop_edit__t9NzU {\n margin-top: 9px;\n background: #fff;\n border: solid 1px var(--color);\n color: var(--color); }\n .desktop_favourite-modal-desktop-container__JeGRK .desktop_favourite-modal-desktop-buttons__2Ag9q .desktop_favourite-modal-desktop-button__8Gh8t.desktop_edit__t9NzU:active, .desktop_favourite-modal-desktop-container__JeGRK .desktop_favourite-modal-desktop-buttons__2Ag9q .desktop_favourite-modal-desktop-button__8Gh8t.desktop_edit__t9NzU:hover {\n border-color: var(--hover-color);\n background-color: #fff;\n color: var(--hover-color); }\n\n.desktop_sr-only__VJyNM:not(:focus):not(:active) {\n clip: rect(0 0 0 0);\n -webkit-clip-path: inset(50%);\n clip-path: inset(50%);\n height: 1px;\n overflow: hidden;\n position: absolute;\n white-space: nowrap;\n width: 1px; }\n");const B=({headerText:e,autosuggestComponent:t,inputPlaceholder:o,specifyName:a,name:i,chooseIconText:n,favouriteIconTable:l,saveFavourite:r,saveText:d,canSave:s,isEdit:c,cancelText:f,cancelSelected:p,color:m,hoverColor:_,savePlaceText:v,cantSaveText:b,requiredText:h,fontWeights:g})=>u.default.createElement("div",{className:y,style:{"--color":`${m}`,"--hover-color":`${_}`,"--font-weight-medium":g.medium}},u.default.createElement("div",{className:R},u.default.createElement("div",{className:E},e)),u.default.createElement("div",{className:q},u.default.createElement("div",{className:I},t),u.default.createElement("div",{className:N},u.default.createElement("input",{"aria-label":o,className:w,value:i,placeholder:o,onChange:a}))),u.default.createElement("fieldset",{className:G},u.default.createElement("legend",{className:S},n,u.default.createElement("p",{className:J},h)),u.default.createElement("div",{className:T},l)),u.default.createElement("div",{className:C},u.default.createElement("button",{type:"button",className:`${O} ${H} ${s()?"":A}`,onClick:r,"aria-label":`${s()?v:b}`,"aria-disabled":!s()},d),c&&u.default.createElement("button",{type:"button",className:`${O} ${U} ${s()?"":A}`,onClick:p},f)));"production"!==process.env.NODE_ENV&&(B.propTypes={headerText:c.default.string.isRequired,autosuggestComponent:c.default.node.isRequired,inputPlaceholder:c.default.string.isRequired,specifyName:c.default.func.isRequired,name:c.default.string.isRequired,chooseIconText:c.default.string.isRequired,favouriteIconTable:c.default.node.isRequired,saveFavourite:c.default.func.isRequired,saveText:c.default.string.isRequired,canSave:c.default.func.isRequired,isEdit:c.default.bool,cancelText:c.default.string.isRequired,cancelSelected:c.default.func,color:c.default.string.isRequired,hoverColor:c.default.string.isRequired,savePlaceText:c.default.string.isRequired,cantSaveText:c.default.string.isRequired,requiredText:c.default.string.isRequired,fontWeights:c.default.shape({medium:c.default.number.isRequired}).isRequired}),B.defaultProps={isEdit:!1,cancelSelected:()=>({})};var z={"favourite-modal-mobile-container":"mobile_favourite-modal-mobile-container__rahUH","favourite-modal-mobile-top":"mobile_favourite-modal-mobile-top__RZX-c","favourite-modal-mobile-header":"mobile_favourite-modal-mobile-header__XR22e","favourite-modal-mobile-main":"mobile_favourite-modal-mobile-main__3SYyB","favourite-modal-mobile-location-search":"mobile_favourite-modal-mobile-location-search__DNNd-","favourite-modal-mobile-input":"mobile_favourite-modal-mobile-input__Q16OP","favourite-modal-mobile-text":"mobile_favourite-modal-mobile-text__5JRgC","favourite-modal-mobile-save":"mobile_favourite-modal-mobile-save__E-p51","favourite-modal-mobile-button":"mobile_favourite-modal-mobile-button__7aFOZ",disabled:"mobile_disabled__NTpua","sr-only":"mobile_sr-only__24tpU"};g(".mobile_favourite-modal-mobile-container__rahUH {\n display: flex;\n flex-direction: column; }\n .mobile_favourite-modal-mobile-container__rahUH .mobile_favourite-modal-mobile-top__RZX-c {\n display: flex;\n flex-direction: row;\n width: 100%;\n border-bottom: 1px solid #ddd;\n margin-bottom: 30px; }\n .mobile_favourite-modal-mobile-container__rahUH .mobile_favourite-modal-mobile-top__RZX-c .mobile_favourite-modal-mobile-header__XR22e {\n display: flex;\n justify-content: center;\n align-items: center;\n width: 100%;\n height: inherit;\n font-size: 18px;\n font-weight: var(--font-weight-medium);\n letter-spacing: -0.6px;\n text-align: center;\n color: #333333;\n margin-bottom: 37px; }\n .mobile_favourite-modal-mobile-container__rahUH .mobile_favourite-modal-mobile-main__3SYyB {\n text-align: left;\n margin-bottom: 28px; }\n .mobile_favourite-modal-mobile-container__rahUH .mobile_favourite-modal-mobile-main__3SYyB .mobile_favourite-modal-mobile-location-search__DNNd- {\n margin-bottom: 9px; }\n .mobile_favourite-modal-mobile-container__rahUH .mobile_favourite-modal-mobile-main__3SYyB .mobile_favourite-modal-mobile-input__Q16OP {\n display: flex;\n position: relative;\n width: 100%;\n height: 44px;\n font-family: 'Gotham Rounded A', 'Gotham Rounded B', 'Roboto', Arial, Georgia, Serif;\n border-radius: 5px;\n border: solid 1px #888888;\n background-color: #ffffff;\n padding-left: 20px;\n font-size: 16px;\n line-height: 1.2;\n letter-spacing: -0.5px;\n color: #333333;\n box-sizing: border-box;\n -webkit-appearance: none;\n appearance: none; }\n .mobile_favourite-modal-mobile-container__rahUH .mobile_favourite-modal-mobile-main__3SYyB .mobile_favourite-modal-mobile-input__Q16OP:focus {\n background: #fff;\n outline: none;\n border: 1px solid var(--color);\n box-shadow: 0px 0px 2px 1px var(--hover-color);\n -webkit-appearance: none; }\n .mobile_favourite-modal-mobile-container__rahUH .mobile_favourite-modal-mobile-main__3SYyB .mobile_favourite-modal-mobile-input__Q16OP::placeholder {\n color: #666666;\n font-size: 15px; }\n .mobile_favourite-modal-mobile-container__rahUH .mobile_favourite-modal-mobile-text__5JRgC {\n font-size: 16px;\n font-weight: var(--font-weight-medium);\n letter-spacing: -0.53px;\n color: #333333;\n margin-bottom: 18px; }\n .mobile_favourite-modal-mobile-container__rahUH .mobile_favourite-modal-mobile-save__E-p51 {\n width: 100%;\n margin-top: 30px; }\n .mobile_favourite-modal-mobile-container__rahUH .mobile_favourite-modal-mobile-save__E-p51 .mobile_favourite-modal-mobile-button__7aFOZ {\n display: flex;\n justify-content: center;\n align-items: center;\n position: relative;\n width: 100%;\n height: 50px;\n font-size: 18px;\n font-family: 'Gotham Rounded A', 'Gotham Rounded B', 'Roboto', Arial, Georgia, Serif;\n font-weight: var(--font-weight-medium);\n letter-spacing: -0.5px;\n background: var(--color);\n line-height: 0;\n text-align: center;\n padding: 0;\n margin: 0;\n color: #fff;\n border-width: 0;\n transition: background-color 300ms ease-out;\n border-radius: 25px;\n cursor: pointer; }\n .mobile_favourite-modal-mobile-container__rahUH .mobile_favourite-modal-mobile-save__E-p51 .mobile_favourite-modal-mobile-button__7aFOZ:active, .mobile_favourite-modal-mobile-container__rahUH .mobile_favourite-modal-mobile-save__E-p51 .mobile_favourite-modal-mobile-button__7aFOZ:focus, .mobile_favourite-modal-mobile-container__rahUH .mobile_favourite-modal-mobile-save__E-p51 .mobile_favourite-modal-mobile-button__7aFOZ:hover {\n border-color: var(--hover-color);\n background: var(--hover-color);\n color: #fff; }\n .mobile_favourite-modal-mobile-container__rahUH .mobile_favourite-modal-mobile-save__E-p51 .mobile_favourite-modal-mobile-button__7aFOZ.mobile_disabled__NTpua {\n background: #bbb; }\n .mobile_favourite-modal-mobile-container__rahUH .mobile_favourite-modal-mobile-save__E-p51 .mobile_favourite-modal-mobile-button__7aFOZ.mobile_disabled__NTpua:active {\n background: #bbb; }\n\n.mobile_sr-only__24tpU:not(:focus):not(:active) {\n clip: rect(0 0 0 0);\n -webkit-clip-path: inset(50%);\n clip-path: inset(50%);\n height: 1px;\n overflow: hidden;\n position: absolute;\n white-space: nowrap;\n width: 1px; }\n");const F=({headerText:e,autosuggestComponent:t,inputPlaceholder:o,specifyName:a,name:i,chooseIconText:n,favouriteIconTable:l,saveFavourite:r,saveText:d,canSave:s,color:c,hoverColor:f,savePlaceText:p,cantSaveText:m,requiredText:_,fontWeights:v})=>u.default.createElement("div",{className:z["favourite-modal-mobile-container"],style:{"--color":`${c}`,"--hover-color":`${f}`,"--font-weight-medium":v.medium}},u.default.createElement("div",{className:z["favourite-modal-mobile-top"]},u.default.createElement("div",{className:z["favourite-modal-mobile-header"]},e)),u.default.createElement("div",{className:z["favourite-modal-mobile-main"]},u.default.createElement("div",{className:z["favourite-modal-mobile-location-search"]},t),u.default.createElement("input",{className:z["favourite-modal-mobile-input"],value:i||"",placeholder:o,onChange:a})),u.default.createElement("div",{className:z["favourite-modal-mobile-text"]},n,u.default.createElement("p",{className:z["sr-only"]},_)),u.default.createElement("div",{className:z["favourite-modal-mobile-icons"]},l),u.default.createElement("div",{className:z["favourite-modal-mobile-save"]},u.default.createElement("button",{type:"button",className:`${z["favourite-modal-mobile-button"]} ${s()?"":z.disabled}`,onClick:r,"aria-label":`${s()?p:m}`},d)));"production"!==process.env.NODE_ENV&&(F.propTypes={headerText:c.default.string.isRequired,autosuggestComponent:c.default.node.isRequired,inputPlaceholder:c.default.string.isRequired,specifyName:c.default.func.isRequired,name:c.default.string.isRequired,chooseIconText:c.default.string.isRequired,favouriteIconTable:c.default.node.isRequired,saveFavourite:c.default.func.isRequired,saveText:c.default.string.isRequired,canSave:c.default.func.isRequired,color:c.default.string.isRequired,hoverColor:c.default.string.isRequired,savePlaceText:c.default.string.isRequired,cantSaveText:c.default.string.isRequired,requiredText:c.default.string.isRequired,fontWeights:c.default.shape({medium:c.default.number.isRequired}).isRequired}),p.default.init({lng:"fi",fallbackLng:"fi",defaultNS:"translation",interpolation:{escapeValue:!1}}),Object.keys(x).forEach((e=>{p.default.addResourceBundle(e,"translation",x[e])}));const K={"icon-icon_place":"place","icon-icon_home":"home","icon-icon_work":"work","icon-icon_sport":"sport","icon-icon_school":"school","icon-icon_shopping":"shopping"},P=({value:e,selectedIconId:o,handleClick:a,color:i})=>{const[n,l]=t.useState(!1),[r,d]=t.useState(!1),s=e===K[o]||n||r?"#ffffff":i;return u.default.createElement("button",{type:"button",className:f.default(k["favourite-icon-table-column"],k[e],e===K[o]&&k["selected-icon"]),onMouseEnter:()=>l(!0),onMouseLeave:()=>l(!1),onFocus:()=>d(!0),onBlur:()=>d(!1),onClick:()=>a(e),"aria-label":p.default.t(e)},u.default.createElement(b.default,{img:e,color:s}))};"production"!==process.env.NODE_ENV&&(P.propTypes={handleClick:c.default.func.isRequired,value:c.default.string,selectedIconId:c.default.string,color:c.default.string.isRequired});const j=({favouriteIconIds:e,selectedIconId:t,handleClick:o,color:a})=>{const i=e.map((e=>u.default.createElement(P,{key:`favourite-icon-table-${e}`,value:e,selectedIconId:t,handleClick:o,color:a})));return u.default.createElement("div",{className:k["generic-table"]},u.default.createElement("div",{className:k.row},i))};"production"!==process.env.NODE_ENV&&(j.propTypes={handleClick:c.default.func.isRequired,favouriteIconIds:c.default.array,selectedIconId:c.default.string,color:c.default.string.isRequired});class M extends u.default.Component{constructor(e){super(e),this.componentDidUpdate=()=>{p.default.language!==this.props.lang&&p.default.changeLanguage(this.props.lang)},this.componentWillUnmount=()=>{this.setState({favourite:null})},this.specifyName=e=>{const t=e.target.value;this.setState((e=>({favourite:h({},e.favourite,{name:t})})))},this.selectIcon=e=>{this.setState((t=>({favourite:h({},t.favourite,{selectedIconId:`icon-icon_${e}`})})))},this.isEdit=()=>this.state.favourite&&void 0!==this.state.favourite.favouriteId,this.canSave=()=>this.state.favourite&&!m.default(this.state.favourite.selectedIconId)&&_.default(this.state.favourite.lat)&&_.default(this.state.favourite.lon),this.closeModal=()=>{this.props.handleClose(),setTimeout((()=>{this.setState({favourite:null})}),250)},this.cancelSelected=()=>{this.props.cancelSelected(),setTimeout((()=>{this.setState({favourite:null})}),250)},this.save=()=>{if(this.canSave()){const e=m.default(this.state.favourite.name)?this.state.favourite.defaultName:this.state.favourite.name,t=h({},this.state.favourite,{name:e});delete t.defaultName,this.props.saveFavourite(h({},t,{type:"place"})),this.props.addAnalyticsEvent&&this.props.addAnalyticsEvent({category:"Favourite",action:"SaveFavourite",name:this.state.favourite.selectedIconId}),this.isEdit()&&this.props.cancelSelected?this.cancelSelected():this.closeModal()}},this.render=()=>{const{favourite:e}=this.state,{color:t,hoverColor:o,fontWeights:a}=this.props,i={headerText:this.isEdit()?p.default.t("edit-place"):p.default.t("save-place"),autosuggestComponent:h({},this.props.autosuggestComponent,{color:t,hoverColor:o}),inputPlaceholder:p.default.t("input-placeholder"),specifyName:this.specifyName,name:e&&e.name||"",chooseIconText:p.default.t("choose-icon"),favouriteIconTable:u.default.createElement(j,{selectedIconId:(()=>{if(e&&void 0!==e.selectedIconId)return e.selectedIconId})(),favouriteIconIds:M.favouriteIconIds,handleClick:this.selectIcon,color:t}),saveFavourite:this.save,saveText:p.default.t("save"),canSave:this.canSave,isEdit:this.isEdit(),cancelText:p.default.t("cancel"),cancelSelected:()=>this.cancelSelected(),color:t,hoverColor:o,savePlaceText:p.default.t("save-place"),cantSaveText:p.default.t("cannot-save-place"),requiredText:p.default.t("required-text"),fontWeights:a};return u.default.createElement(v.default,{appElement:this.props.appElement,contentLabel:this.isEdit()?p.default.t("favourite-modal-on-edit",e):p.default.t("favourite-modal-on-add-new"),closeButtonLabel:p.default.t("close-favourite-modal"),variant:this.props.isMobile?"large":"small",isOpen:this.props.isModalOpen,onCrossClick:()=>this.closeModal()},!this.props.isMobile&&u.default.createElement(B,i),this.props.isMobile&&u.default.createElement(F,i))},p.default.changeLanguage(e.lang),this.state={favourite:null},Object.keys(x).forEach((e=>{p.default.addResourceBundle(e,"translation",x[e])}))}}M.defaultProps={cancelSelected:()=>({}),lang:"fi",isMobile:!1,favourite:null,color:"#007ac9",hoverColor:"#0062a1",fontWeights:{medium:500}},M.favouriteIconIds=["place","home","work","sport","school","shopping"],M.getDerivedStateFromProps=(e,t)=>{const o=t.favourite,a=e.favourite;return m.default(a)?{favourite:null}:m.default(o)&&!m.default(a)?{favourite:h({},a)}:m.default(o)||m.default(a)||a.address===o.address&&a.lat===o.lat&&a.lon===o.lon?null:{favourite:h({},o,{address:a.address,lat:a.lat,lon:a.lon,gid:a.gid||null,name:o.name||a.name||"",defaultName:a.defaultName})}},"production"!==process.env.NODE_ENV&&(M.propTypes={isModalOpen:c.default.bool.isRequired,handleClose:c.default.func.isRequired,saveFavourite:c.default.func.isRequired,cancelSelected:c.default.func,autosuggestComponent:c.default.node,favourite:c.default.shape({type:c.default.string,address:c.default.string,gtfsId:c.default.string,gid:c.default.string,lat:c.default.number,lon:c.default.number,name:c.default.string,selectedIconId:c.default.string,favouriteId:c.default.string,layer:c.default.string,defaultName:c.default.string}),addAnalyticsEvent:c.default.func,lang:c.default.string,isMobile:c.default.bool,appElement:c.default.string.isRequired,color:c.default.string,hoverColor:c.default.string,fontWeights:c.default.shape({medium:c.default.number})}),e.default=M,Object.defineProperty(e,"__esModule",{value:!0})}));
|
|
2
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZGV2ZWxvcG1lbnQuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzLmpzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWluamVjdC9kaXN0L3N0eWxlLWluamVjdC5lcy5qcyIsIi4uL3NyYy9oZWxwZXJzL3RyYW5zbGF0aW9ucy5qcyIsIi4uL3NyYy9oZWxwZXJzL0Rlc2t0b3BNb2RhbC5qcyIsIi4uL3NyYy9oZWxwZXJzL01vYmlsZU1vZGFsLmpzIiwiLi4vc3JjL2luZGV4LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9leHRlbmRzKCkge1xuICBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gPyBPYmplY3QuYXNzaWduLmJpbmQoKSA6IGZ1bmN0aW9uICh0YXJnZXQpIHtcbiAgICBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTtcbiAgICAgIGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHtcbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHtcbiAgICAgICAgICB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0YXJnZXQ7XG4gIH07XG4gIHJldHVybiBfZXh0ZW5kcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xufSIsImZ1bmN0aW9uIHN0eWxlSW5qZWN0KGNzcywgcmVmKSB7XG4gIGlmICggcmVmID09PSB2b2lkIDAgKSByZWYgPSB7fTtcbiAgdmFyIGluc2VydEF0ID0gcmVmLmluc2VydEF0O1xuXG4gIGlmICghY3NzIHx8IHR5cGVvZiBkb2N1bWVudCA9PT0gJ3VuZGVmaW5lZCcpIHsgcmV0dXJuOyB9XG5cbiAgdmFyIGhlYWQgPSBkb2N1bWVudC5oZWFkIHx8IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylbMF07XG4gIHZhciBzdHlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7XG4gIHN0eWxlLnR5cGUgPSAndGV4dC9jc3MnO1xuXG4gIGlmIChpbnNlcnRBdCA9PT0gJ3RvcCcpIHtcbiAgICBpZiAoaGVhZC5maXJzdENoaWxkKSB7XG4gICAgICBoZWFkLmluc2VydEJlZm9yZShzdHlsZSwgaGVhZC5maXJzdENoaWxkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaGVhZC5hcHBlbmRDaGlsZChzdHlsZSk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGhlYWQuYXBwZW5kQ2hpbGQoc3R5bGUpO1xuICB9XG5cbiAgaWYgKHN0eWxlLnN0eWxlU2hlZXQpIHtcbiAgICBzdHlsZS5zdHlsZVNoZWV0LmNzc1RleHQgPSBjc3M7XG4gIH0gZWxzZSB7XG4gICAgc3R5bGUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoY3NzKSk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgc3R5bGVJbmplY3Q7XG4iLCJjb25zdCB0cmFuc2xhdGlvbnMgPSB7XG4gIGRlOiB7XG4gICAgY2FuY2VsOiAnQWJicmVjaGVuJyxcbiAgICAnY2hvb3NlLWljb24nOiAnV8OkaGxlbiBTaWUgZWluIFN5bWJvbCBmw7xyIGRpZXNlbiBPcnQnLFxuICAgICdjbG9zZS1mYXZvdXJpdGUtbW9kYWwnOiAnRmF2b3JpdGVuLURpYWxvZyBzY2hsaWXDn2VuJyxcbiAgICAnZWRpdC1wbGFjZSc6ICdPcnQgYmVhcmJlaXRlbicsXG4gICAgJ2Zhdm91cml0ZS1tb2RhbC1vbi1hZGQtbmV3JzogJ05ldWVuIEZhdm9yaXRlbiBoaW56dWbDvGdlbicsXG4gICAgJ2Zhdm91cml0ZS1tb2RhbC1vbi1lZGl0JzogJ0Zhdm9yaXQgYmVhcmJlaXRlbjoge3tmYXZvdXJpdGUubmFtZX19JyxcbiAgICAnaW5wdXQtcGxhY2Vob2xkZXInOiAnRWluZW4gTmFtZW4gZsO8ciBPcnQgc2V0emVuIChvcHRpb25hbCknLFxuICAgIHNhdmU6ICdTcGVpY2hlcm4nLFxuICAgICdzYXZlLXBsYWNlJzogJ0Zhdm9yaXQgc3BlaWNoZXJuJyxcbiAgfSxcbiAgZW46IHtcbiAgICBjYW5jZWw6ICdDYW5jZWwnLFxuICAgICdjaG9vc2UtaWNvbic6IFwiU2VsZWN0IHRoZSBwbGFjZSdzIGljb25cIixcbiAgICAnY2xvc2UtZmF2b3VyaXRlLW1vZGFsJzogJ0Nsb3NlIHRoZSBmYXZvdXJpdGUgbW9kYWwnLFxuICAgICdlZGl0LXBsYWNlJzogJ0VkaXQgcGxhY2UnLFxuICAgICdmYXZvdXJpdGUtbW9kYWwtb24tYWRkLW5ldyc6ICdBZGQgYSBuZXcgZmF2b3JpdGUnLFxuICAgICdmYXZvdXJpdGUtbW9kYWwtb24tZWRpdCc6ICdFZGl0aW5nIGZhdm91cml0ZToge3tmYXZvdXJpdGUubmFtZX19JyxcbiAgICAnaW5wdXQtcGxhY2Vob2xkZXInOiAnR2l2ZSB0aGUgbmFtZSBhIHBsYWNlIChvcHRpb25hbCknLFxuICAgIHNhdmU6ICdTYXZlJyxcbiAgICAnc2F2ZS1wbGFjZSc6ICdTYXZlIHBsYWNlJyxcbiAgICAnY2Fubm90LXNhdmUtcGxhY2UnOiAnQ2Fubm90IHNhdmUgYSBwbGFjZSB3aXRob3V0IGFkZHJlc3Mgb3IgaWNvbicsXG4gICAgcGxhY2U6ICdhIHBsYWNlJyxcbiAgICBob21lOiAnaG9tZScsXG4gICAgd29yazogJ3dvcmsnLFxuICAgIHNwb3J0OiAnc3BvcnQnLFxuICAgIHNjaG9vbDogJ3NjaG9vbCcsXG4gICAgc2hvcHBpbmc6ICdzaG9wcGluZycsXG4gICAgJ3JlcXVpcmVkLXRleHQnOiAncmVxdWlyZWQgZmllbGQnLFxuICB9LFxuICBmaToge1xuICAgIGNhbmNlbDogJ1BlcnV1dGEnLFxuICAgICdjaG9vc2UtaWNvbic6ICdWYWxpdHNlIHBhaWthbiBrdXZha2UnLFxuICAgICdjbG9zZS1mYXZvdXJpdGUtbW9kYWwnOiAnU3VsamUgc3Vvc2lra2ltb2RhYWxpJyxcbiAgICAnZWRpdC1wbGFjZSc6ICdNdW9ra2FhIHBhaWtrYWEnLFxuICAgICdmYXZvdXJpdGUtbW9kYWwtb24tYWRkLW5ldyc6ICdMaXPDpMOkIHV1c2kgc3Vvc2lra2knLFxuICAgICdmYXZvdXJpdGUtbW9kYWwtb24tZWRpdCc6ICdNdW9ra2FhIHN1b3Npa2tpYSB7e2Zhdm91cml0ZS5uYW1lfX0nLFxuICAgICdpbnB1dC1wbGFjZWhvbGRlcic6ICdBbm5hIHBhaWthbGxlIG5pbWkgKHZhcGFhZWh0b2luZW4pJyxcbiAgICBzYXZlOiAnVGFsbGVubmEnLFxuICAgICdzYXZlLXBsYWNlJzogJ1RhbGxlbm5hIHBhaWtrYScsXG4gICAgJ2Nhbm5vdC1zYXZlLXBsYWNlJzpcbiAgICAgICdQYWlra2FhIGlsbWFuIG9zb2l0ZXR0YSB0YWkgaWtvbmlhIGVpIHZvaWRhIHRhbGxlbnRhYScsXG4gICAgcGxhY2U6ICdwYWlra2EnLFxuICAgIGhvbWU6ICdrb3RpJyxcbiAgICB3b3JrOiAndHnDticsXG4gICAgc3BvcnQ6ICd1cmhlaWx1JyxcbiAgICBzY2hvb2w6ICdrb3VsdScsXG4gICAgc2hvcHBpbmc6ICdvc3Rva3NldCcsXG4gICAgJ3JlcXVpcmVkLXRleHQnOiAncGFrb2xsaW5lbiBrZW50dMOkJyxcbiAgfSxcbiAgc3Y6IHtcbiAgICBjYW5jZWw6ICdBdmJyeXQnLFxuICAgICdjaG9vc2UtaWNvbic6ICdWw6RsaiBwbGF0c2VucyBpa29uJyxcbiAgICAnY2xvc2UtZmF2b3VyaXRlLW1vZGFsJzogJ1N0w6RuZyBmYXZvcml0bW9kYWxlbicsXG4gICAgJ2VkaXQtcGxhY2UnOiAnUmVkaWdlcmEgcGxhdHMnLFxuICAgICdmYXZvdXJpdGUtbW9kYWwtb24tYWRkLW5ldyc6ICdMw6RnZyB0aWxsIG55IGZhdm9yaXQnLFxuICAgICdmYXZvdXJpdGUtbW9kYWwtb24tZWRpdCc6ICdSZWRpZ2VyYSBwbGF0c2VuOiB7e2Zhdm91cml0ZS5uYW1lfX0nLFxuICAgICdpbnB1dC1wbGFjZWhvbGRlcic6ICdBbmdlIHBsYXRzZW5zIG5hbW4gKGZyaXZpbGxpZ3QpJyxcbiAgICBzYXZlOiAnU3BhcmEnLFxuICAgICdzYXZlLXBsYWNlJzogJ1NwYXJhIHBsYXRzJyxcbiAgICAnY2Fubm90LXNhdmUtcGxhY2UnOlxuICAgICAgJ0RldCBnw6VyIGludGUgYXR0IHNwYXJhIGVuIHBsYXRzIHV0YW4gYWRyZXNzIGVsbGVyIGlrb24nLFxuICAgIHBsYWNlOiAnZW4gcGxhdHMnLFxuICAgIGhvbWU6ICdoZW0nLFxuICAgIHdvcms6ICdhcmJldGUnLFxuICAgIHNwb3J0OiAnc3BvcnQnLFxuICAgIHNjaG9vbDogJ3Nrb2xhJyxcbiAgICBzaG9wcGluZzogJ3Nob3BwYScsXG4gICAgJ3JlcXVpcmVkLWZpZWxkJzogJ29ibGlnYXRvcmlza3QgZsOkbHQnLFxuICB9LFxufTtcblxuZXhwb3J0IGRlZmF1bHQgdHJhbnNsYXRpb25zO1xuIiwiLyogZXNsaW50LWRpc2FibGUganN4LWExMXkvY2xpY2stZXZlbnRzLWhhdmUta2V5LWV2ZW50cyAqL1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgY3ggZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgc3R5bGVzIGZyb20gJy4vZGVza3RvcC5zY3NzJztcblxuY29uc3QgRGVza3RvcE1vZGFsID0gKHtcbiAgaGVhZGVyVGV4dCxcbiAgYXV0b3N1Z2dlc3RDb21wb25lbnQsXG4gIGlucHV0UGxhY2Vob2xkZXIsXG4gIHNwZWNpZnlOYW1lLFxuICBuYW1lLFxuICBjaG9vc2VJY29uVGV4dCxcbiAgZmF2b3VyaXRlSWNvblRhYmxlLFxuICBzYXZlRmF2b3VyaXRlLFxuICBzYXZlVGV4dCxcbiAgY2FuU2F2ZSxcbiAgaXNFZGl0LFxuICBjYW5jZWxUZXh0LFxuICBjYW5jZWxTZWxlY3RlZCxcbiAgY29sb3IsXG4gIGhvdmVyQ29sb3IsXG4gIHNhdmVQbGFjZVRleHQsXG4gIGNhbnRTYXZlVGV4dCxcbiAgcmVxdWlyZWRUZXh0LFxuICBmb250V2VpZ2h0cyxcbn0pID0+IHtcbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBjbGFzc05hbWU9e3N0eWxlc1snZmF2b3VyaXRlLW1vZGFsLWRlc2t0b3AtY29udGFpbmVyJ119XG4gICAgICBzdHlsZT17e1xuICAgICAgICAnLS1jb2xvcic6IGAke2NvbG9yfWAsXG4gICAgICAgICctLWhvdmVyLWNvbG9yJzogYCR7aG92ZXJDb2xvcn1gLFxuICAgICAgICAnLS1mb250LXdlaWdodC1tZWRpdW0nOiBmb250V2VpZ2h0cy5tZWRpdW0sXG4gICAgICB9fVxuICAgID5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXNbJ2Zhdm91cml0ZS1tb2RhbC1kZXNrdG9wLXRvcCddfT5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlc1snZmF2b3VyaXRlLW1vZGFsLWRlc2t0b3AtaGVhZGVyJ119PlxuICAgICAgICAgIHtoZWFkZXJUZXh0fVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlc1snZmF2b3VyaXRlLW1vZGFsLWRlc2t0b3AtbWFpbiddfT5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlc1snZmF2b3VyaXRlLW1vZGFsLWRlc2t0b3AtbG9jYXRpb24tc2VhcmNoJ119PlxuICAgICAgICAgIHthdXRvc3VnZ2VzdENvbXBvbmVudH1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXNbJ2Zhdm91cml0ZS1tb2RhbC1kZXNrdG9wLW5hbWUnXX0+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICBhcmlhLWxhYmVsPXtpbnB1dFBsYWNlaG9sZGVyfVxuICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXNbJ2Zhdm91cml0ZS1tb2RhbC1kZXNrdG9wLWlucHV0J119XG4gICAgICAgICAgICB2YWx1ZT17bmFtZX1cbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPXtpbnB1dFBsYWNlaG9sZGVyfVxuICAgICAgICAgICAgb25DaGFuZ2U9e3NwZWNpZnlOYW1lfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZmllbGRzZXQgY2xhc3NOYW1lPXtzdHlsZXNbJ2ljb25zLWNvbnRhaW5lciddfT5cbiAgICAgICAgPGxlZ2VuZCBjbGFzc05hbWU9e3N0eWxlc1snZmF2b3VyaXRlLW1vZGFsLWRlc2t0b3AtdGV4dCddfT5cbiAgICAgICAgICB7Y2hvb3NlSWNvblRleHR9XG4gICAgICAgICAgPHAgY2xhc3NOYW1lPXtzdHlsZXNbJ3NyLW9ubHknXX0+e3JlcXVpcmVkVGV4dH08L3A+XG4gICAgICAgIDwvbGVnZW5kPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzWydmYXZvdXJpdGUtbW9kYWwtZGVza3RvcC1pY29ucyddfT5cbiAgICAgICAgICB7ZmF2b3VyaXRlSWNvblRhYmxlfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZmllbGRzZXQ+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzWydmYXZvdXJpdGUtbW9kYWwtZGVza3RvcC1idXR0b25zJ119PlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtjeChcbiAgICAgICAgICAgIGAke3N0eWxlc1snZmF2b3VyaXRlLW1vZGFsLWRlc2t0b3AtYnV0dG9uJ119ICR7c3R5bGVzLnNhdmV9ICR7XG4gICAgICAgICAgICAgIGNhblNhdmUoKSA/ICcnIDogc3R5bGVzLmRpc2FibGVkXG4gICAgICAgICAgICB9YCxcbiAgICAgICAgICApfVxuICAgICAgICAgIG9uQ2xpY2s9e3NhdmVGYXZvdXJpdGV9XG4gICAgICAgICAgYXJpYS1sYWJlbD17YCR7Y2FuU2F2ZSgpID8gc2F2ZVBsYWNlVGV4dCA6IGNhbnRTYXZlVGV4dH1gfVxuICAgICAgICAgIGFyaWEtZGlzYWJsZWQ9eyFjYW5TYXZlKCl9XG4gICAgICAgID5cbiAgICAgICAgICB7c2F2ZVRleHR9XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICB7aXNFZGl0ICYmIChcbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y3goXG4gICAgICAgICAgICAgIGAke3N0eWxlc1snZmF2b3VyaXRlLW1vZGFsLWRlc2t0b3AtYnV0dG9uJ119ICR7c3R5bGVzLmVkaXR9ICR7XG4gICAgICAgICAgICAgICAgY2FuU2F2ZSgpID8gJycgOiBzdHlsZXMuZGlzYWJsZWRcbiAgICAgICAgICAgICAgfWAsXG4gICAgICAgICAgICApfVxuICAgICAgICAgICAgb25DbGljaz17Y2FuY2VsU2VsZWN0ZWR9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge2NhbmNlbFRleHR9XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICl9XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbkRlc2t0b3BNb2RhbC5wcm9wVHlwZXMgPSB7XG4gIGhlYWRlclRleHQ6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgYXV0b3N1Z2dlc3RDb21wb25lbnQ6IFByb3BUeXBlcy5ub2RlLmlzUmVxdWlyZWQsXG4gIGlucHV0UGxhY2Vob2xkZXI6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgc3BlY2lmeU5hbWU6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIG5hbWU6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgY2hvb3NlSWNvblRleHQ6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgZmF2b3VyaXRlSWNvblRhYmxlOiBQcm9wVHlwZXMubm9kZS5pc1JlcXVpcmVkLFxuICBzYXZlRmF2b3VyaXRlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBzYXZlVGV4dDogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICBjYW5TYXZlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBpc0VkaXQ6IFByb3BUeXBlcy5ib29sLFxuICBjYW5jZWxUZXh0OiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIGNhbmNlbFNlbGVjdGVkOiBQcm9wVHlwZXMuZnVuYyxcbiAgY29sb3I6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgaG92ZXJDb2xvcjogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICBzYXZlUGxhY2VUZXh0OiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIGNhbnRTYXZlVGV4dDogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICByZXF1aXJlZFRleHQ6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgZm9udFdlaWdodHM6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgbWVkaXVtOiBQcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWQsXG4gIH0pLmlzUmVxdWlyZWQsXG59O1xuXG5EZXNrdG9wTW9kYWwuZGVmYXVsdFByb3BzID0ge1xuICBpc0VkaXQ6IGZhbHNlLFxuICBjYW5jZWxTZWxlY3RlZDogKCkgPT4gKHt9KSxcbn07XG5cbmV4cG9ydCBkZWZhdWx0IERlc2t0b3BNb2RhbDtcbiIsIi8qIGVzbGludC1kaXNhYmxlIGpzeC1hMTF5L2NsaWNrLWV2ZW50cy1oYXZlLWtleS1ldmVudHMgKi9cbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IGN4IGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IHN0eWxlcyBmcm9tICcuL21vYmlsZS5zY3NzJztcblxuY29uc3QgTW9iaWxlTW9kYWwgPSAoe1xuICBoZWFkZXJUZXh0LFxuICBhdXRvc3VnZ2VzdENvbXBvbmVudCxcbiAgaW5wdXRQbGFjZWhvbGRlcixcbiAgc3BlY2lmeU5hbWUsXG4gIG5hbWUsXG4gIGNob29zZUljb25UZXh0LFxuICBmYXZvdXJpdGVJY29uVGFibGUsXG4gIHNhdmVGYXZvdXJpdGUsXG4gIHNhdmVUZXh0LFxuICBjYW5TYXZlLFxuICBjb2xvcixcbiAgaG92ZXJDb2xvcixcbiAgc2F2ZVBsYWNlVGV4dCxcbiAgY2FudFNhdmVUZXh0LFxuICByZXF1aXJlZFRleHQsXG4gIGZvbnRXZWlnaHRzLFxufSkgPT4ge1xuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGNsYXNzTmFtZT17c3R5bGVzWydmYXZvdXJpdGUtbW9kYWwtbW9iaWxlLWNvbnRhaW5lciddfVxuICAgICAgc3R5bGU9e3tcbiAgICAgICAgJy0tY29sb3InOiBgJHtjb2xvcn1gLFxuICAgICAgICAnLS1ob3Zlci1jb2xvcic6IGAke2hvdmVyQ29sb3J9YCxcbiAgICAgICAgJy0tZm9udC13ZWlnaHQtbWVkaXVtJzogZm9udFdlaWdodHMubWVkaXVtLFxuICAgICAgfX1cbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzWydmYXZvdXJpdGUtbW9kYWwtbW9iaWxlLXRvcCddfT5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlc1snZmF2b3VyaXRlLW1vZGFsLW1vYmlsZS1oZWFkZXInXX0+XG4gICAgICAgICAge2hlYWRlclRleHR9XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzWydmYXZvdXJpdGUtbW9kYWwtbW9iaWxlLW1haW4nXX0+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXNbJ2Zhdm91cml0ZS1tb2RhbC1tb2JpbGUtbG9jYXRpb24tc2VhcmNoJ119PlxuICAgICAgICAgIHthdXRvc3VnZ2VzdENvbXBvbmVudH1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzWydmYXZvdXJpdGUtbW9kYWwtbW9iaWxlLWlucHV0J119XG4gICAgICAgICAgdmFsdWU9e25hbWUgfHwgJyd9XG4gICAgICAgICAgcGxhY2Vob2xkZXI9e2lucHV0UGxhY2Vob2xkZXJ9XG4gICAgICAgICAgb25DaGFuZ2U9e3NwZWNpZnlOYW1lfVxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzWydmYXZvdXJpdGUtbW9kYWwtbW9iaWxlLXRleHQnXX0+XG4gICAgICAgIHtjaG9vc2VJY29uVGV4dH1cbiAgICAgICAgPHAgY2xhc3NOYW1lPXtzdHlsZXNbJ3NyLW9ubHknXX0+e3JlcXVpcmVkVGV4dH08L3A+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXNbJ2Zhdm91cml0ZS1tb2RhbC1tb2JpbGUtaWNvbnMnXX0+XG4gICAgICAgIHtmYXZvdXJpdGVJY29uVGFibGV9XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXNbJ2Zhdm91cml0ZS1tb2RhbC1tb2JpbGUtc2F2ZSddfT5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzTmFtZT17Y3goXG4gICAgICAgICAgICBgJHtzdHlsZXNbJ2Zhdm91cml0ZS1tb2RhbC1tb2JpbGUtYnV0dG9uJ119ICR7XG4gICAgICAgICAgICAgIGNhblNhdmUoKSA/ICcnIDogc3R5bGVzLmRpc2FibGVkXG4gICAgICAgICAgICB9YCxcbiAgICAgICAgICApfVxuICAgICAgICAgIG9uQ2xpY2s9e3NhdmVGYXZvdXJpdGV9XG4gICAgICAgICAgYXJpYS1sYWJlbD17YCR7Y2FuU2F2ZSgpID8gc2F2ZVBsYWNlVGV4dCA6IGNhbnRTYXZlVGV4dH1gfVxuICAgICAgICA+XG4gICAgICAgICAge3NhdmVUZXh0fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuTW9iaWxlTW9kYWwucHJvcFR5cGVzID0ge1xuICBoZWFkZXJUZXh0OiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIGF1dG9zdWdnZXN0Q29tcG9uZW50OiBQcm9wVHlwZXMubm9kZS5pc1JlcXVpcmVkLFxuICBpbnB1dFBsYWNlaG9sZGVyOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIHNwZWNpZnlOYW1lOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBuYW1lOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIGNob29zZUljb25UZXh0OiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIGZhdm91cml0ZUljb25UYWJsZTogUHJvcFR5cGVzLm5vZGUuaXNSZXF1aXJlZCxcbiAgc2F2ZUZhdm91cml0ZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgc2F2ZVRleHQ6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgY2FuU2F2ZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgY29sb3I6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgaG92ZXJDb2xvcjogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICBzYXZlUGxhY2VUZXh0OiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIGNhbnRTYXZlVGV4dDogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICByZXF1aXJlZFRleHQ6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgZm9udFdlaWdodHM6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgbWVkaXVtOiBQcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWQsXG4gIH0pLmlzUmVxdWlyZWQsXG59O1xuXG5leHBvcnQgZGVmYXVsdCBNb2JpbGVNb2RhbDtcbiIsIi8qIGVzbGludC1kaXNhYmxlIGpzeC1hMTF5L2NsaWNrLWV2ZW50cy1oYXZlLWtleS1ldmVudHMgKi9cbmltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgY3ggZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgaTE4bmV4dCBmcm9tICdpMThuZXh0JztcbmltcG9ydCBpc0VtcHR5IGZyb20gJ2xvZGFzaC9pc0VtcHR5JztcbmltcG9ydCBpc051bWJlciBmcm9tICdsb2Rhc2gvaXNOdW1iZXInO1xuaW1wb3J0IE1vZGFsIGZyb20gJ0Boc2wtZmkvbW9kYWwnO1xuaW1wb3J0IEljb24gZnJvbSAnQGRpZ2l0cmFuc2l0LWNvbXBvbmVudC9kaWdpdHJhbnNpdC1jb21wb25lbnQtaWNvbic7XG5pbXBvcnQgc3R5bGVzIGZyb20gJy4vaGVscGVycy9zdHlsZXMuc2Nzcyc7XG5pbXBvcnQgdHJhbnNsYXRpb25zIGZyb20gJy4vaGVscGVycy90cmFuc2xhdGlvbnMnO1xuaW1wb3J0IERlc2t0b3BNb2RhbCBmcm9tICcuL2hlbHBlcnMvRGVza3RvcE1vZGFsJztcbmltcG9ydCBNb2JpbGVNb2RhbCBmcm9tICcuL2hlbHBlcnMvTW9iaWxlTW9kYWwnO1xuXG5pMThuZXh0LmluaXQoe1xuICBsbmc6ICdmaScsXG4gIGZhbGxiYWNrTG5nOiAnZmknLFxuICBkZWZhdWx0TlM6ICd0cmFuc2xhdGlvbicsXG4gIGludGVycG9sYXRpb246IHtcbiAgICBlc2NhcGVWYWx1ZTogZmFsc2UsIC8vIG5vdCBuZWVkZWQgZm9yIHJlYWN0IGFzIGl0IGVzY2FwZXMgYnkgZGVmYXVsdFxuICB9LFxufSk7XG5cbk9iamVjdC5rZXlzKHRyYW5zbGF0aW9ucykuZm9yRWFjaChsYW5nID0+IHtcbiAgaTE4bmV4dC5hZGRSZXNvdXJjZUJ1bmRsZShsYW5nLCAndHJhbnNsYXRpb24nLCB0cmFuc2xhdGlvbnNbbGFuZ10pO1xufSk7XG5cbmNvbnN0IEZhdm91cml0ZUljb25JZFRvTmFtZU1hcCA9IHtcbiAgJ2ljb24taWNvbl9wbGFjZSc6ICdwbGFjZScsXG4gICdpY29uLWljb25faG9tZSc6ICdob21lJyxcbiAgJ2ljb24taWNvbl93b3JrJzogJ3dvcmsnLFxuICAnaWNvbi1pY29uX3Nwb3J0JzogJ3Nwb3J0JyxcbiAgJ2ljb24taWNvbl9zY2hvb2wnOiAnc2Nob29sJyxcbiAgJ2ljb24taWNvbl9zaG9wcGluZyc6ICdzaG9wcGluZycsXG59O1xuXG5jb25zdCBGYXZvdXJpdGVJY29uVGFibGVCdXR0b24gPSAoe1xuICB2YWx1ZSxcbiAgc2VsZWN0ZWRJY29uSWQsXG4gIGhhbmRsZUNsaWNrLFxuICBjb2xvcixcbn0pID0+IHtcbiAgY29uc3QgW2lzSG92ZXJlZCwgc2V0SG92ZXJdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbaXNGb2N1c2VkLCBzZXRGb2N1c10gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IGljb25Db2xvciA9XG4gICAgdmFsdWUgPT09IEZhdm91cml0ZUljb25JZFRvTmFtZU1hcFtzZWxlY3RlZEljb25JZF0gfHwgaXNIb3ZlcmVkIHx8IGlzRm9jdXNlZFxuICAgICAgPyAnI2ZmZmZmZidcbiAgICAgIDogY29sb3I7XG4gIHJldHVybiAoXG4gICAgPGJ1dHRvblxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICBjbGFzc05hbWU9e2N4KHN0eWxlc1snZmF2b3VyaXRlLWljb24tdGFibGUtY29sdW1uJ10sIHN0eWxlc1t2YWx1ZV0sIHtcbiAgICAgICAgW3N0eWxlc1snc2VsZWN0ZWQtaWNvbiddXTpcbiAgICAgICAgICB2YWx1ZSA9PT0gRmF2b3VyaXRlSWNvbklkVG9OYW1lTWFwW3NlbGVjdGVkSWNvbklkXSxcbiAgICAgIH0pfVxuICAgICAgb25Nb3VzZUVudGVyPXsoKSA9PiBzZXRIb3Zlcih0cnVlKX1cbiAgICAgIG9uTW91c2VMZWF2ZT17KCkgPT4gc2V0SG92ZXIoZmFsc2UpfVxuICAgICAgb25Gb2N1cz17KCkgPT4gc2V0Rm9jdXModHJ1ZSl9XG4gICAgICBvbkJsdXI9eygpID0+IHNldEZvY3VzKGZhbHNlKX1cbiAgICAgIG9uQ2xpY2s9eygpID0+IGhhbmRsZUNsaWNrKHZhbHVlKX1cbiAgICAgIGFyaWEtbGFiZWw9e2kxOG5leHQudCh2YWx1ZSl9XG4gICAgPlxuICAgICAgPEljb24gaW1nPXt2YWx1ZX0gY29sb3I9e2ljb25Db2xvcn0gLz5cbiAgICA8L2J1dHRvbj5cbiAgKTtcbn07XG5cbkZhdm91cml0ZUljb25UYWJsZUJ1dHRvbi5wcm9wVHlwZXMgPSB7XG4gIGhhbmRsZUNsaWNrOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICB2YWx1ZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgc2VsZWN0ZWRJY29uSWQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGNvbG9yOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG59O1xuXG5jb25zdCBGYXZvdXJpdGVJY29uVGFibGUgPSAoe1xuICBmYXZvdXJpdGVJY29uSWRzLFxuICBzZWxlY3RlZEljb25JZCxcbiAgaGFuZGxlQ2xpY2ssXG4gIGNvbG9yLFxufSkgPT4ge1xuICBjb25zdCBjb2x1bW5zID0gZmF2b3VyaXRlSWNvbklkcy5tYXAodmFsdWUgPT4gKFxuICAgIDxGYXZvdXJpdGVJY29uVGFibGVCdXR0b25cbiAgICAgIGtleT17YGZhdm91cml0ZS1pY29uLXRhYmxlLSR7dmFsdWV9YH1cbiAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgIHNlbGVjdGVkSWNvbklkPXtzZWxlY3RlZEljb25JZH1cbiAgICAgIGhhbmRsZUNsaWNrPXtoYW5kbGVDbGlja31cbiAgICAgIGNvbG9yPXtjb2xvcn1cbiAgICAvPlxuICApKTtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXNbJ2dlbmVyaWMtdGFibGUnXX0+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLnJvd30+e2NvbHVtbnN9PC9kaXY+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5GYXZvdXJpdGVJY29uVGFibGUucHJvcFR5cGVzID0ge1xuICBoYW5kbGVDbGljazogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgZmF2b3VyaXRlSWNvbklkczogUHJvcFR5cGVzLmFycmF5LFxuICBzZWxlY3RlZEljb25JZDogUHJvcFR5cGVzLnN0cmluZyxcbiAgY29sb3I6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbn07XG5cbi8qKlxuICogQGV4YW1wbGVcbiAqIDxGYXZvdXJpdGVNb2RhbFxuICogICBzaG93PXttb2RhbE9wZW59XG4gKiAgIGhhbmRsZUNsb3NlPXtoYW5kbGVDbG9zZX1cbiAqICAgc2F2ZUZhdm91cml0ZT17b25TYXZlRmF2b3VyaXRlfVxuICogICBsb2NhdGlvbj17c2VsZWN0ZWRMb2NhdGlvbn1cbiAqICAgZmF2b3VyaXRlPXtmYXZvdXJpdGV9XG4gKiAgIGxhbmc9e2xhbmd9XG4gKiAgIGF1dG9zdWdnZXN0Q29tcG9uZW50PXtcbiAqICAgICA8QXV0b1N1Z2dlc3RcbiAqICAgICAgIHNvdXJjZXM9e1snSGlzdG9yeScsICdEYXRhc291cmNlJ119XG4gKiAgICAgICB0YXJnZXRzPXtbJ0xvY2F0aW9ucycsICdDdXJyZW50UG9zaXRpb24nXX1cbiAqICAgICAgIGlkPVwiZmF2b3VyaXRlXCJcbiAqICAgICAgIGF1dG9Gb2N1cz17ZmFsc2V9XG4gKiAgICAgICBwbGFjZWhvbGRlcj1cInNlYXJjaC1hZGRyZXNzLW9yLXBsYWNlXCJcbiAqICAgICAgIHZhbHVlPXtzZWxlY3RlZExvY2F0aW9uLmFkZHJlc3MgfHwgJyd9XG4gKiAgICAgICBvbkZhdm91cml0ZVNlbGVjdGVkPXt0aGlzLnNldExvY2F0aW9uUHJvcGVydGllc31cbiAqICAgICAgIGxhbmc9e2xhbmd9XG4gKiAgICAgLz5cbiAqICAgfVxuICogLz5cbiAqL1xuY2xhc3MgRmF2b3VyaXRlTW9kYWwgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICBzdGF0aWMgcHJvcFR5cGVzID0ge1xuICAgIGlzTW9kYWxPcGVuOiBQcm9wVHlwZXMuYm9vbC5pc1JlcXVpcmVkLFxuICAgIC8qKiBSZXF1aXJlZC5cbiAgICAgKiBAdHlwZXtmdW5jdGlvbn0gKi9cbiAgICBoYW5kbGVDbG9zZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgICAvKiogUmVxdWlyZWQuXG4gICAgICogQHR5cGV7ZnVuY3Rpb259ICovXG4gICAgc2F2ZUZhdm91cml0ZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgICAvKiogUmVxdWlyZWQuIE9ubHkgdXNlZCB3aGVuIGVkaXRpbmcgZmF2b3VyaXRlLlxuICAgICAqIEB0eXBle2Z1bmN0aW9ufSAqL1xuICAgIGNhbmNlbFNlbGVjdGVkOiBQcm9wVHlwZXMuZnVuYyxcbiAgICAvKiogT3B0aW9uYWwuXG4gICAgICogQXV0b3N1Z2dlc3QgY29tcG9uZW50IGZvciBzZWFyY2hpbmcgbmV3IGZhdm91cml0ZXMuXG4gICAgICogQHR5cGV7bm9kZX1cbiAgICAgKi9cbiAgICBhdXRvc3VnZ2VzdENvbXBvbmVudDogUHJvcFR5cGVzLm5vZGUsXG4gICAgLyoqIE9wdGlvbmFsLlxuICAgICAqIE9iamVjdCB0byBwcmVmaWxsIGlucHV0IGZpZWxkIGZvciBuYW1lIGFuZC9vciBzZWxlY3RlZCBpY29uLlxuICAgICAqIEB0eXBlIHtvYmplY3R9XG4gICAgICogQHByb3BlcnR5IHtzdHJpbmd9IHR5cGVcbiAgICAgKiBAcHJvcGVydHkge3N0cmluZ30gYWRkcmVzc1xuICAgICAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBndGZzSWRcbiAgICAgKiBAcHJvcGVydHkge3N0cmluZ30gZ2lkXG4gICAgICogQHByb3BlcnR5IHtudW1iZXJ9IGxhdFxuICAgICAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBsb25cbiAgICAgKiBAcHJvcGVydHkge3N0cmluZ30gbmFtZVxuICAgICAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBzZWxlY3RlZEljb25JZFxuICAgICAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBmYXZvdXJpdGVJZFxuICAgICAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBsYXllclxuICAgICAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBkZWZhdWx0TmFtZVxuICAgICAqL1xuICAgIGZhdm91cml0ZTogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAgIHR5cGU6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgICBhZGRyZXNzOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgICAgZ3Rmc0lkOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgICAgZ2lkOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgICAgbGF0OiBQcm9wVHlwZXMubnVtYmVyLFxuICAgICAgbG9uOiBQcm9wVHlwZXMubnVtYmVyLFxuICAgICAgbmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgICAgIHNlbGVjdGVkSWNvbklkOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgICAgZmF2b3VyaXRlSWQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgICBsYXllcjogUHJvcFR5cGVzLnN0cmluZyxcbiAgICAgIGRlZmF1bHROYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIH0pLFxuICAgIC8qKiBPcHRpb25hbC5cbiAgICAgKiBAdHlwZSB7ZnVuY3Rpb259ICovXG4gICAgYWRkQW5hbHl0aWNzRXZlbnQ6IFByb3BUeXBlcy5mdW5jLFxuICAgIC8qKiBPcHRpb25hbC4gTGFuZ3VhZ2UsIGZpLCBlbiBvciBzdi5cbiAgICAgKiBAdHlwZSB7c3RyaW5nfSAqL1xuICAgIGxhbmc6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgLyoqIE9wdGlvbmFsLiAqL1xuICAgIGlzTW9iaWxlOiBQcm9wVHlwZXMuYm9vbCxcbiAgICBhcHBFbGVtZW50OiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gICAgY29sb3I6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgaG92ZXJDb2xvcjogUHJvcFR5cGVzLnN0cmluZyxcbiAgICAvKiogT3B0aW9uYWwuICovXG4gICAgZm9udFdlaWdodHM6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgICAvKiogRGVmYXVsdCB2YWx1ZSBpcyA1MDAuICovXG4gICAgICBtZWRpdW06IFByb3BUeXBlcy5udW1iZXIsXG4gICAgfSksXG4gIH07XG5cbiAgc3RhdGljIGRlZmF1bHRQcm9wcyA9IHtcbiAgICBjYW5jZWxTZWxlY3RlZDogKCkgPT4gKHt9KSxcbiAgICBsYW5nOiAnZmknLFxuICAgIGlzTW9iaWxlOiBmYWxzZSxcbiAgICBmYXZvdXJpdGU6IG51bGwsXG4gICAgY29sb3I6ICcjMDA3YWM5JyxcbiAgICBob3ZlckNvbG9yOiAnIzAwNjJhMScsXG4gICAgZm9udFdlaWdodHM6IHtcbiAgICAgIG1lZGl1bTogNTAwLFxuICAgIH0sXG4gIH07XG5cbiAgc3RhdGljIGZhdm91cml0ZUljb25JZHMgPSBbXG4gICAgJ3BsYWNlJyxcbiAgICAnaG9tZScsXG4gICAgJ3dvcmsnLFxuICAgICdzcG9ydCcsXG4gICAgJ3NjaG9vbCcsXG4gICAgJ3Nob3BwaW5nJyxcbiAgXTtcblxuICBjb25zdHJ1Y3Rvcihwcm9wcykge1xuICAgIHN1cGVyKHByb3BzKTtcbiAgICBpMThuZXh0LmNoYW5nZUxhbmd1YWdlKHByb3BzLmxhbmcpO1xuICAgIHRoaXMuc3RhdGUgPSB7XG4gICAgICBmYXZvdXJpdGU6IG51bGwsXG4gICAgfTtcbiAgICBPYmplY3Qua2V5cyh0cmFuc2xhdGlvbnMpLmZvckVhY2gobGFuZyA9PiB7XG4gICAgICBpMThuZXh0LmFkZFJlc291cmNlQnVuZGxlKGxhbmcsICd0cmFuc2xhdGlvbicsIHRyYW5zbGF0aW9uc1tsYW5nXSk7XG4gICAgfSk7XG4gIH1cblxuICBzdGF0aWMgZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzID0gKG5leHRQcm9wcywgcHJldlN0YXRlKSA9PiB7XG4gICAgY29uc3QgcHJldkZhdiA9IHByZXZTdGF0ZS5mYXZvdXJpdGU7XG4gICAgY29uc3QgbmV4dEZhdiA9IG5leHRQcm9wcy5mYXZvdXJpdGU7XG5cbiAgICBpZiAoaXNFbXB0eShuZXh0RmF2KSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZmF2b3VyaXRlOiBudWxsLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBpZiAoaXNFbXB0eShwcmV2RmF2KSAmJiAhaXNFbXB0eShuZXh0RmF2KSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZmF2b3VyaXRlOiB7XG4gICAgICAgICAgLi4ubmV4dEZhdixcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfVxuICAgIGlmIChcbiAgICAgICFpc0VtcHR5KHByZXZGYXYpICYmXG4gICAgICAhaXNFbXB0eShuZXh0RmF2KSAmJlxuICAgICAgKG5leHRGYXYuYWRkcmVzcyAhPT0gcHJldkZhdi5hZGRyZXNzIHx8XG4gICAgICAgIG5leHRGYXYubGF0ICE9PSBwcmV2RmF2LmxhdCB8fFxuICAgICAgICBuZXh0RmF2LmxvbiAhPT0gcHJldkZhdi5sb24pXG4gICAgKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBmYXZvdXJpdGU6IHtcbiAgICAgICAgICAuLi5wcmV2RmF2LFxuICAgICAgICAgIGFkZHJlc3M6IG5leHRGYXYuYWRkcmVzcyxcbiAgICAgICAgICBsYXQ6IG5leHRGYXYubGF0LFxuICAgICAgICAgIGxvbjogbmV4dEZhdi5sb24sXG4gICAgICAgICAgZ2lkOiBuZXh0RmF2LmdpZCB8fCBudWxsLFxuICAgICAgICAgIG5hbWU6IHByZXZGYXYubmFtZSB8fCBuZXh0RmF2Lm5hbWUgfHwgJycsXG4gICAgICAgICAgZGVmYXVsdE5hbWU6IG5leHRGYXYuZGVmYXVsdE5hbWUsXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfTtcblxuICBjb21wb25lbnREaWRVcGRhdGUgPSAoKSA9PiB7XG4gICAgaWYgKGkxOG5leHQubGFuZ3VhZ2UgIT09IHRoaXMucHJvcHMubGFuZykge1xuICAgICAgaTE4bmV4dC5jaGFuZ2VMYW5ndWFnZSh0aGlzLnByb3BzLmxhbmcpO1xuICAgIH1cbiAgfTtcblxuICBjb21wb25lbnRXaWxsVW5tb3VudCA9ICgpID0+IHtcbiAgICB0aGlzLnNldFN0YXRlKHsgZmF2b3VyaXRlOiBudWxsIH0pO1xuICB9O1xuXG4gIHNwZWNpZnlOYW1lID0gZXZlbnQgPT4ge1xuICAgIGNvbnN0IG5hbWUgPSBldmVudC50YXJnZXQudmFsdWU7XG4gICAgdGhpcy5zZXRTdGF0ZShwcmV2U3RhdGUgPT4gKHtcbiAgICAgIGZhdm91cml0ZTogeyAuLi5wcmV2U3RhdGUuZmF2b3VyaXRlLCBuYW1lIH0sXG4gICAgfSkpO1xuICB9O1xuXG4gIHNlbGVjdEljb24gPSBpZCA9PiB7XG4gICAgdGhpcy5zZXRTdGF0ZShwcmV2U3RhdGUgPT4gKHtcbiAgICAgIGZhdm91cml0ZToge1xuICAgICAgICAuLi5wcmV2U3RhdGUuZmF2b3VyaXRlLFxuICAgICAgICBzZWxlY3RlZEljb25JZDogYGljb24taWNvbl8ke2lkfWAsXG4gICAgICB9LFxuICAgIH0pKTtcbiAgfTtcblxuICBpc0VkaXQgPSAoKSA9PlxuICAgIHRoaXMuc3RhdGUuZmF2b3VyaXRlICYmIHRoaXMuc3RhdGUuZmF2b3VyaXRlLmZhdm91cml0ZUlkICE9PSB1bmRlZmluZWQ7XG5cbiAgY2FuU2F2ZSA9ICgpID0+XG4gICAgdGhpcy5zdGF0ZS5mYXZvdXJpdGUgJiZcbiAgICAhaXNFbXB0eSh0aGlzLnN0YXRlLmZhdm91cml0ZS5zZWxlY3RlZEljb25JZCkgJiZcbiAgICBpc051bWJlcih0aGlzLnN0YXRlLmZhdm91cml0ZS5sYXQpICYmXG4gICAgaXNOdW1iZXIodGhpcy5zdGF0ZS5mYXZvdXJpdGUubG9uKTtcblxuICBjbG9zZU1vZGFsID0gKCkgPT4ge1xuICAgIHRoaXMucHJvcHMuaGFuZGxlQ2xvc2UoKTtcbiAgICAvLyBoc2wtZmkvbW9kYWwgY2xvc2UgYW5pbWF0aW9uIGxhc3RzIDI1MG1zXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLnNldFN0YXRlKHsgZmF2b3VyaXRlOiBudWxsIH0pO1xuICAgIH0sIDI1MCk7XG4gIH07XG5cbiAgY2FuY2VsU2VsZWN0ZWQgPSAoKSA9PiB7XG4gICAgdGhpcy5wcm9wcy5jYW5jZWxTZWxlY3RlZCgpO1xuICAgIC8vIGhzbC1maS9tb2RhbCBjbG9zZSBhbmltYXRpb24gbGFzdHMgMjUwbXNcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuc2V0U3RhdGUoeyBmYXZvdXJpdGU6IG51bGwgfSk7XG4gICAgfSwgMjUwKTtcbiAgfTtcblxuICBzYXZlID0gKCkgPT4ge1xuICAgIGlmICh0aGlzLmNhblNhdmUoKSkge1xuICAgICAgY29uc3QgbmFtZSA9IGlzRW1wdHkodGhpcy5zdGF0ZS5mYXZvdXJpdGUubmFtZSlcbiAgICAgICAgPyB0aGlzLnN0YXRlLmZhdm91cml0ZS5kZWZhdWx0TmFtZVxuICAgICAgICA6IHRoaXMuc3RhdGUuZmF2b3VyaXRlLm5hbWU7XG5cbiAgICAgIGNvbnN0IGZhdm91cml0ZSA9IHsgLi4udGhpcy5zdGF0ZS5mYXZvdXJpdGUsIG5hbWUgfTtcbiAgICAgIGRlbGV0ZSBmYXZvdXJpdGUuZGVmYXVsdE5hbWU7XG4gICAgICB0aGlzLnByb3BzLnNhdmVGYXZvdXJpdGUoeyAuLi5mYXZvdXJpdGUsIHR5cGU6ICdwbGFjZScgfSk7XG4gICAgICBpZiAodGhpcy5wcm9wcy5hZGRBbmFseXRpY3NFdmVudCkge1xuICAgICAgICB0aGlzLnByb3BzLmFkZEFuYWx5dGljc0V2ZW50KHtcbiAgICAgICAgICBjYXRlZ29yeTogJ0Zhdm91cml0ZScsXG4gICAgICAgICAgYWN0aW9uOiAnU2F2ZUZhdm91cml0ZScsXG4gICAgICAgICAgbmFtZTogdGhpcy5zdGF0ZS5mYXZvdXJpdGUuc2VsZWN0ZWRJY29uSWQsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuaXNFZGl0KCkgJiYgdGhpcy5wcm9wcy5jYW5jZWxTZWxlY3RlZCkge1xuICAgICAgICB0aGlzLmNhbmNlbFNlbGVjdGVkKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmNsb3NlTW9kYWwoKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgcmVuZGVyID0gKCkgPT4ge1xuICAgIGNvbnN0IHsgZmF2b3VyaXRlIH0gPSB0aGlzLnN0YXRlO1xuICAgIGNvbnN0IHsgY29sb3IsIGhvdmVyQ29sb3IsIGZvbnRXZWlnaHRzIH0gPSB0aGlzLnByb3BzO1xuICAgIGNvbnN0IGhlYWRlclRleHQgPSB0aGlzLmlzRWRpdCgpXG4gICAgICA/IGkxOG5leHQudCgnZWRpdC1wbGFjZScpXG4gICAgICA6IGkxOG5leHQudCgnc2F2ZS1wbGFjZScpO1xuICAgIGNvbnN0IG1vZGFsUHJvcHMgPSB7XG4gICAgICBoZWFkZXJUZXh0LFxuICAgICAgYXV0b3N1Z2dlc3RDb21wb25lbnQ6IHtcbiAgICAgICAgLi4udGhpcy5wcm9wcy5hdXRvc3VnZ2VzdENvbXBvbmVudCxcbiAgICAgICAgY29sb3IsXG4gICAgICAgIGhvdmVyQ29sb3IsXG4gICAgICB9LFxuICAgICAgaW5wdXRQbGFjZWhvbGRlcjogaTE4bmV4dC50KCdpbnB1dC1wbGFjZWhvbGRlcicpLFxuICAgICAgc3BlY2lmeU5hbWU6IHRoaXMuc3BlY2lmeU5hbWUsXG4gICAgICBuYW1lOiAoZmF2b3VyaXRlICYmIGZhdm91cml0ZS5uYW1lKSB8fCAnJyxcbiAgICAgIGNob29zZUljb25UZXh0OiBpMThuZXh0LnQoJ2Nob29zZS1pY29uJyksXG4gICAgICBmYXZvdXJpdGVJY29uVGFibGU6IChcbiAgICAgICAgPEZhdm91cml0ZUljb25UYWJsZVxuICAgICAgICAgIHNlbGVjdGVkSWNvbklkPXsoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKChmYXZvdXJpdGUgJiYgZmF2b3VyaXRlLnNlbGVjdGVkSWNvbklkICE9PSB1bmRlZmluZWQpIHx8IG51bGwpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGZhdm91cml0ZS5zZWxlY3RlZEljb25JZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgfSkoKX1cbiAgICAgICAgICBmYXZvdXJpdGVJY29uSWRzPXtGYXZvdXJpdGVNb2RhbC5mYXZvdXJpdGVJY29uSWRzfVxuICAgICAgICAgIGhhbmRsZUNsaWNrPXt0aGlzLnNlbGVjdEljb259XG4gICAgICAgICAgY29sb3I9e2NvbG9yfVxuICAgICAgICAvPlxuICAgICAgKSxcbiAgICAgIHNhdmVGYXZvdXJpdGU6IHRoaXMuc2F2ZSxcbiAgICAgIHNhdmVUZXh0OiBpMThuZXh0LnQoJ3NhdmUnKSxcbiAgICAgIGNhblNhdmU6IHRoaXMuY2FuU2F2ZSxcbiAgICAgIGlzRWRpdDogdGhpcy5pc0VkaXQoKSxcbiAgICAgIGNhbmNlbFRleHQ6IGkxOG5leHQudCgnY2FuY2VsJyksXG4gICAgICBjYW5jZWxTZWxlY3RlZDogKCkgPT4gdGhpcy5jYW5jZWxTZWxlY3RlZCgpLFxuICAgICAgY29sb3IsXG4gICAgICBob3ZlckNvbG9yLFxuICAgICAgc2F2ZVBsYWNlVGV4dDogaTE4bmV4dC50KCdzYXZlLXBsYWNlJyksXG4gICAgICBjYW50U2F2ZVRleHQ6IGkxOG5leHQudCgnY2Fubm90LXNhdmUtcGxhY2UnKSxcbiAgICAgIHJlcXVpcmVkVGV4dDogaTE4bmV4dC50KCdyZXF1aXJlZC10ZXh0JyksXG4gICAgICBmb250V2VpZ2h0cyxcbiAgICB9O1xuICAgIHJldHVybiAoXG4gICAgICA8TW9kYWxcbiAgICAgICAgYXBwRWxlbWVudD17dGhpcy5wcm9wcy5hcHBFbGVtZW50fVxuICAgICAgICBjb250ZW50TGFiZWw9e1xuICAgICAgICAgIHRoaXMuaXNFZGl0KClcbiAgICAgICAgICAgID8gaTE4bmV4dC50KCdmYXZvdXJpdGUtbW9kYWwtb24tZWRpdCcsIGZhdm91cml0ZSlcbiAgICAgICAgICAgIDogaTE4bmV4dC50KCdmYXZvdXJpdGUtbW9kYWwtb24tYWRkLW5ldycpXG4gICAgICAgIH1cbiAgICAgICAgY2xvc2VCdXR0b25MYWJlbD17aTE4bmV4dC50KCdjbG9zZS1mYXZvdXJpdGUtbW9kYWwnKX1cbiAgICAgICAgdmFyaWFudD17IXRoaXMucHJvcHMuaXNNb2JpbGUgPyAnc21hbGwnIDogJ2xhcmdlJ31cbiAgICAgICAgaXNPcGVuPXt0aGlzLnByb3BzLmlzTW9kYWxPcGVufVxuICAgICAgICBvbkNyb3NzQ2xpY2s9eygpID0+IHRoaXMuY2xvc2VNb2RhbCgpfVxuICAgICAgPlxuICAgICAgICB7IXRoaXMucHJvcHMuaXNNb2JpbGUgJiYgPERlc2t0b3BNb2RhbCB7Li4ubW9kYWxQcm9wc30gLz59XG4gICAgICAgIHt0aGlzLnByb3BzLmlzTW9iaWxlICYmIDxNb2JpbGVNb2RhbCB7Li4ubW9kYWxQcm9wc30gLz59XG4gICAgICA8L01vZGFsPlxuICAgICk7XG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IEZhdm91cml0ZU1vZGFsO1xuIl0sIm5hbWVzIjpbIl9leHRlbmRzIiwiT2JqZWN0IiwiYXNzaWduIiwiYmluZCIsInRhcmdldCIsImkiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJzb3VyY2UiLCJrZXkiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJhcHBseSIsInRoaXMiLCJzdHlsZUluamVjdCIsImNzcyIsInJlZiIsImluc2VydEF0IiwiZG9jdW1lbnQiLCJoZWFkIiwiZ2V0RWxlbWVudHNCeVRhZ05hbWUiLCJzdHlsZSIsImNyZWF0ZUVsZW1lbnQiLCJ0eXBlIiwiZmlyc3RDaGlsZCIsImluc2VydEJlZm9yZSIsImFwcGVuZENoaWxkIiwic3R5bGVTaGVldCIsImNzc1RleHQiLCJjcmVhdGVUZXh0Tm9kZSIsInRyYW5zbGF0aW9ucyIsImRlIiwiY2FuY2VsIiwic2F2ZSIsImVuIiwicGxhY2UiLCJob21lIiwid29yayIsInNwb3J0Iiwic2Nob29sIiwic2hvcHBpbmciLCJmaSIsInN2IiwiRGVza3RvcE1vZGFsIiwiaGVhZGVyVGV4dCIsImF1dG9zdWdnZXN0Q29tcG9uZW50IiwiaW5wdXRQbGFjZWhvbGRlciIsInNwZWNpZnlOYW1lIiwibmFtZSIsImNob29zZUljb25UZXh0IiwiZmF2b3VyaXRlSWNvblRhYmxlIiwic2F2ZUZhdm91cml0ZSIsInNhdmVUZXh0IiwiY2FuU2F2ZSIsImlzRWRpdCIsImNhbmNlbFRleHQiLCJjYW5jZWxTZWxlY3RlZCIsImNvbG9yIiwiaG92ZXJDb2xvciIsInNhdmVQbGFjZVRleHQiLCJjYW50U2F2ZVRleHQiLCJyZXF1aXJlZFRleHQiLCJmb250V2VpZ2h0cyIsIlJlYWN0IiwiY2xhc3NOYW1lIiwic3R5bGVzIiwibWVkaXVtIiwidmFsdWUiLCJwbGFjZWhvbGRlciIsIm9uQ2hhbmdlIiwib25DbGljayIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsInByb3BUeXBlcyIsIlByb3BUeXBlcyIsInN0cmluZyIsImlzUmVxdWlyZWQiLCJub2RlIiwiZnVuYyIsImJvb2wiLCJzaGFwZSIsIm51bWJlciIsImRlZmF1bHRQcm9wcyIsIk1vYmlsZU1vZGFsIiwiZGlzYWJsZWQiLCJpbml0IiwibG5nIiwiZmFsbGJhY2tMbmciLCJkZWZhdWx0TlMiLCJpbnRlcnBvbGF0aW9uIiwiZXNjYXBlVmFsdWUiLCJrZXlzIiwiZm9yRWFjaCIsImxhbmciLCJpMThuZXh0IiwiYWRkUmVzb3VyY2VCdW5kbGUiLCJGYXZvdXJpdGVJY29uSWRUb05hbWVNYXAiLCJGYXZvdXJpdGVJY29uVGFibGVCdXR0b24iLCJzZWxlY3RlZEljb25JZCIsImhhbmRsZUNsaWNrIiwiaXNIb3ZlcmVkIiwic2V0SG92ZXIiLCJ1c2VTdGF0ZSIsImlzRm9jdXNlZCIsInNldEZvY3VzIiwiaWNvbkNvbG9yIiwiY3giLCJvbk1vdXNlRW50ZXIiLCJvbk1vdXNlTGVhdmUiLCJvbkZvY3VzIiwib25CbHVyIiwidCIsIkljb24iLCJpbWciLCJGYXZvdXJpdGVJY29uVGFibGUiLCJmYXZvdXJpdGVJY29uSWRzIiwiY29sdW1ucyIsIm1hcCIsInJvdyIsImFycmF5IiwiRmF2b3VyaXRlTW9kYWwiLCJDb21wb25lbnQiLCJjb25zdHJ1Y3RvciIsInByb3BzIiwic3VwZXIiLCJjb21wb25lbnREaWRVcGRhdGUiLCJsYW5ndWFnZSIsImNoYW5nZUxhbmd1YWdlIiwiY29tcG9uZW50V2lsbFVubW91bnQiLCJzZXRTdGF0ZSIsImZhdm91cml0ZSIsImV2ZW50IiwicHJldlN0YXRlIiwic2VsZWN0SWNvbiIsImlkIiwic3RhdGUiLCJ1bmRlZmluZWQiLCJmYXZvdXJpdGVJZCIsImlzRW1wdHkiLCJpc051bWJlciIsImxhdCIsImxvbiIsImNsb3NlTW9kYWwiLCJoYW5kbGVDbG9zZSIsInNldFRpbWVvdXQiLCJkZWZhdWx0TmFtZSIsImFkZEFuYWx5dGljc0V2ZW50IiwiY2F0ZWdvcnkiLCJhY3Rpb24iLCJyZW5kZXIiLCJtb2RhbFByb3BzIiwiTW9kYWwiLCJhcHBFbGVtZW50IiwiY29udGVudExhYmVsIiwiY2xvc2VCdXR0b25MYWJlbCIsInZhcmlhbnQiLCJpc01vYmlsZSIsImlzT3BlbiIsImlzTW9kYWxPcGVuIiwib25Dcm9zc0NsaWNrIiwiZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzIiwibmV4dFByb3BzIiwicHJldkZhdiIsIm5leHRGYXYiLCJhZGRyZXNzIiwiZ2lkIiwiZ3Rmc0lkIiwibGF5ZXIiXSwibWFwcGluZ3MiOiJnM0JBQWUsU0FBU0EsSUFZdEIsT0FYQUEsRUFBV0MsT0FBT0MsT0FBU0QsT0FBT0MsT0FBT0MsT0FBUyxTQUFVQyxHQUMxRCxJQUFLLElBQUlDLEVBQUksRUFBR0EsRUFBSUMsVUFBVUMsT0FBUUYsSUFBSyxDQUN6QyxJQUFJRyxFQUFTRixVQUFVRCxHQUN2QixJQUFLLElBQUlJLEtBQU9ELEVBQ1ZQLE9BQU9TLFVBQVVDLGVBQWVDLEtBQUtKLEVBQVFDLEtBQy9DTCxFQUFPSyxHQUFPRCxFQUFPQyxJQUkzQixPQUFPTCxHQUVGSixFQUFTYSxNQUFNQyxLQUFNUixVQUM5QixDQ2JBLFNBQVNTLEVBQVlDLEVBQUtDLFFBQ1gsSUFBUkEsSUFBaUJBLEVBQU0sSUFDNUIsSUFBSUMsRUFBV0QsRUFBSUMsU0FFbkIsR0FBS0YsR0FBMkIsb0JBQWJHLFNBQW5CLENBRUEsSUFBSUMsRUFBT0QsU0FBU0MsTUFBUUQsU0FBU0UscUJBQXFCLFFBQVEsR0FD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
|
|
2
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZGV2ZWxvcG1lbnQuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzLmpzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWluamVjdC9kaXN0L3N0eWxlLWluamVjdC5lcy5qcyIsIi4uL3NyYy9oZWxwZXJzL3RyYW5zbGF0aW9ucy5qcyIsIi4uL3NyYy9oZWxwZXJzL0Rlc2t0b3BNb2RhbC5qcyIsIi4uL3NyYy9oZWxwZXJzL01vYmlsZU1vZGFsLmpzIiwiLi4vc3JjL2luZGV4LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9leHRlbmRzKCkge1xuICBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gPyBPYmplY3QuYXNzaWduLmJpbmQoKSA6IGZ1bmN0aW9uICh0YXJnZXQpIHtcbiAgICBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTtcbiAgICAgIGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHtcbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHtcbiAgICAgICAgICB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0YXJnZXQ7XG4gIH07XG4gIHJldHVybiBfZXh0ZW5kcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xufSIsImZ1bmN0aW9uIHN0eWxlSW5qZWN0KGNzcywgcmVmKSB7XG4gIGlmICggcmVmID09PSB2b2lkIDAgKSByZWYgPSB7fTtcbiAgdmFyIGluc2VydEF0ID0gcmVmLmluc2VydEF0O1xuXG4gIGlmICghY3NzIHx8IHR5cGVvZiBkb2N1bWVudCA9PT0gJ3VuZGVmaW5lZCcpIHsgcmV0dXJuOyB9XG5cbiAgdmFyIGhlYWQgPSBkb2N1bWVudC5oZWFkIHx8IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylbMF07XG4gIHZhciBzdHlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7XG4gIHN0eWxlLnR5cGUgPSAndGV4dC9jc3MnO1xuXG4gIGlmIChpbnNlcnRBdCA9PT0gJ3RvcCcpIHtcbiAgICBpZiAoaGVhZC5maXJzdENoaWxkKSB7XG4gICAgICBoZWFkLmluc2VydEJlZm9yZShzdHlsZSwgaGVhZC5maXJzdENoaWxkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaGVhZC5hcHBlbmRDaGlsZChzdHlsZSk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGhlYWQuYXBwZW5kQ2hpbGQoc3R5bGUpO1xuICB9XG5cbiAgaWYgKHN0eWxlLnN0eWxlU2hlZXQpIHtcbiAgICBzdHlsZS5zdHlsZVNoZWV0LmNzc1RleHQgPSBjc3M7XG4gIH0gZWxzZSB7XG4gICAgc3R5bGUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoY3NzKSk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgc3R5bGVJbmplY3Q7XG4iLCJjb25zdCB0cmFuc2xhdGlvbnMgPSB7XG4gIGRlOiB7XG4gICAgY2FuY2VsOiAnQWJicmVjaGVuJyxcbiAgICAnY2hvb3NlLWljb24nOiAnV8OkaGxlbiBTaWUgZWluIFN5bWJvbCBmw7xyIGRpZXNlbiBPcnQnLFxuICAgICdjbG9zZS1mYXZvdXJpdGUtbW9kYWwnOiAnRmF2b3JpdGVuLURpYWxvZyBzY2hsaWXDn2VuJyxcbiAgICAnZWRpdC1wbGFjZSc6ICdPcnQgYmVhcmJlaXRlbicsXG4gICAgJ2Zhdm91cml0ZS1tb2RhbC1vbi1hZGQtbmV3JzogJ05ldWVuIEZhdm9yaXRlbiBoaW56dWbDvGdlbicsXG4gICAgJ2Zhdm91cml0ZS1tb2RhbC1vbi1lZGl0JzogJ0Zhdm9yaXQgYmVhcmJlaXRlbjoge3tmYXZvdXJpdGUubmFtZX19JyxcbiAgICAnaW5wdXQtcGxhY2Vob2xkZXInOiAnRWluZW4gTmFtZW4gZsO8ciBPcnQgc2V0emVuIChvcHRpb25hbCknLFxuICAgIHNhdmU6ICdTcGVpY2hlcm4nLFxuICAgICdzYXZlLXBsYWNlJzogJ0Zhdm9yaXQgc3BlaWNoZXJuJyxcbiAgfSxcbiAgZW46IHtcbiAgICBjYW5jZWw6ICdDYW5jZWwnLFxuICAgICdjaG9vc2UtaWNvbic6IFwiU2VsZWN0IHRoZSBwbGFjZSdzIGljb25cIixcbiAgICAnY2xvc2UtZmF2b3VyaXRlLW1vZGFsJzogJ0Nsb3NlIHRoZSBmYXZvdXJpdGUgbW9kYWwnLFxuICAgICdlZGl0LXBsYWNlJzogJ0VkaXQgcGxhY2UnLFxuICAgICdmYXZvdXJpdGUtbW9kYWwtb24tYWRkLW5ldyc6ICdBZGQgYSBuZXcgZmF2b3JpdGUnLFxuICAgICdmYXZvdXJpdGUtbW9kYWwtb24tZWRpdCc6ICdFZGl0aW5nIGZhdm91cml0ZToge3tmYXZvdXJpdGUubmFtZX19JyxcbiAgICAnaW5wdXQtcGxhY2Vob2xkZXInOiAnR2l2ZSB0aGUgbmFtZSBhIHBsYWNlIChvcHRpb25hbCknLFxuICAgIHNhdmU6ICdTYXZlJyxcbiAgICAnc2F2ZS1wbGFjZSc6ICdTYXZlIHBsYWNlJyxcbiAgICAnY2Fubm90LXNhdmUtcGxhY2UnOiAnQ2Fubm90IHNhdmUgYSBwbGFjZSB3aXRob3V0IGFkZHJlc3Mgb3IgaWNvbicsXG4gICAgcGxhY2U6ICdhIHBsYWNlJyxcbiAgICBob21lOiAnaG9tZScsXG4gICAgd29yazogJ3dvcmsnLFxuICAgIHNwb3J0OiAnc3BvcnQnLFxuICAgIHNjaG9vbDogJ3NjaG9vbCcsXG4gICAgc2hvcHBpbmc6ICdzaG9wcGluZycsXG4gICAgJ3JlcXVpcmVkLXRleHQnOiAncmVxdWlyZWQgZmllbGQnLFxuICB9LFxuICBmaToge1xuICAgIGNhbmNlbDogJ1BlcnV1dGEnLFxuICAgICdjaG9vc2UtaWNvbic6ICdWYWxpdHNlIHBhaWthbiBrdXZha2UnLFxuICAgICdjbG9zZS1mYXZvdXJpdGUtbW9kYWwnOiAnU3VsamUgc3Vvc2lra2ltb2RhYWxpJyxcbiAgICAnZWRpdC1wbGFjZSc6ICdNdW9ra2FhIHBhaWtrYWEnLFxuICAgICdmYXZvdXJpdGUtbW9kYWwtb24tYWRkLW5ldyc6ICdMaXPDpMOkIHV1c2kgc3Vvc2lra2knLFxuICAgICdmYXZvdXJpdGUtbW9kYWwtb24tZWRpdCc6ICdNdW9ra2FhIHN1b3Npa2tpYSB7e2Zhdm91cml0ZS5uYW1lfX0nLFxuICAgICdpbnB1dC1wbGFjZWhvbGRlcic6ICdBbm5hIHBhaWthbGxlIG5pbWkgKHZhcGFhZWh0b2luZW4pJyxcbiAgICBzYXZlOiAnVGFsbGVubmEnLFxuICAgICdzYXZlLXBsYWNlJzogJ1RhbGxlbm5hIHBhaWtrYScsXG4gICAgJ2Nhbm5vdC1zYXZlLXBsYWNlJzpcbiAgICAgICdQYWlra2FhIGlsbWFuIG9zb2l0ZXR0YSB0YWkgaWtvbmlhIGVpIHZvaWRhIHRhbGxlbnRhYScsXG4gICAgcGxhY2U6ICdwYWlra2EnLFxuICAgIGhvbWU6ICdrb3RpJyxcbiAgICB3b3JrOiAndHnDticsXG4gICAgc3BvcnQ6ICd1cmhlaWx1JyxcbiAgICBzY2hvb2w6ICdrb3VsdScsXG4gICAgc2hvcHBpbmc6ICdvc3Rva3NldCcsXG4gICAgJ3JlcXVpcmVkLXRleHQnOiAncGFrb2xsaW5lbiBrZW50dMOkJyxcbiAgfSxcbiAgc3Y6IHtcbiAgICBjYW5jZWw6ICdBdmJyeXQnLFxuICAgICdjaG9vc2UtaWNvbic6ICdWw6RsaiBwbGF0c2VucyBpa29uJyxcbiAgICAnY2xvc2UtZmF2b3VyaXRlLW1vZGFsJzogJ1N0w6RuZyBmYXZvcml0bW9kYWxlbicsXG4gICAgJ2VkaXQtcGxhY2UnOiAnUmVkaWdlcmEgcGxhdHMnLFxuICAgICdmYXZvdXJpdGUtbW9kYWwtb24tYWRkLW5ldyc6ICdMw6RnZyB0aWxsIG55IGZhdm9yaXQnLFxuICAgICdmYXZvdXJpdGUtbW9kYWwtb24tZWRpdCc6ICdSZWRpZ2VyYSBwbGF0c2VuOiB7e2Zhdm91cml0ZS5uYW1lfX0nLFxuICAgICdpbnB1dC1wbGFjZWhvbGRlcic6ICdBbmdlIHBsYXRzZW5zIG5hbW4gKGZyaXZpbGxpZ3QpJyxcbiAgICBzYXZlOiAnU3BhcmEnLFxuICAgICdzYXZlLXBsYWNlJzogJ1NwYXJhIHBsYXRzJyxcbiAgICAnY2Fubm90LXNhdmUtcGxhY2UnOlxuICAgICAgJ0RldCBnw6VyIGludGUgYXR0IHNwYXJhIGVuIHBsYXRzIHV0YW4gYWRyZXNzIGVsbGVyIGlrb24nLFxuICAgIHBsYWNlOiAnZW4gcGxhdHMnLFxuICAgIGhvbWU6ICdoZW0nLFxuICAgIHdvcms6ICdhcmJldGUnLFxuICAgIHNwb3J0OiAnc3BvcnQnLFxuICAgIHNjaG9vbDogJ3Nrb2xhJyxcbiAgICBzaG9wcGluZzogJ3Nob3BwYScsXG4gICAgJ3JlcXVpcmVkLWZpZWxkJzogJ29ibGlnYXRvcmlza3QgZsOkbHQnLFxuICB9LFxufTtcblxuZXhwb3J0IGRlZmF1bHQgdHJhbnNsYXRpb25zO1xuIiwiLyogZXNsaW50LWRpc2FibGUganN4LWExMXkvY2xpY2stZXZlbnRzLWhhdmUta2V5LWV2ZW50cyAqL1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgY3ggZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgc3R5bGVzIGZyb20gJy4vZGVza3RvcC5zY3NzJztcblxuY29uc3QgRGVza3RvcE1vZGFsID0gKHtcbiAgaGVhZGVyVGV4dCxcbiAgYXV0b3N1Z2dlc3RDb21wb25lbnQsXG4gIGlucHV0UGxhY2Vob2xkZXIsXG4gIHNwZWNpZnlOYW1lLFxuICBuYW1lLFxuICBjaG9vc2VJY29uVGV4dCxcbiAgZmF2b3VyaXRlSWNvblRhYmxlLFxuICBzYXZlRmF2b3VyaXRlLFxuICBzYXZlVGV4dCxcbiAgY2FuU2F2ZSxcbiAgaXNFZGl0LFxuICBjYW5jZWxUZXh0LFxuICBjYW5jZWxTZWxlY3RlZCxcbiAgY29sb3IsXG4gIGhvdmVyQ29sb3IsXG4gIHNhdmVQbGFjZVRleHQsXG4gIGNhbnRTYXZlVGV4dCxcbiAgcmVxdWlyZWRUZXh0LFxuICBmb250V2VpZ2h0cyxcbn0pID0+IHtcbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBjbGFzc05hbWU9e3N0eWxlc1snZmF2b3VyaXRlLW1vZGFsLWRlc2t0b3AtY29udGFpbmVyJ119XG4gICAgICBzdHlsZT17e1xuICAgICAgICAnLS1jb2xvcic6IGAke2NvbG9yfWAsXG4gICAgICAgICctLWhvdmVyLWNvbG9yJzogYCR7aG92ZXJDb2xvcn1gLFxuICAgICAgICAnLS1mb250LXdlaWdodC1tZWRpdW0nOiBmb250V2VpZ2h0cy5tZWRpdW0sXG4gICAgICB9fVxuICAgID5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXNbJ2Zhdm91cml0ZS1tb2RhbC1kZXNrdG9wLXRvcCddfT5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlc1snZmF2b3VyaXRlLW1vZGFsLWRlc2t0b3AtaGVhZGVyJ119PlxuICAgICAgICAgIHtoZWFkZXJUZXh0fVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlc1snZmF2b3VyaXRlLW1vZGFsLWRlc2t0b3AtbWFpbiddfT5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlc1snZmF2b3VyaXRlLW1vZGFsLWRlc2t0b3AtbG9jYXRpb24tc2VhcmNoJ119PlxuICAgICAgICAgIHthdXRvc3VnZ2VzdENvbXBvbmVudH1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXNbJ2Zhdm91cml0ZS1tb2RhbC1kZXNrdG9wLW5hbWUnXX0+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICBhcmlhLWxhYmVsPXtpbnB1dFBsYWNlaG9sZGVyfVxuICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXNbJ2Zhdm91cml0ZS1tb2RhbC1kZXNrdG9wLWlucHV0J119XG4gICAgICAgICAgICB2YWx1ZT17bmFtZX1cbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPXtpbnB1dFBsYWNlaG9sZGVyfVxuICAgICAgICAgICAgb25DaGFuZ2U9e3NwZWNpZnlOYW1lfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZmllbGRzZXQgY2xhc3NOYW1lPXtzdHlsZXNbJ2ljb25zLWNvbnRhaW5lciddfT5cbiAgICAgICAgPGxlZ2VuZCBjbGFzc05hbWU9e3N0eWxlc1snZmF2b3VyaXRlLW1vZGFsLWRlc2t0b3AtdGV4dCddfT5cbiAgICAgICAgICB7Y2hvb3NlSWNvblRleHR9XG4gICAgICAgICAgPHAgY2xhc3NOYW1lPXtzdHlsZXNbJ3NyLW9ubHknXX0+e3JlcXVpcmVkVGV4dH08L3A+XG4gICAgICAgIDwvbGVnZW5kPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzWydmYXZvdXJpdGUtbW9kYWwtZGVza3RvcC1pY29ucyddfT5cbiAgICAgICAgICB7ZmF2b3VyaXRlSWNvblRhYmxlfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZmllbGRzZXQ+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzWydmYXZvdXJpdGUtbW9kYWwtZGVza3RvcC1idXR0b25zJ119PlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtjeChcbiAgICAgICAgICAgIGAke3N0eWxlc1snZmF2b3VyaXRlLW1vZGFsLWRlc2t0b3AtYnV0dG9uJ119ICR7c3R5bGVzLnNhdmV9ICR7XG4gICAgICAgICAgICAgIGNhblNhdmUoKSA/ICcnIDogc3R5bGVzLmRpc2FibGVkXG4gICAgICAgICAgICB9YCxcbiAgICAgICAgICApfVxuICAgICAgICAgIG9uQ2xpY2s9e3NhdmVGYXZvdXJpdGV9XG4gICAgICAgICAgYXJpYS1sYWJlbD17YCR7Y2FuU2F2ZSgpID8gc2F2ZVBsYWNlVGV4dCA6IGNhbnRTYXZlVGV4dH1gfVxuICAgICAgICAgIGFyaWEtZGlzYWJsZWQ9eyFjYW5TYXZlKCl9XG4gICAgICAgID5cbiAgICAgICAgICB7c2F2ZVRleHR9XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICB7aXNFZGl0ICYmIChcbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y3goXG4gICAgICAgICAgICAgIGAke3N0eWxlc1snZmF2b3VyaXRlLW1vZGFsLWRlc2t0b3AtYnV0dG9uJ119ICR7c3R5bGVzLmVkaXR9ICR7XG4gICAgICAgICAgICAgICAgY2FuU2F2ZSgpID8gJycgOiBzdHlsZXMuZGlzYWJsZWRcbiAgICAgICAgICAgICAgfWAsXG4gICAgICAgICAgICApfVxuICAgICAgICAgICAgb25DbGljaz17Y2FuY2VsU2VsZWN0ZWR9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge2NhbmNlbFRleHR9XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICl9XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbkRlc2t0b3BNb2RhbC5wcm9wVHlwZXMgPSB7XG4gIGhlYWRlclRleHQ6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgYXV0b3N1Z2dlc3RDb21wb25lbnQ6IFByb3BUeXBlcy5ub2RlLmlzUmVxdWlyZWQsXG4gIGlucHV0UGxhY2Vob2xkZXI6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgc3BlY2lmeU5hbWU6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIG5hbWU6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgY2hvb3NlSWNvblRleHQ6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgZmF2b3VyaXRlSWNvblRhYmxlOiBQcm9wVHlwZXMubm9kZS5pc1JlcXVpcmVkLFxuICBzYXZlRmF2b3VyaXRlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBzYXZlVGV4dDogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICBjYW5TYXZlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBpc0VkaXQ6IFByb3BUeXBlcy5ib29sLFxuICBjYW5jZWxUZXh0OiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIGNhbmNlbFNlbGVjdGVkOiBQcm9wVHlwZXMuZnVuYyxcbiAgY29sb3I6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgaG92ZXJDb2xvcjogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICBzYXZlUGxhY2VUZXh0OiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIGNhbnRTYXZlVGV4dDogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICByZXF1aXJlZFRleHQ6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgZm9udFdlaWdodHM6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgbWVkaXVtOiBQcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWQsXG4gIH0pLmlzUmVxdWlyZWQsXG59O1xuXG5EZXNrdG9wTW9kYWwuZGVmYXVsdFByb3BzID0ge1xuICBpc0VkaXQ6IGZhbHNlLFxuICBjYW5jZWxTZWxlY3RlZDogKCkgPT4gKHt9KSxcbn07XG5cbmV4cG9ydCBkZWZhdWx0IERlc2t0b3BNb2RhbDtcbiIsIi8qIGVzbGludC1kaXNhYmxlIGpzeC1hMTF5L2NsaWNrLWV2ZW50cy1oYXZlLWtleS1ldmVudHMgKi9cbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IGN4IGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IHN0eWxlcyBmcm9tICcuL21vYmlsZS5zY3NzJztcblxuY29uc3QgTW9iaWxlTW9kYWwgPSAoe1xuICBoZWFkZXJUZXh0LFxuICBhdXRvc3VnZ2VzdENvbXBvbmVudCxcbiAgaW5wdXRQbGFjZWhvbGRlcixcbiAgc3BlY2lmeU5hbWUsXG4gIG5hbWUsXG4gIGNob29zZUljb25UZXh0LFxuICBmYXZvdXJpdGVJY29uVGFibGUsXG4gIHNhdmVGYXZvdXJpdGUsXG4gIHNhdmVUZXh0LFxuICBjYW5TYXZlLFxuICBjb2xvcixcbiAgaG92ZXJDb2xvcixcbiAgc2F2ZVBsYWNlVGV4dCxcbiAgY2FudFNhdmVUZXh0LFxuICByZXF1aXJlZFRleHQsXG4gIGZvbnRXZWlnaHRzLFxufSkgPT4ge1xuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGNsYXNzTmFtZT17c3R5bGVzWydmYXZvdXJpdGUtbW9kYWwtbW9iaWxlLWNvbnRhaW5lciddfVxuICAgICAgc3R5bGU9e3tcbiAgICAgICAgJy0tY29sb3InOiBgJHtjb2xvcn1gLFxuICAgICAgICAnLS1ob3Zlci1jb2xvcic6IGAke2hvdmVyQ29sb3J9YCxcbiAgICAgICAgJy0tZm9udC13ZWlnaHQtbWVkaXVtJzogZm9udFdlaWdodHMubWVkaXVtLFxuICAgICAgfX1cbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzWydmYXZvdXJpdGUtbW9kYWwtbW9iaWxlLXRvcCddfT5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlc1snZmF2b3VyaXRlLW1vZGFsLW1vYmlsZS1oZWFkZXInXX0+XG4gICAgICAgICAge2hlYWRlclRleHR9XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzWydmYXZvdXJpdGUtbW9kYWwtbW9iaWxlLW1haW4nXX0+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXNbJ2Zhdm91cml0ZS1tb2RhbC1tb2JpbGUtbG9jYXRpb24tc2VhcmNoJ119PlxuICAgICAgICAgIHthdXRvc3VnZ2VzdENvbXBvbmVudH1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzWydmYXZvdXJpdGUtbW9kYWwtbW9iaWxlLWlucHV0J119XG4gICAgICAgICAgdmFsdWU9e25hbWUgfHwgJyd9XG4gICAgICAgICAgcGxhY2Vob2xkZXI9e2lucHV0UGxhY2Vob2xkZXJ9XG4gICAgICAgICAgb25DaGFuZ2U9e3NwZWNpZnlOYW1lfVxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzWydmYXZvdXJpdGUtbW9kYWwtbW9iaWxlLXRleHQnXX0+XG4gICAgICAgIHtjaG9vc2VJY29uVGV4dH1cbiAgICAgICAgPHAgY2xhc3NOYW1lPXtzdHlsZXNbJ3NyLW9ubHknXX0+e3JlcXVpcmVkVGV4dH08L3A+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXNbJ2Zhdm91cml0ZS1tb2RhbC1tb2JpbGUtaWNvbnMnXX0+XG4gICAgICAgIHtmYXZvdXJpdGVJY29uVGFibGV9XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXNbJ2Zhdm91cml0ZS1tb2RhbC1tb2JpbGUtc2F2ZSddfT5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzTmFtZT17Y3goXG4gICAgICAgICAgICBgJHtzdHlsZXNbJ2Zhdm91cml0ZS1tb2RhbC1tb2JpbGUtYnV0dG9uJ119ICR7XG4gICAgICAgICAgICAgIGNhblNhdmUoKSA/ICcnIDogc3R5bGVzLmRpc2FibGVkXG4gICAgICAgICAgICB9YCxcbiAgICAgICAgICApfVxuICAgICAgICAgIG9uQ2xpY2s9e3NhdmVGYXZvdXJpdGV9XG4gICAgICAgICAgYXJpYS1sYWJlbD17YCR7Y2FuU2F2ZSgpID8gc2F2ZVBsYWNlVGV4dCA6IGNhbnRTYXZlVGV4dH1gfVxuICAgICAgICA+XG4gICAgICAgICAge3NhdmVUZXh0fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuTW9iaWxlTW9kYWwucHJvcFR5cGVzID0ge1xuICBoZWFkZXJUZXh0OiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIGF1dG9zdWdnZXN0Q29tcG9uZW50OiBQcm9wVHlwZXMubm9kZS5pc1JlcXVpcmVkLFxuICBpbnB1dFBsYWNlaG9sZGVyOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIHNwZWNpZnlOYW1lOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBuYW1lOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIGNob29zZUljb25UZXh0OiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIGZhdm91cml0ZUljb25UYWJsZTogUHJvcFR5cGVzLm5vZGUuaXNSZXF1aXJlZCxcbiAgc2F2ZUZhdm91cml0ZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgc2F2ZVRleHQ6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgY2FuU2F2ZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgY29sb3I6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgaG92ZXJDb2xvcjogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICBzYXZlUGxhY2VUZXh0OiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIGNhbnRTYXZlVGV4dDogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICByZXF1aXJlZFRleHQ6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgZm9udFdlaWdodHM6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgbWVkaXVtOiBQcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWQsXG4gIH0pLmlzUmVxdWlyZWQsXG59O1xuXG5leHBvcnQgZGVmYXVsdCBNb2JpbGVNb2RhbDtcbiIsIi8qIGVzbGludC1kaXNhYmxlIGpzeC1hMTF5L2NsaWNrLWV2ZW50cy1oYXZlLWtleS1ldmVudHMgKi9cbmltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgY3ggZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgaTE4bmV4dCBmcm9tICdpMThuZXh0JztcbmltcG9ydCBpc0VtcHR5IGZyb20gJ2xvZGFzaC9pc0VtcHR5JztcbmltcG9ydCBpc051bWJlciBmcm9tICdsb2Rhc2gvaXNOdW1iZXInO1xuaW1wb3J0IE1vZGFsIGZyb20gJ0Boc2wtZmkvbW9kYWwnO1xuaW1wb3J0IEljb24gZnJvbSAnQGRpZ2l0cmFuc2l0LWNvbXBvbmVudC9kaWdpdHJhbnNpdC1jb21wb25lbnQtaWNvbic7XG5pbXBvcnQgc3R5bGVzIGZyb20gJy4vaGVscGVycy9zdHlsZXMuc2Nzcyc7XG5pbXBvcnQgdHJhbnNsYXRpb25zIGZyb20gJy4vaGVscGVycy90cmFuc2xhdGlvbnMnO1xuaW1wb3J0IERlc2t0b3BNb2RhbCBmcm9tICcuL2hlbHBlcnMvRGVza3RvcE1vZGFsJztcbmltcG9ydCBNb2JpbGVNb2RhbCBmcm9tICcuL2hlbHBlcnMvTW9iaWxlTW9kYWwnO1xuXG5pMThuZXh0LmluaXQoe1xuICBsbmc6ICdmaScsXG4gIGZhbGxiYWNrTG5nOiAnZmknLFxuICBkZWZhdWx0TlM6ICd0cmFuc2xhdGlvbicsXG4gIGludGVycG9sYXRpb246IHtcbiAgICBlc2NhcGVWYWx1ZTogZmFsc2UsIC8vIG5vdCBuZWVkZWQgZm9yIHJlYWN0IGFzIGl0IGVzY2FwZXMgYnkgZGVmYXVsdFxuICB9LFxufSk7XG5cbk9iamVjdC5rZXlzKHRyYW5zbGF0aW9ucykuZm9yRWFjaChsYW5nID0+IHtcbiAgaTE4bmV4dC5hZGRSZXNvdXJjZUJ1bmRsZShsYW5nLCAndHJhbnNsYXRpb24nLCB0cmFuc2xhdGlvbnNbbGFuZ10pO1xufSk7XG5cbmNvbnN0IEZhdm91cml0ZUljb25JZFRvTmFtZU1hcCA9IHtcbiAgJ2ljb24taWNvbl9wbGFjZSc6ICdwbGFjZScsXG4gICdpY29uLWljb25faG9tZSc6ICdob21lJyxcbiAgJ2ljb24taWNvbl93b3JrJzogJ3dvcmsnLFxuICAnaWNvbi1pY29uX3Nwb3J0JzogJ3Nwb3J0JyxcbiAgJ2ljb24taWNvbl9zY2hvb2wnOiAnc2Nob29sJyxcbiAgJ2ljb24taWNvbl9zaG9wcGluZyc6ICdzaG9wcGluZycsXG59O1xuXG5jb25zdCBGYXZvdXJpdGVJY29uVGFibGVCdXR0b24gPSAoe1xuICB2YWx1ZSxcbiAgc2VsZWN0ZWRJY29uSWQsXG4gIGhhbmRsZUNsaWNrLFxuICBjb2xvcixcbn0pID0+IHtcbiAgY29uc3QgW2lzSG92ZXJlZCwgc2V0SG92ZXJdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbaXNGb2N1c2VkLCBzZXRGb2N1c10gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IGljb25Db2xvciA9XG4gICAgdmFsdWUgPT09IEZhdm91cml0ZUljb25JZFRvTmFtZU1hcFtzZWxlY3RlZEljb25JZF0gfHwgaXNIb3ZlcmVkIHx8IGlzRm9jdXNlZFxuICAgICAgPyAnI2ZmZmZmZidcbiAgICAgIDogY29sb3I7XG4gIHJldHVybiAoXG4gICAgPGJ1dHRvblxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICBjbGFzc05hbWU9e2N4KHN0eWxlc1snZmF2b3VyaXRlLWljb24tdGFibGUtY29sdW1uJ10sIHN0eWxlc1t2YWx1ZV0sIHtcbiAgICAgICAgW3N0eWxlc1snc2VsZWN0ZWQtaWNvbiddXTpcbiAgICAgICAgICB2YWx1ZSA9PT0gRmF2b3VyaXRlSWNvbklkVG9OYW1lTWFwW3NlbGVjdGVkSWNvbklkXSxcbiAgICAgIH0pfVxuICAgICAgb25Nb3VzZUVudGVyPXsoKSA9PiBzZXRIb3Zlcih0cnVlKX1cbiAgICAgIG9uTW91c2VMZWF2ZT17KCkgPT4gc2V0SG92ZXIoZmFsc2UpfVxuICAgICAgb25Gb2N1cz17KCkgPT4gc2V0Rm9jdXModHJ1ZSl9XG4gICAgICBvbkJsdXI9eygpID0+IHNldEZvY3VzKGZhbHNlKX1cbiAgICAgIG9uQ2xpY2s9eygpID0+IGhhbmRsZUNsaWNrKHZhbHVlKX1cbiAgICAgIGFyaWEtbGFiZWw9e2kxOG5leHQudCh2YWx1ZSl9XG4gICAgPlxuICAgICAgPEljb24gaW1nPXt2YWx1ZX0gY29sb3I9e2ljb25Db2xvcn0gLz5cbiAgICA8L2J1dHRvbj5cbiAgKTtcbn07XG5cbkZhdm91cml0ZUljb25UYWJsZUJ1dHRvbi5wcm9wVHlwZXMgPSB7XG4gIGhhbmRsZUNsaWNrOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICB2YWx1ZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgc2VsZWN0ZWRJY29uSWQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGNvbG9yOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG59O1xuXG5jb25zdCBGYXZvdXJpdGVJY29uVGFibGUgPSAoe1xuICBmYXZvdXJpdGVJY29uSWRzLFxuICBzZWxlY3RlZEljb25JZCxcbiAgaGFuZGxlQ2xpY2ssXG4gIGNvbG9yLFxufSkgPT4ge1xuICBjb25zdCBjb2x1bW5zID0gZmF2b3VyaXRlSWNvbklkcy5tYXAodmFsdWUgPT4gKFxuICAgIDxGYXZvdXJpdGVJY29uVGFibGVCdXR0b25cbiAgICAgIGtleT17YGZhdm91cml0ZS1pY29uLXRhYmxlLSR7dmFsdWV9YH1cbiAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgIHNlbGVjdGVkSWNvbklkPXtzZWxlY3RlZEljb25JZH1cbiAgICAgIGhhbmRsZUNsaWNrPXtoYW5kbGVDbGlja31cbiAgICAgIGNvbG9yPXtjb2xvcn1cbiAgICAvPlxuICApKTtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXNbJ2dlbmVyaWMtdGFibGUnXX0+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLnJvd30+e2NvbHVtbnN9PC9kaXY+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5GYXZvdXJpdGVJY29uVGFibGUucHJvcFR5cGVzID0ge1xuICBoYW5kbGVDbGljazogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgZmF2b3VyaXRlSWNvbklkczogUHJvcFR5cGVzLmFycmF5LFxuICBzZWxlY3RlZEljb25JZDogUHJvcFR5cGVzLnN0cmluZyxcbiAgY29sb3I6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbn07XG5cbi8qKlxuICogQGV4YW1wbGVcbiAqIDxGYXZvdXJpdGVNb2RhbFxuICogICBzaG93PXttb2RhbE9wZW59XG4gKiAgIGhhbmRsZUNsb3NlPXtoYW5kbGVDbG9zZX1cbiAqICAgc2F2ZUZhdm91cml0ZT17b25TYXZlRmF2b3VyaXRlfVxuICogICBsb2NhdGlvbj17c2VsZWN0ZWRMb2NhdGlvbn1cbiAqICAgZmF2b3VyaXRlPXtmYXZvdXJpdGV9XG4gKiAgIGxhbmc9e2xhbmd9XG4gKiAgIGF1dG9zdWdnZXN0Q29tcG9uZW50PXtcbiAqICAgICA8QXV0b1N1Z2dlc3RcbiAqICAgICAgIHNvdXJjZXM9e1snSGlzdG9yeScsICdEYXRhc291cmNlJ119XG4gKiAgICAgICB0YXJnZXRzPXtbJ0xvY2F0aW9ucycsICdDdXJyZW50UG9zaXRpb24nXX1cbiAqICAgICAgIGlkPVwiZmF2b3VyaXRlXCJcbiAqICAgICAgIGF1dG9Gb2N1cz17ZmFsc2V9XG4gKiAgICAgICBwbGFjZWhvbGRlcj1cInNlYXJjaC1hZGRyZXNzLW9yLXBsYWNlXCJcbiAqICAgICAgIHZhbHVlPXtzZWxlY3RlZExvY2F0aW9uLmFkZHJlc3MgfHwgJyd9XG4gKiAgICAgICBvbkZhdm91cml0ZVNlbGVjdGVkPXt0aGlzLnNldExvY2F0aW9uUHJvcGVydGllc31cbiAqICAgICAgIGxhbmc9e2xhbmd9XG4gKiAgICAgLz5cbiAqICAgfVxuICogLz5cbiAqL1xuY2xhc3MgRmF2b3VyaXRlTW9kYWwgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICBzdGF0aWMgcHJvcFR5cGVzID0ge1xuICAgIGlzTW9kYWxPcGVuOiBQcm9wVHlwZXMuYm9vbC5pc1JlcXVpcmVkLFxuICAgIC8qKiBSZXF1aXJlZC5cbiAgICAgKiBAdHlwZXtmdW5jdGlvbn0gKi9cbiAgICBoYW5kbGVDbG9zZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgICAvKiogUmVxdWlyZWQuXG4gICAgICogQHR5cGV7ZnVuY3Rpb259ICovXG4gICAgc2F2ZUZhdm91cml0ZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgICAvKiogUmVxdWlyZWQuIE9ubHkgdXNlZCB3aGVuIGVkaXRpbmcgZmF2b3VyaXRlLlxuICAgICAqIEB0eXBle2Z1bmN0aW9ufSAqL1xuICAgIGNhbmNlbFNlbGVjdGVkOiBQcm9wVHlwZXMuZnVuYyxcbiAgICAvKiogT3B0aW9uYWwuXG4gICAgICogQXV0b3N1Z2dlc3QgY29tcG9uZW50IGZvciBzZWFyY2hpbmcgbmV3IGZhdm91cml0ZXMuXG4gICAgICogQHR5cGV7bm9kZX1cbiAgICAgKi9cbiAgICBhdXRvc3VnZ2VzdENvbXBvbmVudDogUHJvcFR5cGVzLm5vZGUsXG4gICAgLyoqIE9wdGlvbmFsLlxuICAgICAqIE9iamVjdCB0byBwcmVmaWxsIGlucHV0IGZpZWxkIGZvciBuYW1lIGFuZC9vciBzZWxlY3RlZCBpY29uLlxuICAgICAqIEB0eXBlIHtvYmplY3R9XG4gICAgICogQHByb3BlcnR5IHtzdHJpbmd9IHR5cGVcbiAgICAgKiBAcHJvcGVydHkge3N0cmluZ30gYWRkcmVzc1xuICAgICAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBndGZzSWRcbiAgICAgKiBAcHJvcGVydHkge3N0cmluZ30gZ2lkXG4gICAgICogQHByb3BlcnR5IHtudW1iZXJ9IGxhdFxuICAgICAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBsb25cbiAgICAgKiBAcHJvcGVydHkge3N0cmluZ30gbmFtZVxuICAgICAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBzZWxlY3RlZEljb25JZFxuICAgICAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBmYXZvdXJpdGVJZFxuICAgICAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBsYXllclxuICAgICAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBkZWZhdWx0TmFtZVxuICAgICAqL1xuICAgIGZhdm91cml0ZTogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAgIHR5cGU6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgICBhZGRyZXNzOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgICAgZ3Rmc0lkOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgICAgZ2lkOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgICAgbGF0OiBQcm9wVHlwZXMubnVtYmVyLFxuICAgICAgbG9uOiBQcm9wVHlwZXMubnVtYmVyLFxuICAgICAgbmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgICAgIHNlbGVjdGVkSWNvbklkOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgICAgZmF2b3VyaXRlSWQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgICBsYXllcjogUHJvcFR5cGVzLnN0cmluZyxcbiAgICAgIGRlZmF1bHROYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIH0pLFxuICAgIC8qKiBPcHRpb25hbC5cbiAgICAgKiBAdHlwZSB7ZnVuY3Rpb259ICovXG4gICAgYWRkQW5hbHl0aWNzRXZlbnQ6IFByb3BUeXBlcy5mdW5jLFxuICAgIC8qKiBPcHRpb25hbC4gTGFuZ3VhZ2UsIGZpLCBlbiBvciBzdi5cbiAgICAgKiBAdHlwZSB7c3RyaW5nfSAqL1xuICAgIGxhbmc6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgLyoqIE9wdGlvbmFsLiAqL1xuICAgIGlzTW9iaWxlOiBQcm9wVHlwZXMuYm9vbCxcbiAgICBhcHBFbGVtZW50OiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gICAgY29sb3I6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgaG92ZXJDb2xvcjogUHJvcFR5cGVzLnN0cmluZyxcbiAgICAvKiogT3B0aW9uYWwuICovXG4gICAgZm9udFdlaWdodHM6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgICAvKiogRGVmYXVsdCB2YWx1ZSBpcyA1MDAuICovXG4gICAgICBtZWRpdW06IFByb3BUeXBlcy5udW1iZXIsXG4gICAgfSksXG4gIH07XG5cbiAgc3RhdGljIGRlZmF1bHRQcm9wcyA9IHtcbiAgICBjYW5jZWxTZWxlY3RlZDogKCkgPT4gKHt9KSxcbiAgICBsYW5nOiAnZmknLFxuICAgIGlzTW9iaWxlOiBmYWxzZSxcbiAgICBmYXZvdXJpdGU6IG51bGwsXG4gICAgY29sb3I6ICcjMDA3YWM5JyxcbiAgICBob3ZlckNvbG9yOiAnIzAwNjJhMScsXG4gICAgZm9udFdlaWdodHM6IHtcbiAgICAgIG1lZGl1bTogNTAwLFxuICAgIH0sXG4gIH07XG5cbiAgc3RhdGljIGZhdm91cml0ZUljb25JZHMgPSBbXG4gICAgJ3BsYWNlJyxcbiAgICAnaG9tZScsXG4gICAgJ3dvcmsnLFxuICAgICdzcG9ydCcsXG4gICAgJ3NjaG9vbCcsXG4gICAgJ3Nob3BwaW5nJyxcbiAgXTtcblxuICBjb25zdHJ1Y3Rvcihwcm9wcykge1xuICAgIHN1cGVyKHByb3BzKTtcbiAgICBpMThuZXh0LmNoYW5nZUxhbmd1YWdlKHByb3BzLmxhbmcpO1xuICAgIHRoaXMuc3RhdGUgPSB7XG4gICAgICBmYXZvdXJpdGU6IG51bGwsXG4gICAgfTtcbiAgICBPYmplY3Qua2V5cyh0cmFuc2xhdGlvbnMpLmZvckVhY2gobGFuZyA9PiB7XG4gICAgICBpMThuZXh0LmFkZFJlc291cmNlQnVuZGxlKGxhbmcsICd0cmFuc2xhdGlvbicsIHRyYW5zbGF0aW9uc1tsYW5nXSk7XG4gICAgfSk7XG4gIH1cblxuICBzdGF0aWMgZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzID0gKG5leHRQcm9wcywgcHJldlN0YXRlKSA9PiB7XG4gICAgY29uc3QgcHJldkZhdiA9IHByZXZTdGF0ZS5mYXZvdXJpdGU7XG4gICAgY29uc3QgbmV4dEZhdiA9IG5leHRQcm9wcy5mYXZvdXJpdGU7XG5cbiAgICBpZiAoaXNFbXB0eShuZXh0RmF2KSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZmF2b3VyaXRlOiBudWxsLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBpZiAoaXNFbXB0eShwcmV2RmF2KSAmJiAhaXNFbXB0eShuZXh0RmF2KSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZmF2b3VyaXRlOiB7XG4gICAgICAgICAgLi4ubmV4dEZhdixcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfVxuICAgIGlmIChcbiAgICAgICFpc0VtcHR5KHByZXZGYXYpICYmXG4gICAgICAhaXNFbXB0eShuZXh0RmF2KSAmJlxuICAgICAgKG5leHRGYXYuYWRkcmVzcyAhPT0gcHJldkZhdi5hZGRyZXNzIHx8XG4gICAgICAgIG5leHRGYXYubGF0ICE9PSBwcmV2RmF2LmxhdCB8fFxuICAgICAgICBuZXh0RmF2LmxvbiAhPT0gcHJldkZhdi5sb24pXG4gICAgKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBmYXZvdXJpdGU6IHtcbiAgICAgICAgICAuLi5wcmV2RmF2LFxuICAgICAgICAgIGFkZHJlc3M6IG5leHRGYXYuYWRkcmVzcyxcbiAgICAgICAgICBsYXQ6IG5leHRGYXYubGF0LFxuICAgICAgICAgIGxvbjogbmV4dEZhdi5sb24sXG4gICAgICAgICAgZ2lkOiBuZXh0RmF2LmdpZCB8fCBudWxsLFxuICAgICAgICAgIG5hbWU6IHByZXZGYXYubmFtZSB8fCBuZXh0RmF2Lm5hbWUgfHwgJycsXG4gICAgICAgICAgZGVmYXVsdE5hbWU6IG5leHRGYXYuZGVmYXVsdE5hbWUsXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfTtcblxuICBjb21wb25lbnREaWRVcGRhdGUgPSAoKSA9PiB7XG4gICAgaWYgKGkxOG5leHQubGFuZ3VhZ2UgIT09IHRoaXMucHJvcHMubGFuZykge1xuICAgICAgaTE4bmV4dC5jaGFuZ2VMYW5ndWFnZSh0aGlzLnByb3BzLmxhbmcpO1xuICAgIH1cbiAgfTtcblxuICBjb21wb25lbnRXaWxsVW5tb3VudCA9ICgpID0+IHtcbiAgICB0aGlzLnNldFN0YXRlKHsgZmF2b3VyaXRlOiBudWxsIH0pO1xuICB9O1xuXG4gIHNwZWNpZnlOYW1lID0gZXZlbnQgPT4ge1xuICAgIGNvbnN0IG5hbWUgPSBldmVudC50YXJnZXQudmFsdWU7XG4gICAgdGhpcy5zZXRTdGF0ZShwcmV2U3RhdGUgPT4gKHtcbiAgICAgIGZhdm91cml0ZTogeyAuLi5wcmV2U3RhdGUuZmF2b3VyaXRlLCBuYW1lIH0sXG4gICAgfSkpO1xuICB9O1xuXG4gIHNlbGVjdEljb24gPSBpZCA9PiB7XG4gICAgdGhpcy5zZXRTdGF0ZShwcmV2U3RhdGUgPT4gKHtcbiAgICAgIGZhdm91cml0ZToge1xuICAgICAgICAuLi5wcmV2U3RhdGUuZmF2b3VyaXRlLFxuICAgICAgICBzZWxlY3RlZEljb25JZDogYGljb24taWNvbl8ke2lkfWAsXG4gICAgICB9LFxuICAgIH0pKTtcbiAgfTtcblxuICBpc0VkaXQgPSAoKSA9PlxuICAgIHRoaXMuc3RhdGUuZmF2b3VyaXRlICYmIHRoaXMuc3RhdGUuZmF2b3VyaXRlLmZhdm91cml0ZUlkICE9PSB1bmRlZmluZWQ7XG5cbiAgY2FuU2F2ZSA9ICgpID0+XG4gICAgdGhpcy5zdGF0ZS5mYXZvdXJpdGUgJiZcbiAgICAhaXNFbXB0eSh0aGlzLnN0YXRlLmZhdm91cml0ZS5zZWxlY3RlZEljb25JZCkgJiZcbiAgICBpc051bWJlcih0aGlzLnN0YXRlLmZhdm91cml0ZS5sYXQpICYmXG4gICAgaXNOdW1iZXIodGhpcy5zdGF0ZS5mYXZvdXJpdGUubG9uKTtcblxuICBjbG9zZU1vZGFsID0gKCkgPT4ge1xuICAgIHRoaXMucHJvcHMuaGFuZGxlQ2xvc2UoKTtcbiAgICAvLyBoc2wtZmkvbW9kYWwgY2xvc2UgYW5pbWF0aW9uIGxhc3RzIDI1MG1zXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLnNldFN0YXRlKHsgZmF2b3VyaXRlOiBudWxsIH0pO1xuICAgIH0sIDI1MCk7XG4gIH07XG5cbiAgY2FuY2VsU2VsZWN0ZWQgPSAoKSA9PiB7XG4gICAgdGhpcy5wcm9wcy5jYW5jZWxTZWxlY3RlZCgpO1xuICAgIC8vIGhzbC1maS9tb2RhbCBjbG9zZSBhbmltYXRpb24gbGFzdHMgMjUwbXNcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuc2V0U3RhdGUoeyBmYXZvdXJpdGU6IG51bGwgfSk7XG4gICAgfSwgMjUwKTtcbiAgfTtcblxuICBzYXZlID0gKCkgPT4ge1xuICAgIGlmICh0aGlzLmNhblNhdmUoKSkge1xuICAgICAgY29uc3QgbmFtZSA9IGlzRW1wdHkodGhpcy5zdGF0ZS5mYXZvdXJpdGUubmFtZSlcbiAgICAgICAgPyB0aGlzLnN0YXRlLmZhdm91cml0ZS5kZWZhdWx0TmFtZVxuICAgICAgICA6IHRoaXMuc3RhdGUuZmF2b3VyaXRlLm5hbWU7XG5cbiAgICAgIGNvbnN0IGZhdm91cml0ZSA9IHsgLi4udGhpcy5zdGF0ZS5mYXZvdXJpdGUsIG5hbWUgfTtcbiAgICAgIGRlbGV0ZSBmYXZvdXJpdGUuZGVmYXVsdE5hbWU7XG4gICAgICB0aGlzLnByb3BzLnNhdmVGYXZvdXJpdGUoeyAuLi5mYXZvdXJpdGUsIHR5cGU6ICdwbGFjZScgfSk7XG4gICAgICBpZiAodGhpcy5wcm9wcy5hZGRBbmFseXRpY3NFdmVudCkge1xuICAgICAgICB0aGlzLnByb3BzLmFkZEFuYWx5dGljc0V2ZW50KHtcbiAgICAgICAgICBjYXRlZ29yeTogJ0Zhdm91cml0ZScsXG4gICAgICAgICAgYWN0aW9uOiAnU2F2ZUZhdm91cml0ZScsXG4gICAgICAgICAgbmFtZTogdGhpcy5zdGF0ZS5mYXZvdXJpdGUuc2VsZWN0ZWRJY29uSWQsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuaXNFZGl0KCkgJiYgdGhpcy5wcm9wcy5jYW5jZWxTZWxlY3RlZCkge1xuICAgICAgICB0aGlzLmNhbmNlbFNlbGVjdGVkKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmNsb3NlTW9kYWwoKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgcmVuZGVyID0gKCkgPT4ge1xuICAgIGNvbnN0IHsgZmF2b3VyaXRlIH0gPSB0aGlzLnN0YXRlO1xuICAgIGNvbnN0IHsgY29sb3IsIGhvdmVyQ29sb3IsIGZvbnRXZWlnaHRzIH0gPSB0aGlzLnByb3BzO1xuICAgIGNvbnN0IGhlYWRlclRleHQgPSB0aGlzLmlzRWRpdCgpXG4gICAgICA/IGkxOG5leHQudCgnZWRpdC1wbGFjZScpXG4gICAgICA6IGkxOG5leHQudCgnc2F2ZS1wbGFjZScpO1xuICAgIGNvbnN0IG1vZGFsUHJvcHMgPSB7XG4gICAgICBoZWFkZXJUZXh0LFxuICAgICAgYXV0b3N1Z2dlc3RDb21wb25lbnQ6IHtcbiAgICAgICAgLi4udGhpcy5wcm9wcy5hdXRvc3VnZ2VzdENvbXBvbmVudCxcbiAgICAgICAgY29sb3IsXG4gICAgICAgIGhvdmVyQ29sb3IsXG4gICAgICB9LFxuICAgICAgaW5wdXRQbGFjZWhvbGRlcjogaTE4bmV4dC50KCdpbnB1dC1wbGFjZWhvbGRlcicpLFxuICAgICAgc3BlY2lmeU5hbWU6IHRoaXMuc3BlY2lmeU5hbWUsXG4gICAgICBuYW1lOiAoZmF2b3VyaXRlICYmIGZhdm91cml0ZS5uYW1lKSB8fCAnJyxcbiAgICAgIGNob29zZUljb25UZXh0OiBpMThuZXh0LnQoJ2Nob29zZS1pY29uJyksXG4gICAgICBmYXZvdXJpdGVJY29uVGFibGU6IChcbiAgICAgICAgPEZhdm91cml0ZUljb25UYWJsZVxuICAgICAgICAgIHNlbGVjdGVkSWNvbklkPXsoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKChmYXZvdXJpdGUgJiYgZmF2b3VyaXRlLnNlbGVjdGVkSWNvbklkICE9PSB1bmRlZmluZWQpIHx8IG51bGwpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGZhdm91cml0ZS5zZWxlY3RlZEljb25JZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgfSkoKX1cbiAgICAgICAgICBmYXZvdXJpdGVJY29uSWRzPXtGYXZvdXJpdGVNb2RhbC5mYXZvdXJpdGVJY29uSWRzfVxuICAgICAgICAgIGhhbmRsZUNsaWNrPXt0aGlzLnNlbGVjdEljb259XG4gICAgICAgICAgY29sb3I9e2NvbG9yfVxuICAgICAgICAvPlxuICAgICAgKSxcbiAgICAgIHNhdmVGYXZvdXJpdGU6IHRoaXMuc2F2ZSxcbiAgICAgIHNhdmVUZXh0OiBpMThuZXh0LnQoJ3NhdmUnKSxcbiAgICAgIGNhblNhdmU6IHRoaXMuY2FuU2F2ZSxcbiAgICAgIGlzRWRpdDogdGhpcy5pc0VkaXQoKSxcbiAgICAgIGNhbmNlbFRleHQ6IGkxOG5leHQudCgnY2FuY2VsJyksXG4gICAgICBjYW5jZWxTZWxlY3RlZDogKCkgPT4gdGhpcy5jYW5jZWxTZWxlY3RlZCgpLFxuICAgICAgY29sb3IsXG4gICAgICBob3ZlckNvbG9yLFxuICAgICAgc2F2ZVBsYWNlVGV4dDogaTE4bmV4dC50KCdzYXZlLXBsYWNlJyksXG4gICAgICBjYW50U2F2ZVRleHQ6IGkxOG5leHQudCgnY2Fubm90LXNhdmUtcGxhY2UnKSxcbiAgICAgIHJlcXVpcmVkVGV4dDogaTE4bmV4dC50KCdyZXF1aXJlZC10ZXh0JyksXG4gICAgICBmb250V2VpZ2h0cyxcbiAgICB9O1xuICAgIHJldHVybiAoXG4gICAgICA8TW9kYWxcbiAgICAgICAgYXBwRWxlbWVudD17dGhpcy5wcm9wcy5hcHBFbGVtZW50fVxuICAgICAgICBjb250ZW50TGFiZWw9e1xuICAgICAgICAgIHRoaXMuaXNFZGl0KClcbiAgICAgICAgICAgID8gaTE4bmV4dC50KCdmYXZvdXJpdGUtbW9kYWwtb24tZWRpdCcsIGZhdm91cml0ZSlcbiAgICAgICAgICAgIDogaTE4bmV4dC50KCdmYXZvdXJpdGUtbW9kYWwtb24tYWRkLW5ldycpXG4gICAgICAgIH1cbiAgICAgICAgY2xvc2VCdXR0b25MYWJlbD17aTE4bmV4dC50KCdjbG9zZS1mYXZvdXJpdGUtbW9kYWwnKX1cbiAgICAgICAgdmFyaWFudD17IXRoaXMucHJvcHMuaXNNb2JpbGUgPyAnc21hbGwnIDogJ2xhcmdlJ31cbiAgICAgICAgaXNPcGVuPXt0aGlzLnByb3BzLmlzTW9kYWxPcGVufVxuICAgICAgICBvbkNyb3NzQ2xpY2s9eygpID0+IHRoaXMuY2xvc2VNb2RhbCgpfVxuICAgICAgPlxuICAgICAgICB7IXRoaXMucHJvcHMuaXNNb2JpbGUgJiYgPERlc2t0b3BNb2RhbCB7Li4ubW9kYWxQcm9wc30gLz59XG4gICAgICAgIHt0aGlzLnByb3BzLmlzTW9iaWxlICYmIDxNb2JpbGVNb2RhbCB7Li4ubW9kYWxQcm9wc30gLz59XG4gICAgICA8L01vZGFsPlxuICAgICk7XG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IEZhdm91cml0ZU1vZGFsO1xuIl0sIm5hbWVzIjpbIl9leHRlbmRzIiwiT2JqZWN0IiwiYXNzaWduIiwiYmluZCIsInRhcmdldCIsImkiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJzb3VyY2UiLCJrZXkiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJhcHBseSIsInRoaXMiLCJzdHlsZUluamVjdCIsImNzcyIsInJlZiIsImluc2VydEF0IiwiZG9jdW1lbnQiLCJoZWFkIiwiZ2V0RWxlbWVudHNCeVRhZ05hbWUiLCJzdHlsZSIsImNyZWF0ZUVsZW1lbnQiLCJ0eXBlIiwiZmlyc3RDaGlsZCIsImluc2VydEJlZm9yZSIsImFwcGVuZENoaWxkIiwic3R5bGVTaGVldCIsImNzc1RleHQiLCJjcmVhdGVUZXh0Tm9kZSIsInRyYW5zbGF0aW9ucyIsImRlIiwiY2FuY2VsIiwic2F2ZSIsImVuIiwicGxhY2UiLCJob21lIiwid29yayIsInNwb3J0Iiwic2Nob29sIiwic2hvcHBpbmciLCJmaSIsInN2IiwiRGVza3RvcE1vZGFsIiwiaGVhZGVyVGV4dCIsImF1dG9zdWdnZXN0Q29tcG9uZW50IiwiaW5wdXRQbGFjZWhvbGRlciIsInNwZWNpZnlOYW1lIiwibmFtZSIsImNob29zZUljb25UZXh0IiwiZmF2b3VyaXRlSWNvblRhYmxlIiwic2F2ZUZhdm91cml0ZSIsInNhdmVUZXh0IiwiY2FuU2F2ZSIsImlzRWRpdCIsImNhbmNlbFRleHQiLCJjYW5jZWxTZWxlY3RlZCIsImNvbG9yIiwiaG92ZXJDb2xvciIsInNhdmVQbGFjZVRleHQiLCJjYW50U2F2ZVRleHQiLCJyZXF1aXJlZFRleHQiLCJmb250V2VpZ2h0cyIsIlJlYWN0IiwiY2xhc3NOYW1lIiwic3R5bGVzIiwibWVkaXVtIiwidmFsdWUiLCJwbGFjZWhvbGRlciIsIm9uQ2hhbmdlIiwib25DbGljayIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsInByb3BUeXBlcyIsIlByb3BUeXBlcyIsInN0cmluZyIsImlzUmVxdWlyZWQiLCJub2RlIiwiZnVuYyIsImJvb2wiLCJzaGFwZSIsIm51bWJlciIsImRlZmF1bHRQcm9wcyIsIk1vYmlsZU1vZGFsIiwiZGlzYWJsZWQiLCJpbml0IiwibG5nIiwiZmFsbGJhY2tMbmciLCJkZWZhdWx0TlMiLCJpbnRlcnBvbGF0aW9uIiwiZXNjYXBlVmFsdWUiLCJrZXlzIiwiZm9yRWFjaCIsImxhbmciLCJpMThuZXh0IiwiYWRkUmVzb3VyY2VCdW5kbGUiLCJGYXZvdXJpdGVJY29uSWRUb05hbWVNYXAiLCJGYXZvdXJpdGVJY29uVGFibGVCdXR0b24iLCJzZWxlY3RlZEljb25JZCIsImhhbmRsZUNsaWNrIiwiaXNIb3ZlcmVkIiwic2V0SG92ZXIiLCJ1c2VTdGF0ZSIsImlzRm9jdXNlZCIsInNldEZvY3VzIiwiaWNvbkNvbG9yIiwiY3giLCJvbk1vdXNlRW50ZXIiLCJvbk1vdXNlTGVhdmUiLCJvbkZvY3VzIiwib25CbHVyIiwidCIsIkljb24iLCJpbWciLCJGYXZvdXJpdGVJY29uVGFibGUiLCJmYXZvdXJpdGVJY29uSWRzIiwiY29sdW1ucyIsIm1hcCIsInJvdyIsImFycmF5IiwiRmF2b3VyaXRlTW9kYWwiLCJDb21wb25lbnQiLCJjb25zdHJ1Y3RvciIsInByb3BzIiwic3VwZXIiLCJjb21wb25lbnREaWRVcGRhdGUiLCJsYW5ndWFnZSIsImNoYW5nZUxhbmd1YWdlIiwiY29tcG9uZW50V2lsbFVubW91bnQiLCJzZXRTdGF0ZSIsImZhdm91cml0ZSIsImV2ZW50IiwicHJldlN0YXRlIiwic2VsZWN0SWNvbiIsImlkIiwic3RhdGUiLCJ1bmRlZmluZWQiLCJmYXZvdXJpdGVJZCIsImlzRW1wdHkiLCJpc051bWJlciIsImxhdCIsImxvbiIsImNsb3NlTW9kYWwiLCJoYW5kbGVDbG9zZSIsInNldFRpbWVvdXQiLCJkZWZhdWx0TmFtZSIsImFkZEFuYWx5dGljc0V2ZW50IiwiY2F0ZWdvcnkiLCJhY3Rpb24iLCJyZW5kZXIiLCJtb2RhbFByb3BzIiwiTW9kYWwiLCJhcHBFbGVtZW50IiwiY29udGVudExhYmVsIiwiY2xvc2VCdXR0b25MYWJlbCIsInZhcmlhbnQiLCJpc01vYmlsZSIsImlzT3BlbiIsImlzTW9kYWxPcGVuIiwib25Dcm9zc0NsaWNrIiwiZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzIiwibmV4dFByb3BzIiwicHJldkZhdiIsIm5leHRGYXYiLCJhZGRyZXNzIiwiZ2lkIiwiZ3Rmc0lkIiwibGF5ZXIiXSwibWFwcGluZ3MiOiJnM0JBQWUsU0FBU0EsSUFZdEIsT0FYQUEsRUFBV0MsT0FBT0MsT0FBU0QsT0FBT0MsT0FBT0MsT0FBUyxTQUFVQyxHQUMxRCxJQUFLLElBQUlDLEVBQUksRUFBR0EsRUFBSUMsVUFBVUMsT0FBUUYsSUFBSyxDQUN6QyxJQUFJRyxFQUFTRixVQUFVRCxHQUN2QixJQUFLLElBQUlJLEtBQU9ELEVBQ1ZQLE9BQU9TLFVBQVVDLGVBQWVDLEtBQUtKLEVBQVFDLEtBQy9DTCxFQUFPSyxHQUFPRCxFQUFPQyxJQUkzQixPQUFPTCxHQUVGSixFQUFTYSxNQUFNQyxLQUFNUixVQUM5QixDQ2JBLFNBQVNTLEVBQVlDLEVBQUtDLFFBQ1gsSUFBUkEsSUFBaUJBLEVBQU0sSUFDNUIsSUFBSUMsRUFBV0QsRUFBSUMsU0FFbkIsR0FBS0YsR0FBMkIsb0JBQWJHLFNBQW5CLENBRUEsSUFBSUMsRUFBT0QsU0FBU0MsTUFBUUQsU0FBU0UscUJBQXFCLFFBQVEsR0FD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
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../node_modules/@babel/runtime/helpers/esm/extends.js","../../../../node_modules/style-inject/dist/style-inject.es.js","../src/helpers/translations.js","../src/helpers/DesktopModal.js","../src/helpers/MobileModal.js","../src/index.js"],"sourcesContent":["export default function _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\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","const translations = {\n de: {\n cancel: 'Abbrechen',\n 'choose-icon': 'Wählen Sie ein Symbol für diesen Ort',\n 'close-favourite-modal': 'Favoriten-Dialog schließen',\n 'edit-place': 'Ort bearbeiten',\n 'favourite-modal-on-add-new': 'Neuen Favoriten hinzufügen',\n 'favourite-modal-on-edit': 'Favorit bearbeiten: {{favourite.name}}',\n 'input-placeholder': 'Einen Namen für Ort setzen (optional)',\n save: 'Speichern',\n 'save-place': 'Favorit speichern',\n },\n en: {\n cancel: 'Cancel',\n 'choose-icon': \"Select the place's icon\",\n 'close-favourite-modal': 'Close the favourite modal',\n 'edit-place': 'Edit place',\n 'favourite-modal-on-add-new': 'Add a new favorite',\n 'favourite-modal-on-edit': 'Editing favourite: {{favourite.name}}',\n 'input-placeholder': 'Give the name a place (optional)',\n save: 'Save',\n 'save-place': 'Save place',\n 'cannot-save-place': 'Cannot save a place without address or icon',\n place: 'a place',\n home: 'home',\n work: 'work',\n sport: 'sport',\n school: 'school',\n shopping: 'shopping',\n 'required-text': 'required field',\n },\n fi: {\n cancel: 'Peruuta',\n 'choose-icon': 'Valitse paikan kuvake',\n 'close-favourite-modal': 'Sulje suosikkimodaali',\n 'edit-place': 'Muokkaa paikkaa',\n 'favourite-modal-on-add-new': 'Lisää uusi suosikki',\n 'favourite-modal-on-edit': 'Muokkaa suosikkia {{favourite.name}}',\n 'input-placeholder': 'Anna paikalle nimi (vapaaehtoinen)',\n save: 'Tallenna',\n 'save-place': 'Tallenna paikka',\n 'cannot-save-place':\n 'Paikkaa ilman osoitetta tai ikonia ei voida tallentaa',\n place: 'paikka',\n home: 'koti',\n work: 'työ',\n sport: 'urheilu',\n school: 'koulu',\n shopping: 'ostokset',\n 'required-text': 'pakollinen kenttä',\n },\n sv: {\n cancel: 'Avbryt',\n 'choose-icon': 'Välj platsens ikon',\n 'close-favourite-modal': 'Stäng favoritmodalen',\n 'edit-place': 'Redigera plats',\n 'favourite-modal-on-add-new': 'Lägg till ny favorit',\n 'favourite-modal-on-edit': 'Redigera platsen: {{favourite.name}}',\n 'input-placeholder': 'Ange platsens namn (frivilligt)',\n save: 'Spara',\n 'save-place': 'Spara plats',\n 'cannot-save-place':\n 'Det går inte att spara en plats utan adress eller ikon',\n place: 'en plats',\n home: 'hem',\n work: 'arbete',\n sport: 'sport',\n school: 'skola',\n shopping: 'shoppa',\n 'required-field': 'obligatoriskt fält',\n },\n};\n\nexport default translations;\n","/* eslint-disable jsx-a11y/click-events-have-key-events */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport cx from 'classnames';\nimport styles from './desktop.scss';\n\nconst DesktopModal = ({\n headerText,\n autosuggestComponent,\n inputPlaceholder,\n specifyName,\n name,\n chooseIconText,\n favouriteIconTable,\n saveFavourite,\n saveText,\n canSave,\n isEdit,\n cancelText,\n cancelSelected,\n color,\n hoverColor,\n savePlaceText,\n cantSaveText,\n requiredText,\n fontWeights,\n}) => {\n return (\n <div\n className={styles['favourite-modal-desktop-container']}\n style={{\n '--color': `${color}`,\n '--hover-color': `${hoverColor}`,\n '--font-weight-medium': fontWeights.medium,\n }}\n >\n <div className={styles['favourite-modal-desktop-top']}>\n <div className={styles['favourite-modal-desktop-header']}>\n {headerText}\n </div>\n </div>\n <div className={styles['favourite-modal-desktop-main']}>\n <div className={styles['favourite-modal-desktop-location-search']}>\n {autosuggestComponent}\n </div>\n <div className={styles['favourite-modal-desktop-name']}>\n <input\n aria-label={inputPlaceholder}\n className={styles['favourite-modal-desktop-input']}\n value={name}\n placeholder={inputPlaceholder}\n onChange={specifyName}\n />\n </div>\n </div>\n <fieldset className={styles['icons-container']}>\n <legend className={styles['favourite-modal-desktop-text']}>\n {chooseIconText}\n <p className={styles['sr-only']}>{requiredText}</p>\n </legend>\n <div className={styles['favourite-modal-desktop-icons']}>\n {favouriteIconTable}\n </div>\n </fieldset>\n <div className={styles['favourite-modal-desktop-buttons']}>\n <button\n type=\"button\"\n className={cx(\n `${styles['favourite-modal-desktop-button']} ${styles.save} ${\n canSave() ? '' : styles.disabled\n }`,\n )}\n onClick={saveFavourite}\n aria-label={`${canSave() ? savePlaceText : cantSaveText}`}\n aria-disabled={!canSave()}\n >\n {saveText}\n </button>\n {isEdit && (\n <button\n type=\"button\"\n className={cx(\n `${styles['favourite-modal-desktop-button']} ${styles.edit} ${\n canSave() ? '' : styles.disabled\n }`,\n )}\n onClick={cancelSelected}\n >\n {cancelText}\n </button>\n )}\n </div>\n </div>\n );\n};\n\nDesktopModal.propTypes = {\n headerText: PropTypes.string.isRequired,\n autosuggestComponent: PropTypes.node.isRequired,\n inputPlaceholder: PropTypes.string.isRequired,\n specifyName: PropTypes.func.isRequired,\n name: PropTypes.string.isRequired,\n chooseIconText: PropTypes.string.isRequired,\n favouriteIconTable: PropTypes.node.isRequired,\n saveFavourite: PropTypes.func.isRequired,\n saveText: PropTypes.string.isRequired,\n canSave: PropTypes.func.isRequired,\n isEdit: PropTypes.bool,\n cancelText: PropTypes.string.isRequired,\n cancelSelected: PropTypes.func,\n color: PropTypes.string.isRequired,\n hoverColor: PropTypes.string.isRequired,\n savePlaceText: PropTypes.string.isRequired,\n cantSaveText: PropTypes.string.isRequired,\n requiredText: PropTypes.string.isRequired,\n fontWeights: PropTypes.shape({\n medium: PropTypes.number.isRequired,\n }).isRequired,\n};\n\nDesktopModal.defaultProps = {\n isEdit: false,\n cancelSelected: () => ({}),\n};\n\nexport default DesktopModal;\n","/* eslint-disable jsx-a11y/click-events-have-key-events */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport cx from 'classnames';\nimport styles from './mobile.scss';\n\nconst MobileModal = ({\n headerText,\n autosuggestComponent,\n inputPlaceholder,\n specifyName,\n name,\n chooseIconText,\n favouriteIconTable,\n saveFavourite,\n saveText,\n canSave,\n color,\n hoverColor,\n savePlaceText,\n cantSaveText,\n requiredText,\n fontWeights,\n}) => {\n return (\n <div\n className={styles['favourite-modal-mobile-container']}\n style={{\n '--color': `${color}`,\n '--hover-color': `${hoverColor}`,\n '--font-weight-medium': fontWeights.medium,\n }}\n >\n <div className={styles['favourite-modal-mobile-top']}>\n <div className={styles['favourite-modal-mobile-header']}>\n {headerText}\n </div>\n </div>\n <div className={styles['favourite-modal-mobile-main']}>\n <div className={styles['favourite-modal-mobile-location-search']}>\n {autosuggestComponent}\n </div>\n <input\n className={styles['favourite-modal-mobile-input']}\n value={name || ''}\n placeholder={inputPlaceholder}\n onChange={specifyName}\n />\n </div>\n <div className={styles['favourite-modal-mobile-text']}>\n {chooseIconText}\n <p className={styles['sr-only']}>{requiredText}</p>\n </div>\n <div className={styles['favourite-modal-mobile-icons']}>\n {favouriteIconTable}\n </div>\n <div className={styles['favourite-modal-mobile-save']}>\n <button\n type=\"button\"\n className={cx(\n `${styles['favourite-modal-mobile-button']} ${\n canSave() ? '' : styles.disabled\n }`,\n )}\n onClick={saveFavourite}\n aria-label={`${canSave() ? savePlaceText : cantSaveText}`}\n >\n {saveText}\n </button>\n </div>\n </div>\n );\n};\n\nMobileModal.propTypes = {\n headerText: PropTypes.string.isRequired,\n autosuggestComponent: PropTypes.node.isRequired,\n inputPlaceholder: PropTypes.string.isRequired,\n specifyName: PropTypes.func.isRequired,\n name: PropTypes.string.isRequired,\n chooseIconText: PropTypes.string.isRequired,\n favouriteIconTable: PropTypes.node.isRequired,\n saveFavourite: PropTypes.func.isRequired,\n saveText: PropTypes.string.isRequired,\n canSave: PropTypes.func.isRequired,\n color: PropTypes.string.isRequired,\n hoverColor: PropTypes.string.isRequired,\n savePlaceText: PropTypes.string.isRequired,\n cantSaveText: PropTypes.string.isRequired,\n requiredText: PropTypes.string.isRequired,\n fontWeights: PropTypes.shape({\n medium: PropTypes.number.isRequired,\n }).isRequired,\n};\n\nexport default MobileModal;\n","/* eslint-disable jsx-a11y/click-events-have-key-events */\nimport React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport cx from 'classnames';\nimport i18next from 'i18next';\nimport isEmpty from 'lodash/isEmpty';\nimport isNumber from 'lodash/isNumber';\nimport Modal from '@hsl-fi/modal';\nimport Icon from '@digitransit-component/digitransit-component-icon';\nimport styles from './helpers/styles.scss';\nimport translations from './helpers/translations';\nimport DesktopModal from './helpers/DesktopModal';\nimport MobileModal from './helpers/MobileModal';\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\nObject.keys(translations).forEach(lang => {\n i18next.addResourceBundle(lang, 'translation', translations[lang]);\n});\n\nconst FavouriteIconIdToNameMap = {\n 'icon-icon_place': 'place',\n 'icon-icon_home': 'home',\n 'icon-icon_work': 'work',\n 'icon-icon_sport': 'sport',\n 'icon-icon_school': 'school',\n 'icon-icon_shopping': 'shopping',\n};\n\nconst FavouriteIconTableButton = ({\n value,\n selectedIconId,\n handleClick,\n color,\n}) => {\n const [isHovered, setHover] = useState(false);\n const [isFocused, setFocus] = useState(false);\n const iconColor =\n value === FavouriteIconIdToNameMap[selectedIconId] || isHovered || isFocused\n ? '#ffffff'\n : color;\n return (\n <button\n type=\"button\"\n className={cx(styles['favourite-icon-table-column'], styles[value], {\n [styles['selected-icon']]:\n value === FavouriteIconIdToNameMap[selectedIconId],\n })}\n onMouseEnter={() => setHover(true)}\n onMouseLeave={() => setHover(false)}\n onFocus={() => setFocus(true)}\n onBlur={() => setFocus(false)}\n onClick={() => handleClick(value)}\n aria-label={i18next.t(value)}\n >\n <Icon img={value} color={iconColor} />\n </button>\n );\n};\n\nFavouriteIconTableButton.propTypes = {\n handleClick: PropTypes.func.isRequired,\n value: PropTypes.string,\n selectedIconId: PropTypes.string,\n color: PropTypes.string.isRequired,\n};\n\nconst FavouriteIconTable = ({\n favouriteIconIds,\n selectedIconId,\n handleClick,\n color,\n}) => {\n const columns = favouriteIconIds.map(value => (\n <FavouriteIconTableButton\n key={`favourite-icon-table-${value}`}\n value={value}\n selectedIconId={selectedIconId}\n handleClick={handleClick}\n color={color}\n />\n ));\n\n return (\n <div className={styles['generic-table']}>\n <div className={styles.row}>{columns}</div>\n </div>\n );\n};\n\nFavouriteIconTable.propTypes = {\n handleClick: PropTypes.func.isRequired,\n favouriteIconIds: PropTypes.array,\n selectedIconId: PropTypes.string,\n color: PropTypes.string.isRequired,\n};\n\n/**\n * @example\n * <FavouriteModal\n * show={modalOpen}\n * handleClose={handleClose}\n * saveFavourite={onSaveFavourite}\n * location={selectedLocation}\n * favourite={favourite}\n * lang={lang}\n * autosuggestComponent={\n * <AutoSuggest\n * sources={['History', 'Datasource']}\n * targets={['Locations', 'CurrentPosition']}\n * id=\"favourite\"\n * autoFocus={false}\n * placeholder=\"search-address-or-place\"\n * value={selectedLocation.address || ''}\n * onFavouriteSelected={this.setLocationProperties}\n * lang={lang}\n * />\n * }\n * />\n */\nclass FavouriteModal extends React.Component {\n static propTypes = {\n isModalOpen: PropTypes.bool.isRequired,\n /** Required.\n * @type{function} */\n handleClose: PropTypes.func.isRequired,\n /** Required.\n * @type{function} */\n saveFavourite: PropTypes.func.isRequired,\n /** Required. Only used when editing favourite.\n * @type{function} */\n cancelSelected: PropTypes.func,\n /** Optional.\n * Autosuggest component for searching new favourites.\n * @type{node}\n */\n autosuggestComponent: PropTypes.node,\n /** Optional.\n * Object to prefill input field for name and/or selected icon.\n * @type {object}\n * @property {string} type\n * @property {string} address\n * @property {string} gtfsId\n * @property {string} gid\n * @property {number} lat\n * @property {number} lon\n * @property {string} name\n * @property {string} selectedIconId\n * @property {string} favouriteId\n * @property {string} layer\n * @property {string} defaultName\n */\n favourite: PropTypes.shape({\n type: PropTypes.string,\n address: PropTypes.string,\n gtfsId: PropTypes.string,\n gid: PropTypes.string,\n lat: PropTypes.number,\n lon: PropTypes.number,\n name: PropTypes.string,\n selectedIconId: PropTypes.string,\n favouriteId: PropTypes.string,\n layer: PropTypes.string,\n defaultName: PropTypes.string,\n }),\n /** Optional.\n * @type {function} */\n addAnalyticsEvent: PropTypes.func,\n /** Optional. Language, fi, en or sv.\n * @type {string} */\n lang: PropTypes.string,\n /** Optional. */\n isMobile: PropTypes.bool,\n appElement: PropTypes.string.isRequired,\n color: PropTypes.string,\n hoverColor: PropTypes.string,\n /** Optional. */\n fontWeights: PropTypes.shape({\n /** Default value is 500. */\n medium: PropTypes.number,\n }),\n };\n\n static defaultProps = {\n cancelSelected: () => ({}),\n lang: 'fi',\n isMobile: false,\n favourite: null,\n color: '#007ac9',\n hoverColor: '#0062a1',\n fontWeights: {\n medium: 500,\n },\n };\n\n static favouriteIconIds = [\n 'place',\n 'home',\n 'work',\n 'sport',\n 'school',\n 'shopping',\n ];\n\n constructor(props) {\n super(props);\n i18next.changeLanguage(props.lang);\n this.state = {\n favourite: null,\n };\n Object.keys(translations).forEach(lang => {\n i18next.addResourceBundle(lang, 'translation', translations[lang]);\n });\n }\n\n static getDerivedStateFromProps = (nextProps, prevState) => {\n const prevFav = prevState.favourite;\n const nextFav = nextProps.favourite;\n\n if (isEmpty(nextFav)) {\n return {\n favourite: null,\n };\n }\n\n if (isEmpty(prevFav) && !isEmpty(nextFav)) {\n return {\n favourite: {\n ...nextFav,\n },\n };\n }\n if (\n !isEmpty(prevFav) &&\n !isEmpty(nextFav) &&\n (nextFav.address !== prevFav.address ||\n nextFav.lat !== prevFav.lat ||\n nextFav.lon !== prevFav.lon)\n ) {\n return {\n favourite: {\n ...prevFav,\n address: nextFav.address,\n lat: nextFav.lat,\n lon: nextFav.lon,\n gid: nextFav.gid || null,\n name: prevFav.name || nextFav.name || '',\n defaultName: nextFav.defaultName,\n },\n };\n }\n return null;\n };\n\n componentDidUpdate = () => {\n if (i18next.language !== this.props.lang) {\n i18next.changeLanguage(this.props.lang);\n }\n };\n\n componentWillUnmount = () => {\n this.setState({ favourite: null });\n };\n\n specifyName = event => {\n const name = event.target.value;\n this.setState(prevState => ({\n favourite: { ...prevState.favourite, name },\n }));\n };\n\n selectIcon = id => {\n this.setState(prevState => ({\n favourite: {\n ...prevState.favourite,\n selectedIconId: `icon-icon_${id}`,\n },\n }));\n };\n\n isEdit = () =>\n this.state.favourite && this.state.favourite.favouriteId !== undefined;\n\n canSave = () =>\n this.state.favourite &&\n !isEmpty(this.state.favourite.selectedIconId) &&\n isNumber(this.state.favourite.lat) &&\n isNumber(this.state.favourite.lon);\n\n closeModal = () => {\n this.props.handleClose();\n // hsl-fi/modal close animation lasts 250ms\n setTimeout(() => {\n this.setState({ favourite: null });\n }, 250);\n };\n\n cancelSelected = () => {\n this.props.cancelSelected();\n // hsl-fi/modal close animation lasts 250ms\n setTimeout(() => {\n this.setState({ favourite: null });\n }, 250);\n };\n\n save = () => {\n if (this.canSave()) {\n const name = isEmpty(this.state.favourite.name)\n ? this.state.favourite.defaultName\n : this.state.favourite.name;\n\n const favourite = { ...this.state.favourite, name };\n delete favourite.defaultName;\n this.props.saveFavourite({ ...favourite, type: 'place' });\n if (this.props.addAnalyticsEvent) {\n this.props.addAnalyticsEvent({\n category: 'Favourite',\n action: 'SaveFavourite',\n name: this.state.favourite.selectedIconId,\n });\n }\n if (this.isEdit() && this.props.cancelSelected) {\n this.cancelSelected();\n } else {\n this.closeModal();\n }\n }\n };\n\n render = () => {\n const { favourite } = this.state;\n const { color, hoverColor, fontWeights } = this.props;\n const headerText = this.isEdit()\n ? i18next.t('edit-place')\n : i18next.t('save-place');\n const modalProps = {\n headerText,\n autosuggestComponent: {\n ...this.props.autosuggestComponent,\n color,\n hoverColor,\n },\n inputPlaceholder: i18next.t('input-placeholder'),\n specifyName: this.specifyName,\n name: (favourite && favourite.name) || '',\n chooseIconText: i18next.t('choose-icon'),\n favouriteIconTable: (\n <FavouriteIconTable\n selectedIconId={(() => {\n if ((favourite && favourite.selectedIconId !== undefined) || null) {\n return favourite.selectedIconId;\n }\n return undefined;\n })()}\n favouriteIconIds={FavouriteModal.favouriteIconIds}\n handleClick={this.selectIcon}\n color={color}\n />\n ),\n saveFavourite: this.save,\n saveText: i18next.t('save'),\n canSave: this.canSave,\n isEdit: this.isEdit(),\n cancelText: i18next.t('cancel'),\n cancelSelected: () => this.cancelSelected(),\n color,\n hoverColor,\n savePlaceText: i18next.t('save-place'),\n cantSaveText: i18next.t('cannot-save-place'),\n requiredText: i18next.t('required-text'),\n fontWeights,\n };\n return (\n <Modal\n appElement={this.props.appElement}\n contentLabel={\n this.isEdit()\n ? i18next.t('favourite-modal-on-edit', favourite)\n : i18next.t('favourite-modal-on-add-new')\n }\n closeButtonLabel={i18next.t('close-favourite-modal')}\n variant={!this.props.isMobile ? 'small' : 'large'}\n isOpen={this.props.isModalOpen}\n onCrossClick={() => this.closeModal()}\n >\n {!this.props.isMobile && <DesktopModal {...modalProps} />}\n {this.props.isMobile && <MobileModal {...modalProps} />}\n </Modal>\n );\n };\n}\n\nexport default FavouriteModal;\n"],"names":["_extends","Object","assign","bind","target","i","arguments","length","source","key","prototype","hasOwnProperty","call","apply","this","styleInject","css","ref","insertAt","document","head","getElementsByTagName","style","createElement","type","firstChild","insertBefore","appendChild","styleSheet","cssText","createTextNode","translations","de","cancel","save","en","place","home","work","sport","school","shopping","fi","sv","DesktopModal","headerText","autosuggestComponent","inputPlaceholder","specifyName","name","chooseIconText","favouriteIconTable","saveFavourite","saveText","canSave","isEdit","cancelText","cancelSelected","color","hoverColor","savePlaceText","cantSaveText","requiredText","fontWeights","React","className","styles","medium","value","placeholder","onChange","onClick","process","env","NODE_ENV","propTypes","PropTypes","string","isRequired","node","func","bool","shape","number","defaultProps","MobileModal","disabled","init","lng","fallbackLng","defaultNS","interpolation","escapeValue","keys","forEach","lang","i18next","addResourceBundle","FavouriteIconIdToNameMap","FavouriteIconTableButton","selectedIconId","handleClick","isHovered","setHover","useState","isFocused","setFocus","iconColor","cx","onMouseEnter","onMouseLeave","onFocus","onBlur","t","Icon","img","FavouriteIconTable","favouriteIconIds","columns","map","row","array","FavouriteModal","Component","constructor","props","super","componentDidUpdate","language","changeLanguage","componentWillUnmount","setState","favourite","event","prevState","selectIcon","id","state","undefined","favouriteId","isEmpty","isNumber","lat","lon","closeModal","handleClose","setTimeout","defaultName","addAnalyticsEvent","category","action","render","modalProps","Modal","appElement","contentLabel","closeButtonLabel","variant","isMobile","isOpen","isModalOpen","onCrossClick","getDerivedStateFromProps","nextProps","prevFav","nextFav","address","gid","gtfsId","layer"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../node_modules/@babel/runtime/helpers/esm/extends.js","../../../../node_modules/style-inject/dist/style-inject.es.js","../src/helpers/translations.js","../src/helpers/DesktopModal.js","../src/helpers/MobileModal.js","../src/index.js"],"sourcesContent":["export default function _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\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","const translations = {\n de: {\n cancel: 'Abbrechen',\n 'choose-icon': 'Wählen Sie ein Symbol für diesen Ort',\n 'close-favourite-modal': 'Favoriten-Dialog schließen',\n 'edit-place': 'Ort bearbeiten',\n 'favourite-modal-on-add-new': 'Neuen Favoriten hinzufügen',\n 'favourite-modal-on-edit': 'Favorit bearbeiten: {{favourite.name}}',\n 'input-placeholder': 'Einen Namen für Ort setzen (optional)',\n save: 'Speichern',\n 'save-place': 'Favorit speichern',\n },\n en: {\n cancel: 'Cancel',\n 'choose-icon': \"Select the place's icon\",\n 'close-favourite-modal': 'Close the favourite modal',\n 'edit-place': 'Edit place',\n 'favourite-modal-on-add-new': 'Add a new favorite',\n 'favourite-modal-on-edit': 'Editing favourite: {{favourite.name}}',\n 'input-placeholder': 'Give the name a place (optional)',\n save: 'Save',\n 'save-place': 'Save place',\n 'cannot-save-place': 'Cannot save a place without address or icon',\n place: 'a place',\n home: 'home',\n work: 'work',\n sport: 'sport',\n school: 'school',\n shopping: 'shopping',\n 'required-text': 'required field',\n },\n fi: {\n cancel: 'Peruuta',\n 'choose-icon': 'Valitse paikan kuvake',\n 'close-favourite-modal': 'Sulje suosikkimodaali',\n 'edit-place': 'Muokkaa paikkaa',\n 'favourite-modal-on-add-new': 'Lisää uusi suosikki',\n 'favourite-modal-on-edit': 'Muokkaa suosikkia {{favourite.name}}',\n 'input-placeholder': 'Anna paikalle nimi (vapaaehtoinen)',\n save: 'Tallenna',\n 'save-place': 'Tallenna paikka',\n 'cannot-save-place':\n 'Paikkaa ilman osoitetta tai ikonia ei voida tallentaa',\n place: 'paikka',\n home: 'koti',\n work: 'työ',\n sport: 'urheilu',\n school: 'koulu',\n shopping: 'ostokset',\n 'required-text': 'pakollinen kenttä',\n },\n sv: {\n cancel: 'Avbryt',\n 'choose-icon': 'Välj platsens ikon',\n 'close-favourite-modal': 'Stäng favoritmodalen',\n 'edit-place': 'Redigera plats',\n 'favourite-modal-on-add-new': 'Lägg till ny favorit',\n 'favourite-modal-on-edit': 'Redigera platsen: {{favourite.name}}',\n 'input-placeholder': 'Ange platsens namn (frivilligt)',\n save: 'Spara',\n 'save-place': 'Spara plats',\n 'cannot-save-place':\n 'Det går inte att spara en plats utan adress eller ikon',\n place: 'en plats',\n home: 'hem',\n work: 'arbete',\n sport: 'sport',\n school: 'skola',\n shopping: 'shoppa',\n 'required-field': 'obligatoriskt fält',\n },\n};\n\nexport default translations;\n","/* eslint-disable jsx-a11y/click-events-have-key-events */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport cx from 'classnames';\nimport styles from './desktop.scss';\n\nconst DesktopModal = ({\n headerText,\n autosuggestComponent,\n inputPlaceholder,\n specifyName,\n name,\n chooseIconText,\n favouriteIconTable,\n saveFavourite,\n saveText,\n canSave,\n isEdit,\n cancelText,\n cancelSelected,\n color,\n hoverColor,\n savePlaceText,\n cantSaveText,\n requiredText,\n fontWeights,\n}) => {\n return (\n <div\n className={styles['favourite-modal-desktop-container']}\n style={{\n '--color': `${color}`,\n '--hover-color': `${hoverColor}`,\n '--font-weight-medium': fontWeights.medium,\n }}\n >\n <div className={styles['favourite-modal-desktop-top']}>\n <div className={styles['favourite-modal-desktop-header']}>\n {headerText}\n </div>\n </div>\n <div className={styles['favourite-modal-desktop-main']}>\n <div className={styles['favourite-modal-desktop-location-search']}>\n {autosuggestComponent}\n </div>\n <div className={styles['favourite-modal-desktop-name']}>\n <input\n aria-label={inputPlaceholder}\n className={styles['favourite-modal-desktop-input']}\n value={name}\n placeholder={inputPlaceholder}\n onChange={specifyName}\n />\n </div>\n </div>\n <fieldset className={styles['icons-container']}>\n <legend className={styles['favourite-modal-desktop-text']}>\n {chooseIconText}\n <p className={styles['sr-only']}>{requiredText}</p>\n </legend>\n <div className={styles['favourite-modal-desktop-icons']}>\n {favouriteIconTable}\n </div>\n </fieldset>\n <div className={styles['favourite-modal-desktop-buttons']}>\n <button\n type=\"button\"\n className={cx(\n `${styles['favourite-modal-desktop-button']} ${styles.save} ${\n canSave() ? '' : styles.disabled\n }`,\n )}\n onClick={saveFavourite}\n aria-label={`${canSave() ? savePlaceText : cantSaveText}`}\n aria-disabled={!canSave()}\n >\n {saveText}\n </button>\n {isEdit && (\n <button\n type=\"button\"\n className={cx(\n `${styles['favourite-modal-desktop-button']} ${styles.edit} ${\n canSave() ? '' : styles.disabled\n }`,\n )}\n onClick={cancelSelected}\n >\n {cancelText}\n </button>\n )}\n </div>\n </div>\n );\n};\n\nDesktopModal.propTypes = {\n headerText: PropTypes.string.isRequired,\n autosuggestComponent: PropTypes.node.isRequired,\n inputPlaceholder: PropTypes.string.isRequired,\n specifyName: PropTypes.func.isRequired,\n name: PropTypes.string.isRequired,\n chooseIconText: PropTypes.string.isRequired,\n favouriteIconTable: PropTypes.node.isRequired,\n saveFavourite: PropTypes.func.isRequired,\n saveText: PropTypes.string.isRequired,\n canSave: PropTypes.func.isRequired,\n isEdit: PropTypes.bool,\n cancelText: PropTypes.string.isRequired,\n cancelSelected: PropTypes.func,\n color: PropTypes.string.isRequired,\n hoverColor: PropTypes.string.isRequired,\n savePlaceText: PropTypes.string.isRequired,\n cantSaveText: PropTypes.string.isRequired,\n requiredText: PropTypes.string.isRequired,\n fontWeights: PropTypes.shape({\n medium: PropTypes.number.isRequired,\n }).isRequired,\n};\n\nDesktopModal.defaultProps = {\n isEdit: false,\n cancelSelected: () => ({}),\n};\n\nexport default DesktopModal;\n","/* eslint-disable jsx-a11y/click-events-have-key-events */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport cx from 'classnames';\nimport styles from './mobile.scss';\n\nconst MobileModal = ({\n headerText,\n autosuggestComponent,\n inputPlaceholder,\n specifyName,\n name,\n chooseIconText,\n favouriteIconTable,\n saveFavourite,\n saveText,\n canSave,\n color,\n hoverColor,\n savePlaceText,\n cantSaveText,\n requiredText,\n fontWeights,\n}) => {\n return (\n <div\n className={styles['favourite-modal-mobile-container']}\n style={{\n '--color': `${color}`,\n '--hover-color': `${hoverColor}`,\n '--font-weight-medium': fontWeights.medium,\n }}\n >\n <div className={styles['favourite-modal-mobile-top']}>\n <div className={styles['favourite-modal-mobile-header']}>\n {headerText}\n </div>\n </div>\n <div className={styles['favourite-modal-mobile-main']}>\n <div className={styles['favourite-modal-mobile-location-search']}>\n {autosuggestComponent}\n </div>\n <input\n className={styles['favourite-modal-mobile-input']}\n value={name || ''}\n placeholder={inputPlaceholder}\n onChange={specifyName}\n />\n </div>\n <div className={styles['favourite-modal-mobile-text']}>\n {chooseIconText}\n <p className={styles['sr-only']}>{requiredText}</p>\n </div>\n <div className={styles['favourite-modal-mobile-icons']}>\n {favouriteIconTable}\n </div>\n <div className={styles['favourite-modal-mobile-save']}>\n <button\n type=\"button\"\n className={cx(\n `${styles['favourite-modal-mobile-button']} ${\n canSave() ? '' : styles.disabled\n }`,\n )}\n onClick={saveFavourite}\n aria-label={`${canSave() ? savePlaceText : cantSaveText}`}\n >\n {saveText}\n </button>\n </div>\n </div>\n );\n};\n\nMobileModal.propTypes = {\n headerText: PropTypes.string.isRequired,\n autosuggestComponent: PropTypes.node.isRequired,\n inputPlaceholder: PropTypes.string.isRequired,\n specifyName: PropTypes.func.isRequired,\n name: PropTypes.string.isRequired,\n chooseIconText: PropTypes.string.isRequired,\n favouriteIconTable: PropTypes.node.isRequired,\n saveFavourite: PropTypes.func.isRequired,\n saveText: PropTypes.string.isRequired,\n canSave: PropTypes.func.isRequired,\n color: PropTypes.string.isRequired,\n hoverColor: PropTypes.string.isRequired,\n savePlaceText: PropTypes.string.isRequired,\n cantSaveText: PropTypes.string.isRequired,\n requiredText: PropTypes.string.isRequired,\n fontWeights: PropTypes.shape({\n medium: PropTypes.number.isRequired,\n }).isRequired,\n};\n\nexport default MobileModal;\n","/* eslint-disable jsx-a11y/click-events-have-key-events */\nimport React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport cx from 'classnames';\nimport i18next from 'i18next';\nimport isEmpty from 'lodash/isEmpty';\nimport isNumber from 'lodash/isNumber';\nimport Modal from '@hsl-fi/modal';\nimport Icon from '@digitransit-component/digitransit-component-icon';\nimport styles from './helpers/styles.scss';\nimport translations from './helpers/translations';\nimport DesktopModal from './helpers/DesktopModal';\nimport MobileModal from './helpers/MobileModal';\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\nObject.keys(translations).forEach(lang => {\n i18next.addResourceBundle(lang, 'translation', translations[lang]);\n});\n\nconst FavouriteIconIdToNameMap = {\n 'icon-icon_place': 'place',\n 'icon-icon_home': 'home',\n 'icon-icon_work': 'work',\n 'icon-icon_sport': 'sport',\n 'icon-icon_school': 'school',\n 'icon-icon_shopping': 'shopping',\n};\n\nconst FavouriteIconTableButton = ({\n value,\n selectedIconId,\n handleClick,\n color,\n}) => {\n const [isHovered, setHover] = useState(false);\n const [isFocused, setFocus] = useState(false);\n const iconColor =\n value === FavouriteIconIdToNameMap[selectedIconId] || isHovered || isFocused\n ? '#ffffff'\n : color;\n return (\n <button\n type=\"button\"\n className={cx(styles['favourite-icon-table-column'], styles[value], {\n [styles['selected-icon']]:\n value === FavouriteIconIdToNameMap[selectedIconId],\n })}\n onMouseEnter={() => setHover(true)}\n onMouseLeave={() => setHover(false)}\n onFocus={() => setFocus(true)}\n onBlur={() => setFocus(false)}\n onClick={() => handleClick(value)}\n aria-label={i18next.t(value)}\n >\n <Icon img={value} color={iconColor} />\n </button>\n );\n};\n\nFavouriteIconTableButton.propTypes = {\n handleClick: PropTypes.func.isRequired,\n value: PropTypes.string,\n selectedIconId: PropTypes.string,\n color: PropTypes.string.isRequired,\n};\n\nconst FavouriteIconTable = ({\n favouriteIconIds,\n selectedIconId,\n handleClick,\n color,\n}) => {\n const columns = favouriteIconIds.map(value => (\n <FavouriteIconTableButton\n key={`favourite-icon-table-${value}`}\n value={value}\n selectedIconId={selectedIconId}\n handleClick={handleClick}\n color={color}\n />\n ));\n\n return (\n <div className={styles['generic-table']}>\n <div className={styles.row}>{columns}</div>\n </div>\n );\n};\n\nFavouriteIconTable.propTypes = {\n handleClick: PropTypes.func.isRequired,\n favouriteIconIds: PropTypes.array,\n selectedIconId: PropTypes.string,\n color: PropTypes.string.isRequired,\n};\n\n/**\n * @example\n * <FavouriteModal\n * show={modalOpen}\n * handleClose={handleClose}\n * saveFavourite={onSaveFavourite}\n * location={selectedLocation}\n * favourite={favourite}\n * lang={lang}\n * autosuggestComponent={\n * <AutoSuggest\n * sources={['History', 'Datasource']}\n * targets={['Locations', 'CurrentPosition']}\n * id=\"favourite\"\n * autoFocus={false}\n * placeholder=\"search-address-or-place\"\n * value={selectedLocation.address || ''}\n * onFavouriteSelected={this.setLocationProperties}\n * lang={lang}\n * />\n * }\n * />\n */\nclass FavouriteModal extends React.Component {\n static propTypes = {\n isModalOpen: PropTypes.bool.isRequired,\n /** Required.\n * @type{function} */\n handleClose: PropTypes.func.isRequired,\n /** Required.\n * @type{function} */\n saveFavourite: PropTypes.func.isRequired,\n /** Required. Only used when editing favourite.\n * @type{function} */\n cancelSelected: PropTypes.func,\n /** Optional.\n * Autosuggest component for searching new favourites.\n * @type{node}\n */\n autosuggestComponent: PropTypes.node,\n /** Optional.\n * Object to prefill input field for name and/or selected icon.\n * @type {object}\n * @property {string} type\n * @property {string} address\n * @property {string} gtfsId\n * @property {string} gid\n * @property {number} lat\n * @property {number} lon\n * @property {string} name\n * @property {string} selectedIconId\n * @property {string} favouriteId\n * @property {string} layer\n * @property {string} defaultName\n */\n favourite: PropTypes.shape({\n type: PropTypes.string,\n address: PropTypes.string,\n gtfsId: PropTypes.string,\n gid: PropTypes.string,\n lat: PropTypes.number,\n lon: PropTypes.number,\n name: PropTypes.string,\n selectedIconId: PropTypes.string,\n favouriteId: PropTypes.string,\n layer: PropTypes.string,\n defaultName: PropTypes.string,\n }),\n /** Optional.\n * @type {function} */\n addAnalyticsEvent: PropTypes.func,\n /** Optional. Language, fi, en or sv.\n * @type {string} */\n lang: PropTypes.string,\n /** Optional. */\n isMobile: PropTypes.bool,\n appElement: PropTypes.string.isRequired,\n color: PropTypes.string,\n hoverColor: PropTypes.string,\n /** Optional. */\n fontWeights: PropTypes.shape({\n /** Default value is 500. */\n medium: PropTypes.number,\n }),\n };\n\n static defaultProps = {\n cancelSelected: () => ({}),\n lang: 'fi',\n isMobile: false,\n favourite: null,\n color: '#007ac9',\n hoverColor: '#0062a1',\n fontWeights: {\n medium: 500,\n },\n };\n\n static favouriteIconIds = [\n 'place',\n 'home',\n 'work',\n 'sport',\n 'school',\n 'shopping',\n ];\n\n constructor(props) {\n super(props);\n i18next.changeLanguage(props.lang);\n this.state = {\n favourite: null,\n };\n Object.keys(translations).forEach(lang => {\n i18next.addResourceBundle(lang, 'translation', translations[lang]);\n });\n }\n\n static getDerivedStateFromProps = (nextProps, prevState) => {\n const prevFav = prevState.favourite;\n const nextFav = nextProps.favourite;\n\n if (isEmpty(nextFav)) {\n return {\n favourite: null,\n };\n }\n\n if (isEmpty(prevFav) && !isEmpty(nextFav)) {\n return {\n favourite: {\n ...nextFav,\n },\n };\n }\n if (\n !isEmpty(prevFav) &&\n !isEmpty(nextFav) &&\n (nextFav.address !== prevFav.address ||\n nextFav.lat !== prevFav.lat ||\n nextFav.lon !== prevFav.lon)\n ) {\n return {\n favourite: {\n ...prevFav,\n address: nextFav.address,\n lat: nextFav.lat,\n lon: nextFav.lon,\n gid: nextFav.gid || null,\n name: prevFav.name || nextFav.name || '',\n defaultName: nextFav.defaultName,\n },\n };\n }\n return null;\n };\n\n componentDidUpdate = () => {\n if (i18next.language !== this.props.lang) {\n i18next.changeLanguage(this.props.lang);\n }\n };\n\n componentWillUnmount = () => {\n this.setState({ favourite: null });\n };\n\n specifyName = event => {\n const name = event.target.value;\n this.setState(prevState => ({\n favourite: { ...prevState.favourite, name },\n }));\n };\n\n selectIcon = id => {\n this.setState(prevState => ({\n favourite: {\n ...prevState.favourite,\n selectedIconId: `icon-icon_${id}`,\n },\n }));\n };\n\n isEdit = () =>\n this.state.favourite && this.state.favourite.favouriteId !== undefined;\n\n canSave = () =>\n this.state.favourite &&\n !isEmpty(this.state.favourite.selectedIconId) &&\n isNumber(this.state.favourite.lat) &&\n isNumber(this.state.favourite.lon);\n\n closeModal = () => {\n this.props.handleClose();\n // hsl-fi/modal close animation lasts 250ms\n setTimeout(() => {\n this.setState({ favourite: null });\n }, 250);\n };\n\n cancelSelected = () => {\n this.props.cancelSelected();\n // hsl-fi/modal close animation lasts 250ms\n setTimeout(() => {\n this.setState({ favourite: null });\n }, 250);\n };\n\n save = () => {\n if (this.canSave()) {\n const name = isEmpty(this.state.favourite.name)\n ? this.state.favourite.defaultName\n : this.state.favourite.name;\n\n const favourite = { ...this.state.favourite, name };\n delete favourite.defaultName;\n this.props.saveFavourite({ ...favourite, type: 'place' });\n if (this.props.addAnalyticsEvent) {\n this.props.addAnalyticsEvent({\n category: 'Favourite',\n action: 'SaveFavourite',\n name: this.state.favourite.selectedIconId,\n });\n }\n if (this.isEdit() && this.props.cancelSelected) {\n this.cancelSelected();\n } else {\n this.closeModal();\n }\n }\n };\n\n render = () => {\n const { favourite } = this.state;\n const { color, hoverColor, fontWeights } = this.props;\n const headerText = this.isEdit()\n ? i18next.t('edit-place')\n : i18next.t('save-place');\n const modalProps = {\n headerText,\n autosuggestComponent: {\n ...this.props.autosuggestComponent,\n color,\n hoverColor,\n },\n inputPlaceholder: i18next.t('input-placeholder'),\n specifyName: this.specifyName,\n name: (favourite && favourite.name) || '',\n chooseIconText: i18next.t('choose-icon'),\n favouriteIconTable: (\n <FavouriteIconTable\n selectedIconId={(() => {\n if ((favourite && favourite.selectedIconId !== undefined) || null) {\n return favourite.selectedIconId;\n }\n return undefined;\n })()}\n favouriteIconIds={FavouriteModal.favouriteIconIds}\n handleClick={this.selectIcon}\n color={color}\n />\n ),\n saveFavourite: this.save,\n saveText: i18next.t('save'),\n canSave: this.canSave,\n isEdit: this.isEdit(),\n cancelText: i18next.t('cancel'),\n cancelSelected: () => this.cancelSelected(),\n color,\n hoverColor,\n savePlaceText: i18next.t('save-place'),\n cantSaveText: i18next.t('cannot-save-place'),\n requiredText: i18next.t('required-text'),\n fontWeights,\n };\n return (\n <Modal\n appElement={this.props.appElement}\n contentLabel={\n this.isEdit()\n ? i18next.t('favourite-modal-on-edit', favourite)\n : i18next.t('favourite-modal-on-add-new')\n }\n closeButtonLabel={i18next.t('close-favourite-modal')}\n variant={!this.props.isMobile ? 'small' : 'large'}\n isOpen={this.props.isModalOpen}\n onCrossClick={() => this.closeModal()}\n >\n {!this.props.isMobile && <DesktopModal {...modalProps} />}\n {this.props.isMobile && <MobileModal {...modalProps} />}\n </Modal>\n );\n };\n}\n\nexport default FavouriteModal;\n"],"names":["_extends","Object","assign","bind","target","i","arguments","length","source","key","prototype","hasOwnProperty","call","apply","this","styleInject","css","ref","insertAt","document","head","getElementsByTagName","style","createElement","type","firstChild","insertBefore","appendChild","styleSheet","cssText","createTextNode","translations","de","cancel","save","en","place","home","work","sport","school","shopping","fi","sv","DesktopModal","headerText","autosuggestComponent","inputPlaceholder","specifyName","name","chooseIconText","favouriteIconTable","saveFavourite","saveText","canSave","isEdit","cancelText","cancelSelected","color","hoverColor","savePlaceText","cantSaveText","requiredText","fontWeights","React","className","styles","medium","value","placeholder","onChange","onClick","process","env","NODE_ENV","propTypes","PropTypes","string","isRequired","node","func","bool","shape","number","defaultProps","MobileModal","disabled","init","lng","fallbackLng","defaultNS","interpolation","escapeValue","keys","forEach","lang","i18next","addResourceBundle","FavouriteIconIdToNameMap","FavouriteIconTableButton","selectedIconId","handleClick","isHovered","setHover","useState","isFocused","setFocus","iconColor","cx","onMouseEnter","onMouseLeave","onFocus","onBlur","t","Icon","img","FavouriteIconTable","favouriteIconIds","columns","map","row","array","FavouriteModal","Component","constructor","props","super","componentDidUpdate","language","changeLanguage","componentWillUnmount","setState","favourite","event","prevState","selectIcon","id","state","undefined","favouriteId","isEmpty","isNumber","lat","lon","closeModal","handleClose","setTimeout","defaultName","addAnalyticsEvent","category","action","render","modalProps","Modal","appElement","contentLabel","closeButtonLabel","variant","isMobile","isOpen","isModalOpen","onCrossClick","getDerivedStateFromProps","nextProps","prevFav","nextFav","address","gid","gtfsId","layer"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@digitransit-component/digitransit-component-favourite-modal",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.3",
|
|
4
4
|
"description": "digitransit-component favourite-modal module",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"files": [
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
"author": "Digitransit Authors",
|
|
30
30
|
"license": "(AGPL-3.0 OR EUPL-1.2)",
|
|
31
31
|
"peerDependencies": {
|
|
32
|
-
"@digitransit-component/digitransit-component-icon": "^0.
|
|
32
|
+
"@digitransit-component/digitransit-component-icon": "^1.0.0",
|
|
33
33
|
"@hsl-fi/modal": "^0.3.1",
|
|
34
34
|
"@hsl-fi/sass": "^0.2.0",
|
|
35
35
|
"classnames": "2.2.6",
|
|
@@ -39,5 +39,5 @@
|
|
|
39
39
|
"prop-types": "^15.7.2",
|
|
40
40
|
"react": "^16.13.0"
|
|
41
41
|
},
|
|
42
|
-
"gitHead": "
|
|
42
|
+
"gitHead": "ed53fb1e7b52d7727b9861c2f304ab3b421bf814"
|
|
43
43
|
}
|